Прошивка Atmega 328P AU
- Войдите на сайт для отправки комментариев
Для уменьшения конечной платы вот этого проекта я решил отказаться от платы Arduino pro mini и использовать Atmega328.
Для прошивки и программирования Atmega я научился кидать схемы в Sprint-Layout и травить платы. Собственно найдя на просторах YouTube схему для прошивки я раскидал аналог и затравил, подключил к usbasp программатору и скачав AVRDUDE_PROG и khazama AVR Programmer решил для проверки соединения прочитать что есть в чипе, в ответ я получил следующие сообщения из khazama:



Для программирования использовал следующую плату:
По прозвонке от ног программатора до ног Atmega 328 всё правильно, VCC>VCC,MISO>MISO,SCK>SCK, и.т.д. На программаторе перемычка стоит на 5 вольт, дрова ставил от сюда, в программаторе стоит Atmega 8.
Подскажите где проблема?
ищи, где ты промахнулся - обычно нет проблем, если чип из упаковки и не намучен фьюзами: внешний кварц и прочее.
просто есть подозрения на то что трабл в прошивке программатора, и что-бы его прошить нужно иметь второй и плясать с бубном.
просто есть подозрения на то что трабл в прошивке программатора, и что-бы его прошить нужно иметь второй и плясать с бубном.
обычно трабл в ДНК владельца программатора
Большое спасибо, очень полезно и информативно. Проверил именно в этом проблема, уже исправил и Atmega отрастила волосатые ноги изнасиловала попугая и прыгнула в окно с криками: "надо исцелить планету и уничтожить человечество" и побежала в сторону завода по производству ракет.
И конечно же тебе привет передала.
Тебе ведь Клапауций прямо подсказал, ты его не услышал, теперь обижаешься.
"Тебе ведь Клапауций прямо подсказал" что подсказал?, что проблема во мне?, ну я это и так знаю и обратился за помощью в и поиске места где я промахнулся а не фразой: "сам дурак ищи проблему".
Digius,
если есть свободная ардуина (нано, уно, мега) сделайте из неё программатор. В примерах есть спец скетч ArduinoISP
Спасибо, это я и уже делаю.
"Тебе ведь Клапауций прямо подсказал" что подсказал?, что проблема во мне?, ну я это и так знаю и обратился за помощью в и поиске места где я промахнулся а не фразой: "сам дурак ищи проблему".
Перечитай еще раз его первый пост.
В общем переподключил Atmega 328 с программатора на arduino nano.
Настройки IDE такие:


Для подключения использовал следующую схему:
естественно с тем условием что я использую TQFP корпус.
Всё подключил верно, всё прозвонил и при прошивке бутлоадера получаю следующую ошибку:
avrdude: Expected signature for ATmega328P is 1E 95 0F Double check chip, or use -F to override this check. Ошибка при записи загрузчика.погуглив я понял что проблема в сигнатуре и лечиться она переписыванием
в файле avrdude.conf который лежит в дирректори по пути (в моём случае):C:\Program Files (x86)\Arduino\hardware\tools\avr\etc
только вот проблема сигнатура 1E 95 0F осталось только в одном месте (использую я IDE версии 1.8.3):
#------------------------------------------------------------ # ATmega328 #------------------------------------------------------------ part id = "m328"; desc = "ATmega328"; has_debugwire = yes; flash_instr = 0xB6, 0x01, 0x11; eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, 0x99, 0xF9, 0xBB, 0xAF; stk500_devcode = 0x86; # avr910_devcode = 0x; signature = 0x1e 0x95 0x14; pagel = 0xd7; bs2 = 0xc2; chip_erase_delay = 9000; pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x"; chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x"; timeout = 200; stabdelay = 100; cmdexedelay = 25; synchloops = 32; bytedelay = 0; pollindex = 3; pollvalue = 0x53; predelay = 1; postdelay = 1; pollmethod = 1; pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; progmodedelay = 0; latchcycles = 5; togglevtg = 1; poweroffdelay = 15; resetdelayms = 1; resetdelayus = 0; hvleavestabdelay = 15; resetdelay = 15; chiperasepulsewidth = 0; chiperasepolltimeout = 10; programfusepulsewidth = 0; programfusepolltimeout = 5; programlockpulsewidth = 0; programlockpolltimeout = 5; ocdrev = 1; memory "eeprom" paged = no; page_size = 4; size = 1024; min_write_delay = 3600; max_write_delay = 3600; readback_p1 = 0xff; readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", " 0 0 0 x x x a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", " 0 0 0 x x x a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; mode = 0x41; delay = 20; blocksize = 4; readsize = 256; ; memory "flash" paged = yes; size = 32768; page_size = 128; num_pages = 256; min_write_delay = 4500; max_write_delay = 4500; readback_p1 = 0xff; readback_p2 = 0xff; read_lo = " 0 0 1 0 0 0 0 0", " 0 0 a13 a12 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; read_hi = " 0 0 1 0 1 0 0 0", " 0 0 a13 a12 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; loadpage_lo = " 0 1 0 0 0 0 0 0", " 0 0 0 x x x x x", " x x a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_hi = " 0 1 0 0 1 0 0 0", " 0 0 0 x x x x x", " x x a5 a4 a3 a2 a1 a0", " i i i i i i i i"; writepage = " 0 1 0 0 1 1 0 0", " 0 0 a13 a12 a11 a10 a9 a8", " a7 a6 x x x x x x", " x x x x x x x x"; mode = 0x41; delay = 6; blocksize = 128; readsize = 256; ; memory "lfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", "x x x x x x x x i i i i i i i i"; ; memory "hfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", "x x x x x x x x i i i i i i i i"; ; memory "efuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "x x x x x x x x x x x x x i i i"; ; memory "lock" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", "x x x x x x x x x x o o o o o o"; write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", "x x x x x x x x 1 1 i i i i i i"; ; memory "calibration" size = 1; read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", "0 0 0 0 0 0 0 0 o o o o o o o o"; ; memory "signature" size = 3; read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", "x x x x x x a1 a0 o o o o o o o o"; ; ; part parent "m328" id = "m328p"; desc = "ATmega328P"; signature = 0x1e 0x95 0x0F; #-----Вот тут ocdrev = 1;И вот в чём дело, меняя сигнатуру в этом месте и сохраняя файл с последующей перезагрузкой IDE выходит та же проблема.
На случай что все эти действия я провожу не в той дирректории я проверил и по пути:
C:\Users\%Username%\Documents\Arduino\hardware b папки tools там нет.
Подскажите куда копать?
Заранее спасибо.
какое переписывание сигнатуры? - у вообще сигнатура не читается, ни правильная - никакая.
это была попытка с программатором, теперь пытаюсь шить через нанку, всё в моём последнем посте.
Я же написал:
avrdude: Expected signature for ATmega328P is 1E 95 0F Double check chip, or use -F to override this check. Ошибка при записи загрузчика.Digius,
1. это полный текст ошибки ? в #12
2. опишите словами что как подключено. раз картинка не в полной мере отражает действительность. плюс пару чётких фотографий дайте
3. в скетче arduinoisp используются светики
// Put an LED (with resistor) on the following pins:
// 9: Heartbeat - shows the programmer is running
// 8: Error - Lights up if something goes wrong (use red if that makes sense)
// 7: Programming - In communication with the slave
что они у вас показывают. до, во время, после?
я подключаю один rgb светик. сответственно: 9-синий, 8-красный, 7-зелёный.
4. а тут правильно?
http://arduino.ru/forum/obshchii/pin-mapping-sootvetstvie-vyvodov-i-regi...
это была попытка с программатором, теперь пытаюсь шить через нанку, всё в моём последнем посте.
Я же написал:
avrdude: Expected signature for ATmega328P is 1E 95 0F Double check chip, or use -F to override this check. Ошибка при записи загрузчика.Ну и? Там написано, что ожидаемая сигнатура для ATmega328P - 1E 95 0F. О том, какая сигнатура прочиталась на самом деле - там нет ни слова. Возможно она вообще не прочиталась - 000000, о чём и написал Клапауций.
Чтобы увидеть это, в настройках Arduino IDE ("Файл" - "Настройки") поставить галочку "Показать подробный вывод" - "Загрузка". Тогда будет видно, какая сигнатура прочиталась. Или вообще не прочиталась (000000), тогда никакое переписывание сигнатур в avrdude.conf не поможет.
Спасибо за ответ, забыл я про подробный вывод, уж обычно мешал он вот сообщение с подробным выводом:
avrdude: Version 6.3, compiled on Jun 22 2016 at 16:05:21 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "C:\Users\PC\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino2/etc/avrdude.conf" Using Port : COM10 Using Programmer : stk500v1 Overriding Baud Rate : 19200 AVR Part : ATmega328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : STK500 Description : Atmel STK500 Version 1.x firmware Hardware Version: 2 Firmware Version: 1.18 Topcard : Unknown Vtarget : 0.0 V Varef : 0.0 V Oscillator : Off SCK period : 0.1 us avrdude: AVR device initialized and ready to accept instructions Ошибка при записи загрузчика. Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0xff0000 avrdude: Expected signature for ATmega328P is 1E 95 0F Double check chip, or use -F to override this check. avrdude done. Thank you.от сообщение с подробным выводом:
avrdude: Device signature = 0xff0000
Ну о чём и говорили - сигнатура корректно не читается.
Если я правильно понял то на пол шишечки мк всё же прочитался:
Или нет?
И как же сделать читаемую сигнатуру?
Если я правильно понял то на пол шишечки мк всё же прочитался:
Или нет?
Х/з если честно...
И как же сделать читаемую сигнатуру?
МК новый с магазина? Тогда там должны быть "заводские" фьюзы: МК настроен на тактирование от внутреннего осциллятора с частотой 1МГц. Из-за небольшой тактовой частоты, частота SCK программатора тоже должна быть не очень большой. Иначе могут быть проблемы с корректным считыванием МК. В частности на программаторе USBasp для этого есть джампер JP3, который понижает частоту SCK. Установите его. И ещё: длинна проводков от программатора к МК не должна быть слишком большой - не более 10-15 см.
проверь, плз, что у тебя в этой строке ArduinoISP:
#define SPI_CLOCK (1000000/6)
может оказаться, что скорость великовата.
328ые могут с завода идти какие угодно. Должны идти - на 1 МГц, а на самом деле - х.з.
#define SPI_CLOCK (1000000/6) скорость такая, но вот что поставить в замен или какой диапазон использовать.
DIGIUS, вы уже неделю мусолите эту тему, когда дел тут на 15 минут. Очевидно, что это аппаратный косяк - не правильно подключено. Проверьте отдельно программатор, считав им прошивку любой рабочей ардуины. Проверьте весь монтаж на предмет коротышей и непропаев. Подсоедините кварц. Если не пошло, то сфотографируйте что и как вы там наподключали в высоком разрешении, выложите на файлобменник и ссылку сюда.
Все я разобрался. Самое интерестное оказалось в том что на стационарнике с которого я заливал скетчи в нанку все хорошо работало в плане скетчей, и тут я что то вспомнил что на 3д принтер никак нормально не вставали дрова, при том что как мозги там используеться атмега. Подключаю я значит к ноуту где дрова на принтер нормально встали и о чудо все прошилось и залетают скетчи в атмегу замечательно.
Всем спасибо за потраченное время!