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);
}
Мой макет
Схема Fritzing
3 ответа
Лучший ответ:
В сочетании с ответом Ника Гэммона выше я не знал, что физические номера контактов отличаются от цифровых номеров контактов, используемых в скетче. Я решил свою проблему, обратившись к этой цифровой карте контактов.
Возможно, это не единственная ваша проблема, но вам нужна вторая задержка.
void loop() {
Serial.println("TICK");
digitalWrite(5,HIGH);
delay(1000);
digitalWrite(5,LOW);
delay(1000); // НИЗКИЙ на секунду также
}
В противном случае вы не сможете увидеть часть LOW, потому что это будет очень быстро.
Я считаю, что Arduino IDE пытается скомпилировать мой код для UNO, и эти выводы не работают на ATMega328
У Uno есть Atmega328, и я обычно компилирую для Uno при загрузке на специальную плату, так что это не проблема.
Сколько лет вашему чипу или загрузчику на нем? Большинство проданных чипов (с предустановленными загрузчиками) — и загрузчики, доступные для загрузки — по крайней мере за последние несколько лет загружались со скоростью 115200 бод.
- Миграция проекта Arduino Uno R3 в Wemos D1 R2 — проблемы с распиновкой
- SparkFun RedBoard PTH Kit неправильно настроенное оборудование
- Запрограммировать ATMega328P и использовать его без платы Arduino.
- Что делать с плавающими контактами Arduino?
- Почему некоторые контакты Arduino Nano (D3, D4, A3, A4, A6, A7) не могут быть установлены на высокий уровень?
- SIM800C, CPIN: НЕ ГОТОВ (КОД ОШИБКИ: +CME ОШИБКА: 10)
- Atmega328p — переход на низкое энергопотребление 1,8 В с использованием генератора 4 МГц — прошивка загрузчика
- Какой аналог PORTx для Teensy (4.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