Отдельный ATmega 2560 - включение одного светодиода - устранение неполадок
У меня есть собственная печатная плата с "некоторыми вещами" на нем, и сначала я хочу, чтобы он запускал простое «включение светодиода».
Моя установка:
- Атмега 2560
- Светодиод подключен к PE4 (D2 на языке Arduino) => PE4 - светодиод - резистор 1К - 5В
- керамический резонатор (CSTCE16M0V53-R0 16 МГц), подключенный к XTAL1 + XTAL2 с резистором 1 МОм между ними
- все VIN подключены к GND конденсаторами
Загрузка выполняется через ICSP (MISO, MOSI, SCK, RESET, 5V, GND) с USBasp
Вот мой скетч Arduino, который я загружаю через ПО Arduino:
void setup() {
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, LOW);
}
Я также проверил предохранители на Atmega:
avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D8
avrdude: safemode: efuse reads as FD
avrdude: safemode: Fuses OK (H:FD, E:D8, L:FF)
avrdude успешно загружает: (вывод усечен!)
avrdude: auto set sck period (because given equals null)
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9801
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: auto set sck period (because given equals null)
avrdude: writing flash (1518 bytes):
Writing | ################################################## | 100% 5.47s
avrdude: 1518 bytes of flash written
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 3.45s
avrdude: verifying ...
avrdude: 1518 bytes of flash verified
avrdude done. Thank you.
Проблема: светодиод не работает. Он все время выключен.
Есть идеи, почему это не работает?
@jblaze, 👍0
Обсуждение1 ответ
Лучший ответ:
Вы говорите, что светодиод загорается, если вы напишете ему LOW.
Мне нужно перевести выходной контакт в состояние LOW, чтобы светодиод заработал
Это именно то, что вы ожидаете.
Поскольку другой конец светодиода подключен к +5 В, вам нужно подать на контакт низкий уровень, чтобы на светодиоде была разница напряжений и чтобы он загорелся.
Я дважды проверил Atmega, и это ATmega2560V, рассчитанный на 8 МГц. Есть ли шанс исправить это с существующей печатной платой? Изменить предохранители, чтобы использовать внутренние часы?
Да, я предлагаю вам это сделать.
Посмотрите на Калькулятор предохранителей Engbedded Atmel AVR®, чтобы узнать, на что их установить. Я предлагаю внутренний генератор 8 МГц.
Да, я должен потянуть его НИЗКО, но ничего не происходит., @jblaze
Ну, это не должно занять много времени, чтобы изменить скетч, чтобы он ссылался на контакт 52 (SCK), загрузить его, подключить светодиод к контакту SCK и протестировать., @Nick Gammon
К сожалению, это не работает :-(, @jblaze
Пожалуйста, измерьте контакт мультиметром. Загрузите свой предыдущий скетч "blink". Посмотрите, меняет ли контакт напряжение., @Nick Gammon
Штырь установлен на НИЗКИЙ уровень и измерен относительно GND, сопротивление бесконечно. Когда я устанавливаю вывод на высокий уровень, напряжение колеблется в пределах 5-8 мВ., @jblaze
Можешь выложить фото, где ты измеряешь эту вывод? Я не могу поверить, что вы можете загрузить новый код, но контакт SCK не может вести себя как обычный вывод., @Nick Gammon
Вот он: [measure1](https://www.dropbox.com/s/mttin6g10dmr9eu/Foto%2014.07.15%2007%2010%2053.jpg?dl=0) и [measure2](https://www .dropbox.com/s/5bnd4wv896pfi3m/Foto%2014.07.15%2007%2011%2027.jpg?dl=0) — я отключил SCK и 5V и измерил между обоими контактами, @jblaze
Обычно напряжения измеряются относительно GND. Итак, я ожидаю, что вы запустите скетч и, пока на плату подается питание, измерьте расстояние между контактом SCK и плоскостью GND., @Nick Gammon
Хорошо, позвольте мне описать подробно: сначала я установил SCK на HIGH и измерил относительно GND: 5-8 мВ. После этого установите SCK на LOW и измерьте по отношению к 5V: 0V., @jblaze
Я дважды проверил Atmega, и это ATmega2560V, рассчитанный на 8 МГц. Есть ли шанс исправить это с существующей печатной платой? Изменить предохранители, чтобы использовать внутренние часы?, @jblaze
Смотрите измененный ответ., @Nick Gammon
Хорошо спасибо. Подходят ли эти предохранители? "-U lfuse:w:0xc2:m -U hfuse:w:0x99:m -U efuse:w:0xff:m", @jblaze
это работает!! Спасибо всем участникам!, @jblaze
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Реализовать связь Visible Light с помощью Arduino
- Скетч мигания ESP8266 не мигает светодиодом
- Асинхронные вызовы функций в скетче ардуино
- Проблема с загрузкой моего скетча на Ардуино
- Двигатель постоянного тока шумит, но не вращается
- Цикл While не прерывается
- как отправить аргумент объектам ESP8266WebServer в функции
Вы забыли упомянуть, в чем проблема., @Ignacio Vazquez-Abrams
Ты прав. Я отредактировал свой пост. Светодиод не мигает., @jblaze
Вы измеряли напряжение на пинах?, @Ignacio Vazquez-Abrams
Когда вы говорите, что он не мигает, можете ли вы уточнить: он все время включен или все время выключен?, @Nick Gammon
он все время выключен. @НикГаммон // какой пин вы имеете в виду, @jblaze
На контакте, который должен мигать., @Ignacio Vazquez-Abrams
Попробуйте контакт D52 (контакт SCK), так как мы знаем, что он работает, иначе вы не смогли бы загрузить скетч с самого начала., @Nick Gammon
Все на печатной плате уже жестко подключено, и я не могу изменить. Могу попробовать протянуть временный кабель от D52 к светодиоду. Я попробую // Я также проверю сам светодиод (просто подайте 5 В) и измерю напряжение, когда уберу мигание и просто включу светодиод. Вернусь позже!, @jblaze
Ну, у вас должен быть доступ к контакту SCK, потому что вы используете его для программирования. Это то, к чему вы подключаете кабель ICSP., @Nick Gammon
Я обновил исходный вопрос: мне нужно переключить выходной контакт на НИЗКИЙ уровень, чтобы светодиод работал (PE4 - светодиод - резистор 1 кОм - 5 В). Когда я кладу кабель между PE4 и GND, светодиод работает. У меня нет светодиода, подключенного к SCK, но я могу подключить его к заголовку ICSP, где у меня есть соединение с выводом SCK. Отличная идея! @НикГаммон, @jblaze
Вы не упомянули какие-либо конденсаторы - ни один из *необходимых* развязывающих конденсаторов на контактах питания, *критические* конденсаторы на кристалле и т. д. Также вы не упомянули, на что похожа ваша схема сброса - вы нажимаете кнопку RESET? вывод HIGH через резистор? **Покажите свою полную схему**, @Majenko
Я упомянул конденсаторы контактов питания в своем первоначальном вопросе. Все они подключены к GND с помощью конденсатора 100 нФ. У кристалла есть внутренние колпачки, а RESET вытягивается на ВЫСОКИЙ уровень с помощью резистора 10K. @Маженко, @jblaze
@jblaze Это не кристалл, это керамический резонатор - совсем другой зверь., @Majenko
@Majenko Хорошо, извини, ты прав. Это взято прямо из эталонного дизайна Arduino2560., @jblaze
@Majenko Я добавил соответствующие схемы к исходному вопросу., @jblaze
@jblaze У тебя есть осциллограф? Вы видите, колеблется ли резонатор на частоте 16 МГц? (Совет: установите щуп на 10x), @Majenko
@Majenko извините, у меня нет осциллографа, @jblaze
@jblaze Тогда вам действительно следует подумать о его приобретении - даже о дешевом древнем аналоге на eBay, который вы можете получить практически бесплатно. Они являются *необходимым* элементом оборудования для диагностики цепи., @Majenko
@Majenko Спасибо за подсказку. Если возникнут проблемы с кристаллическим/керамическим резонатором, смогу ли я запрограммировать Atmega?, @jblaze
@jblaze Вполне вероятно, да - я не могу вспомнить подробности о чипах Atmel, но либо он использует входящий SCK в качестве системных часов, либо переключается на внутренние часы RC 1 МГц, я не помню, что - это позволяет вам установить предохранители независимо от того, что делает остальная часть цепи., @Majenko
«Мне нужно перевести выходной контакт в состояние LOW, чтобы светодиод заработал», — понятно. Но не мигает? Это не будет с вашим измененным скетчем., @Nick Gammon
@NickGammon Я хочу, чтобы он включался только для первого выстрела., @jblaze
Я теряю след от твоей проблемы. Судя по тому, как вы его подключили, насколько я могу судить, вы *ожидаете*, что он включится, если вы напишете на него цифровым сигналом LOW. Сначала вы сказали, что он не мигает, а затем вы сказали: «Мне нужно перевести выходной контакт в НИЗКИЙ уровень, чтобы светодиод заработал», — так что он работает, как и ожидалось. Чего именно вы ожидаете?, @Nick Gammon