Что за странности происходят с ATmega168PA-AU

Zhyravlev_AS
Offline
Зарегистрирован: 03.04.2013

Доброго времени суток.

Хотел на макетки собрать устройство. Припоял ATmega168PA-AU в TQFP32 корпусе, минимальная обвязка - кварц, керамика 22 пФ, резистор 1кОм на ресет с 5+ подключаю к UNO (предварительно залив ISP) читаю фьюсы через AVR Burn-O-Mat все Ок. Далее ставлю фьсы как тут:

Записываю, все отлично.

Немного пред истории: В предыдущей моей попытки залить скет в ATmega168PA-AU в файле, цетирую

"В файле \arduino-1.0.3\hardware\arduino\boards.txt в строке diecimila.build.mcu=atmega168 добавляете

буковку (пэ англ.), сохраняете файл, перезапускаете IDE."

нужно было для того что бы сигнатуры подошли. С этим все нормально. Но чуть ниже там есть строки:

diecimila.bootloader.low_fuses=0xff
diecimila.bootloader.high_fuses=0xdd
diecimila.bootloader.extended_fuses=0x00

Т.е. как я понимаю это фьсы по умолчанию. И когда записываем скетч то эти фьюсы тоже ведь записываются?

Потому как было такое дело. Я поставил фьюсы опять же так как на картинки выше. И попробывал залить скетч все нормально. Но при попытки залить скет 2й раз программа выдовала ошибку (не помню какую) приходилось опять обнавлять фьюсы через AVR Burn-O-Mat после чего скет опять загружался. Но такой гемарой меня не устроил. И в этот раз я решил прописать нужные фьюсы в этих строках. Что бы каждый раз не лесть в AVR Burn-O-Mat, прописал я таки фьюсы:

diecimila.bootloader.low_fuses=0xff
diecimila.bootloader.high_fuses=0xdd
diecimila.bootloader.extended_fuses=0x07

что соответсвуют выставленым на картинке.

Идем дальше.

Пробую загрузить боотлоадер через ISP после чего пишет ошибку

C:\Users\1\Downloads\arduino-1.0.2-windows\arduino-1.0.2\hardware/tools/avr/bin/avrdude -CC:\Users\1\Downloads\arduino-1.0.2-windows\arduino-1.0.2\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega168p -cstk500v1 -P\\.\COM2 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0x07:m -Uhfuse:w:0xdd:m -Ulfuse:w:0xff:m 

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Users\1\Downloads\arduino-1.0.2-windows\arduino-1.0.2\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : \\.\COM2
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
         AVR Part                      : ATMEGA168P
         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        512    4      0  3600  3600 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           flash         65     6   128    0 yes     16384  128    128  4500  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
avrdude: Send: A [41] . [80]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [02] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [81]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [01] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [82]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [12] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [98]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
avrdude: Send: A [41] . [84]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [85]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [86]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [87]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [89]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: Send: A [41] . [81]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [01] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [82]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [12] 
avrdude: Recv: . [10] 
avrdude: Send: B [42] . [86] . [00] . [00] . [01] . [01] . [01] . [01] . [03] . [ff] . [ff] . [ff] . [ff] . [00] . [80] . [02] . [00] . [00] . [00] @ [40] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: E [45] . [05] . [04] . [d7] . [c2] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: P [50]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: AVR device initialized and ready to accept instructions

Reading | avrdude: Send: V [56] 0 [30] . [00] . [00] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: V [56] 0 [30] . [00] . [01] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
################avrdude: Send: V [56] 0 [30] . [00] . [02] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
################################## | 100% 0.06s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

avrdude: Send: Q [51]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 

avrdude done.  Thank you.

Тадам что за фигня? Читаю фьюсы через AVR Burn-O-Mat там такая муть :((

Записать новые не получается из за того что установлен бит RSTDISBL. Это уже второй убитый камень.

Что делать, как быть?

З.Ы. Камень подключен правильно, не где не чего не замкнуто. Уже проверял много раз.

Zhyravlev_AS
Offline
Зарегистрирован: 03.04.2013

Вычитал вот тут

Если теперь программатор ругается на device signature 0x000000,


Код:
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.13s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

то это значит, что ему помогло снижение частоты, но не хватает сил запитать чип. В этом случае необходимо подключить (припаять, если с нуля делаем) к драйверу аккум.

На самом деле в тот раз я подключал отдельно питание. в этот раз все питается от UNO... хм..

maksim
Offline
Зарегистрирован: 12.02.2012

Zhyravlev_AS пишет:

Т.е. как я понимаю это фьсы по умолчанию. И когда записываем скетч то эти фьюсы тоже ведь записываются?

Нет, это не умолчания. Фьюзы прошиваются только при нажатии burn bootloader.

Zhyravlev_AS пишет:
Тадам что за фигня?

Эта фигня вам сообщает, что что фьзы все затерты и прошить бутлоудер нельзя.

Zhyravlev_AS пишет:

Что делать, как быть?

З.Ы. Камень подключен правильно, не где не чего не замкнуто. Уже проверял много раз.

Искать параллельный/высоковольтный программатор и востанавливать фьзы. Кстати, поищите, например атмега8 можно востановить без такового программатора.

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

М/б у вас самая распространенная ошибка с мегами - отключили кварц, когда прошивали фьюзы...попробуйте на вход XTAL, там где кварц подключается, подать импульсы от 500 кГц, может прошиться, если только не затерли SPI_ON. Если и ето не помогло, то да, как выше написано ищите параллельный программатор, ну или покупайте еще одну мегу :)

Генератор можно на 2и-не слепить, запитать от платы и проводком прямо тыкнуть на вход xtal. И в программаторе сверяйте, что у него значит галочка, а то у некоторых надо зеркально даташиту выбирать(кажись так в ponyproge).

Zhyravlev_AS
Offline
Зарегистрирован: 03.04.2013

А посоветуйте какой програматор мужно купить (не паять самому что б) 

maksim
Offline
Зарегистрирован: 12.02.2012

Может вам лучше МК новый купить? Универсальные параллельные программаторы не дешовая штука.

И вот кстати http://arduino.ru/forum/programmirovanie/kak-ozhivit-arduino-atmega8a#comment-28316

Zhyravlev_AS
Offline
Зарегистрирован: 03.04.2013

У меня их целых 20 штук.. но так дело не пойдет уже 3 в мусарке. =((( в этот раз подключил от отдельного блока питания, 5 вольт аж 1.5 ампера. 

Я хочу собирать не одно такое уст-во.. По этому готов разориться на програматор. Какой лучше взять?

 

Может ли это быть брак? Свою первую я покупал в местном магазине, а те что сейчас пытаюсь прошить в москве. И серия или что это у них разные, типа название а потом 1723 точно не помню, а на той что покупал в местном магазинчике другая цеферка.

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

Zhyravlev_AS пишет:

А посоветуйте какой програматор мужно купить (не паять самому что б) 

а что там поять, HC244 один,5 резисторов и получается STK200/byteblaster в зависимости от подключения в разъем :), долго на таком сидел, пока не сделал аналог AVR910 для USB

maksim
Offline
Зарегистрирован: 12.02.2012

STK200/byteblaster, AVR910 это последовательные программаторы, при затирании фьюзов они бесполезны.

Zhyravlev_AS
Offline
Зарегистрирован: 03.04.2013

Такой подойдет http://habrahabr.ru/post/128939/ ?

maksim
Offline
Зарегистрирован: 12.02.2012

Конечно нет, это тоже последовательный. http://ra4nal.qrz.ru/stk500.shtml

Zhyravlev_AS
Offline
Зарегистрирован: 03.04.2013

Увидев одну схему, я уже решил что лучше заплатить и купить :DDDD

Вот, сейчас я думаю, мб это мой касяк с фусами? Можете подсказать как их поставить?

maksim
Offline
Зарегистрирован: 12.02.2012

Конечно ваш, фьюзы можно читать/шить так например http://arduino.ru/forum/obshchii/zapretit-skachivanie-programmy-iz-arduino#comment-27493

Калькулятор фьюзов: http://www.engbedded.com/fusecalc

Самое главное не путать Hfuse, Lfuse и Efuse.

Zhyravlev_AS
Offline
Зарегистрирован: 03.04.2013

maksim, можете помочь с этим делом если не сложно? Читал про фусы но так не чего и не понял какие нужно правильно поставить.

maksim
Offline
Зарегистрирован: 12.02.2012

Так в калькуляторе же все ясно, вы если не понимаете ,то опишите хотябы что хотите...

Zhyravlev_AS
Offline
Зарегистрирован: 03.04.2013

Ясно - вам) Вы этим давно как я уже понял занимаетесь, а я на своем веку ток 2 мк прошил))

Ну вот те фюсы что на картинки с ними не чего у меня не выходит. Как я уже писал, я ставлю эти фюсы, потом (пробывал залить ботлоадер или сразу скет) и в том и в том случаи пишет ошибку поле чего фьюсы все затерты.

ATmega168PA-AU, внешний кварц 16Мгц. Мб как по другому нужно выставить? Я чет уже запутался %)

maksim
Offline
Зарегистрирован: 12.02.2012

А зачем вы тогда вообще правите и прошиваете фьюзы отдельно, если хотите залить дуиновский бутлоудер??? Они уже установленны как надо.
Просто добавили буковку p в файле boards, сохранили:

##############################################################

diecimila.name=Arduino Diecimila or Duemilanove w/ ATmega168

diecimila.upload.protocol=arduino
diecimila.upload.maximum_size=14336
diecimila.upload.speed=19200

diecimila.bootloader.low_fuses=0xff
diecimila.bootloader.high_fuses=0xdd
diecimila.bootloader.extended_fuses=0x00
diecimila.bootloader.path=atmega
diecimila.bootloader.file=ATmegaBOOT_168_diecimila.hex
diecimila.bootloader.unlock_bits=0x3F
diecimila.bootloader.lock_bits=0x0F

diecimila.build.mcu=atmega168p
diecimila.build.f_cpu=16000000L
diecimila.build.core=arduino
diecimila.build.variant=standard

##############################################################

перезвпустили IDE, выбрали плату Arduino Diecimila or Duemilanove w/ ATmega168, нажали burn bootloader. 
ВСЕ - фьюзы и загрузчик прошиты. Потключаете UART (или вставляете МК в дуину) можно заливать скейтчи.

Zhyravlev_AS
Offline
Зарегистрирован: 03.04.2013

Хорошо, попробую так. Спасибо.

maksim
Offline
Зарегистрирован: 12.02.2012

Но если у вас есть ISP-программатор (ArduinoISP), то тогда вопрос - а зачем вам бутлоудер? заливайте скейтчи через ISP. В общем вы сами для начала определитесь что вам нужно.

Zhyravlev_AS
Offline
Зарегистрирован: 03.04.2013

Да мне всего лишь нужно один раз залить скет на мк и все.. Но что-то мне не хочется 5-й мк "убить")) попробую как Вы сказали... если опять все фьюсы затрутся тогда хз что делать :(

Да, ещё сделать так что б работало от внешнего 18 МГц кварца

maksim
Offline
Зарегистрирован: 12.02.2012

Добавьте строки в файл boards и сохраните его:

##############################################################

ATmega168P.name=ATmega168P
ATmega168P.upload.maximum_size=16384
ATmega168P.bootloader.low_fuses=0xff
ATmega168P.bootloader.high_fuses=0xdd
ATmega168P.bootloader.extended_fuses=0xf9
ATmega168P.bootloader.unlock_bits=0x3F
ATmega168P.bootloader.lock_bits=0x0F
ATmega168P.build.mcu=atmega168p
ATmega168P.build.f_cpu=16000000L
ATmega168P.build.core=arduino:arduino
ATmega168P.build.variant=standard

##############################################################

перезапустите IDE, выберите плату ATmega168P, нажмите burn bootloader. 
Если удачно, ВСЁ - фьюзы прошиты. Скейтчи теперь можно заливать только по ISP, нажимаете в меню Файл
-> Загрузить с помощью программатора, ВСЁ скейтч залит.

maksim
Offline
Зарегистрирован: 12.02.2012

Zhyravlev_AS пишет:

Да, ещё сделать так что б работало от внешнего 18 МГц кварца

Попробуйте изменить строку:

ATmega168P.build.f_cpu=18000000L

 

Zhyravlev_AS
Offline
Зарегистрирован: 03.04.2013

Всему виной мои кревые руки как аказалось. Все сделал, все работе. maksim спасибо!)

Вот фото готового уст-ва)) ток в место ленты светодиод повесил))