ATMega328 работает, но не выводит ни на какие контакты

Проблема:

ATMega328 отказывается выполнять digitalWrite() на любых контактах, я могу загружать и запускать скетчи с помощью платы UNO из ide на 328 и могу подтвердить, что она работает с помощью последовательного монитора (см. код).

Я использую этот модуль FTDI.

Board Manager — UNO работает, а ATMega328 — нет

Меню инструментов

Используя плату UNO под управлением платы, я могу писать скетчи и общаться с 328. Но когда я использую ATMega328 на 5,5 В, 16 МГц, я получаю следующую ошибку.

         Using Port                    : COM3

         Using Programmer              : arduino

         Overriding Baud Rate          : 57600

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xe0

avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00



avrdude done.  Thank you.

Код & Серийный монитор "Проверка" это работает

Я перепробовал каждый пригодный для использования ШИМ и другие контакты, чтобы попытаться вывести их с помощью светодиодов, зуммеров и даже других устройств Arduino для считывания входных данных, но ни один из контактов не выдает высокий уровень при запросе.

Я считаю, что Arduino IDE пытается скомпилировать мой код для UNO, и эти контакты не работают на ATMega328, но это может быть совершенно неверно, и кто-нибудь, пожалуйста, поправьте меня, если это неправильное предположение.

Наконец, я смог использовать контакты SCL и SCA для связи со светодиодным экраном I2C.

Кто-нибудь знает, почему я не могу написать скетч на ATMega328, используя FTDI и мою конфигурацию. Ниже размещены изображения и очень грубые схемы Fritzing того, как я настроен.

void setup() {
  Serial.begin(9600);
  pinMode(5,OUTPUT);
}

void loop() {
  Serial.println("TICK");
  digitalWrite(5,HIGH);
  delay(1000);
  digitalWrite(5,LOW);
  }

последовательный монитор

Мой макет

ATMega328

Схема Fritzing

Схема Fritzing

, 👍0

Обсуждение

верхняя шина вашего макета не питается ... почему вы говорите, что можете загрузить скетч, а затем представить список ошибок, который показывает сбой загрузки?, @jsotola

контакт 5 низкий всего несколько миллисекунд, @jsotola

Верхняя часть моей макетной платы подключена к источнику питания, у меня есть два кабеля справа, как показано на втором фрицинге, но они просто не в кадре на камере. Если вы прочитаете текст в вопросе, я объясню: «Используя плату UNO под менеджером плат, я могу отлично писать скетчи и общаться с 328. Но когда я использую ATMega328 на 5,5 В, 16 МГц, я получаю следующую ошибку .", @Christopher Allen

Что вы имеете в виду под *когда я использую ATMega328 на 5,5 В, 16 МГц*. Вы имеете в виду, что используете Board Manager с этой настройкой (в отличие от выбора Uno)? Какой Board Manager вы для этого установили (MiniCore?). Вы (пере)прошивали загрузчик с помощью ATMega328, выбранного в диспетчере плат?, @StarCat

Сообщение об ошибке, которое вы получаете, означает, что он может найти Arduino для программирования. Таким образом, ваш скетч не загружается, и поэтому ваши контакты не будут меняться. Не уверен, почему вы все еще получаете последовательный вывод. Я думаю, что это старый набросок., @Gerben

@StarCat https://imgur.com/8GR4GOs это ссылка на то, о каких настройках я говорю, Arduino IDE дает вам возможность выбрать, на каком чипе, частоте и напряжении работает ваша плата. Используя эти настройки, я не смог записать скетчи на свою плату. Загрузчик - ПУ, перепрошивать загрузчик на свой чип не пробовал., @Christopher Allen

Вы выбрали Arduino Pro в Board Manager и программатор «AVRISP MkII». Вы не можете просто выбрать другого менеджера платы и другого программатора и ожидать, что будете продолжать использовать тот же загрузчик, который вы использовали для Arduino Uno (хотя у них один и тот же процессор). Вам нужно запрограммировать загрузчик Arduino Pro в свой ATMega328 или просто продолжать использовать Arduino Uno из Board Manager и программатора ArduinoISP. Пожалуйста, добавьте изображение, на которое вы ссылаетесь, к вашему вопросу., @StarCat


3 ответа


Лучший ответ:

0

В сочетании с ответом Ника Гэммона выше я не знал, что физические номера контактов отличаются от цифровых номеров контактов, используемых в скетче. Я решил свою проблему, обратившись к этой цифровой карте контактов.

Карта цифровых контактов

,

1

Возможно, это не единственная ваша проблема, но вам нужна вторая задержка.

void loop() {
  Serial.println("TICK");
  digitalWrite(5,HIGH);
  delay(1000);
  digitalWrite(5,LOW);
  delay(1000);    // НИЗКИЙ на секунду также
  }

В противном случае вы не сможете увидеть часть LOW, потому что это будет очень быстро.


Я считаю, что Arduino IDE пытается скомпилировать мой код для UNO, и эти выводы не работают на ATMega328

У Uno есть Atmega328, и я обычно компилирую для Uno при загрузке на специальную плату, так что это не проблема.

,

0

Сколько лет вашему чипу или загрузчику на нем? Большинство проданных чипов (с предустановленными загрузчиками) — и загрузчики, доступные для загрузки — по крайней мере за последние несколько лет загружались со скоростью 115200 бод.

,