Третий раз делаю подписку на эту тему, но кто-то удаляет пост, зачем ?. Соответственно уведомления не приходят.
Если пост пустой - я удаляю, не разбираясь, для подписки он или руки не туда дрогнули. На этом форуме это стандартная практика.
Дед, до этого момента, если тема меня заинтересовала я ставил - точку(.) и всё уведомления на почту, это по моему и была стандартная практика на этом форуме.
визуальную индикацию работы таймеров, светодиод для этого на плате уже есть - LED на пине 13, в идеале 1 короткая вспышка - 0 таймер, две - 1-й и так далее, по кругу на всех доступных таймерах
До сих пор ничерта не понимаю. Перед каждым вызовом добавить for(uint8_t i=0; 3 > i; i++) { digitalWrite(13, HIGH); delay(200); digitalWrite(13, LOW);} что ли?
Да как угодно. чтобы работу всех таймеров можно было визуально проверить только одним светодиодом )))
Вот тут я сделал по рабоче-крестьянски, но для того, чтобы проверить все таймера надо изменять номер таймера и заливать прошивку, а это - пять раз, сможешь сделать ХЭД ЭНД ШОЛДЕРС будет великолепно
Дед, до этого момента, если тема меня заинтересовала я ставил - точку(.) и всё уведомления на почту, это по моему и была стандартная практика на этом форуме.
Олег, просто точки, я тоже удаляю, т.к. неясно, человек запостил и потом стер или подписался.
А ещё лучше написать что-то полезное по теме :)
Есть много чего, что можно исследовать обладателям этого МК, например:
-как "заардуинить" сенсорные кнопки на этом мк.
-тестирование стабильности при разгоне.
-сравнить разные аддоны
А ещё лучше написать что-то полезное по теме :)
Есть много чего, что можно исследовать обладателям этого МК, например:
-как "заардуинить" сенсорные кнопки на этом мк.
-тестирование стабильности при разгоне.
-сравнить разные аддоны
как раз последним и занимаюсь, сравниваю, аддон от pololu выпадает, много косяков
продолжаю исследовать аддоны, в аддоне от MiniCore (в нём доступны и другие процессоры) есть возможность установки BOD и опции компилятора LTO, при разрешении последнего к примеру на скетче квона для LCD2004 позволяет экономить память программ до полкилобайта!
задам тупой вопрос. А раз уж распиновка не очень с простым 328 совпадает, может просто другой камень повыше в линейке применять? Например 1284p. У него и с памятью совсем хорошо. Ну понятно по цене чуть дороже, но не сильно.
MaksVV, другой камень взять для чего? Этот мк для тех, кто привык к меге328 и к большому кол-ву библиотек, написанных под мегу328. Я вот хоть уже давно увлечён stm32, но именно к меге 328 сохранил тёплые дружеские чувства ;)
Кому нибудь попадались такие нано с 328pb
Их стоит брать?
#Aliexpress 159,89 руб. 10%СКИДКА | Nano Mini USB с Загрузчиком совместимый контроллер Nano 3,0 Для arduino CH340 USB драйвер Nano v3.0 Atmega328 Atmega328pb https://a.aliexpress.ru/_BPjqJj
взял другой чип попытался залить загрущик выбрав 16 мгц он вроде начал шиться но выкатил ошибку
Arduino: 1.8.12 (Windows 10), Плата:"ATmega328PB Crystal Clock, 16 MHz"
C:\Users\jp\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude.exe -CC:\Users\jp\AppData\Local\Arduino15\packages\m328pb\hardware\avr\1.1.4/tools/avrdude.conf -v -patmega328pb -cstk500v1 -PCOM14 -b19200 -e -Ulock:w:0xFF:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD6:m -Ulfuse:w:0xFF:m
avrdude.exe: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Users\jp\AppData\Local\Arduino15\packages\m328pb\hardware\avr\1.1.4/tools/avrdude.conf"
Using Port : COM14
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATmega328PB
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.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude.exe: Device signature = 0x1e9516 (probably m328pb)
avrdude.exe: erasing chip
avrdude.exe: reading input file "0xFF"
avrdude.exe: writing lock (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude.exe: 1 bytes of lock written
avrdude.exe: verifying lock memory against 0xFF:
avrdude.exe: load data lock data from input file 0xFF:
avrdude.exe: input file 0xFF contains 1 bytes
avrdude.exe: reading on-chip lock data:
Reading | ################################################## | 100% 0.01s
avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lock verified
avrdude.exe: reading input file "0xFD"
avrdude.exe: writing efuse (1 bytes):
Writing | ***failed;
################################################## | 100% 0.05s
avrdude.exe: 1 bytes of efuse written
avrdude.exe: verifying efuse memory against 0xFD:
avrdude.exe: load data efuse data from input file 0xFD:
avrdude.exe: input file 0xFD contains 1 bytes
avrdude.exe: reading on-chip efuse data:
Reading | ################################################## | 100% 0.01s
avrdude.exe: verifying ...
avrdude.exe: WARNING: invalid value for unused bits in fuse "efuse", should be set to 1 according to datasheet
This behaviour is deprecated and will result in an error in future version
You probably want to use 0xf5 instead of 0xfd (double check with your datasheet first).
avrdude.exe: 1 bytes of efuse verified
avrdude.exe: reading input file "0xD6"
avrdude.exe: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.02s
avrdude.exe: 1 bytes of hfuse written
avrdude.exe: verifying hfuse memory against 0xD6:
avrdude.exe: load data hfuse data from input file 0xD6:
avrdude.exe: input file 0xD6 contains 1 bytes
avrdude.exe: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.01s
avrdude.exe: verifying ...
avrdude.exe: 1 bytes of hfuse verified
avrdude.exe: reading input file "0xFF"
avrdude.exe: writing lfuse (1 bytes):
C:\Users\jp\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude.exe -CC:\Users\jp\AppData\Local\Arduino15\packages\m328pb\hardware\avr\1.1.4/tools/avrdude.conf -v -patmega328pb -cstk500v1 -PCOM14 -b19200 -Uflash:w:C:\Users\jp\AppData\Local\Arduino15\packages\m328pb\hardware\avr\1.1.4/bootloaders/optiboot_m328pb.hex:i -Ulock:w:0xCF:m
Writing | ################################################## | 100% 0.02s
avrdude.exe: 1 bytes of lfuse written
avrdude.exe: verifying lfuse memory against 0xFF:
avrdude.exe: load data lfuse data from input file 0xFF:
avrdude.exe: input file 0xFF contains 1 bytes
avrdude.exe: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.01s
avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lfuse verified
avrdude.exe done. Thank you.
avrdude.exe: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Users\jp\AppData\Local\Arduino15\packages\m328pb\hardware\avr\1.1.4/tools/avrdude.conf"
Using Port : COM14
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATmega328PB
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.exe: AVR device initialized and ready to accept instructions
Ошибка при записи загрузчика.
Reading | ################################################## | 100% 0.02s
avrdude.exe: Device signature = 0x0000ff
avrdude.exe: Expected signature for ATmega328PB is 1E 95 16
Double check chip, or use -F to override this check.
avrdude.exe done. Thank you.
затем выбрал шится на внутренем кварце в 8 мгц и вроде как залилось, затем попытался еще раз залить то же самое не двигая и не разьединя ничего сразу выпадает ошибка
Arduino: 1.8.12 (Windows 10), Плата:"ATmega328PB Internal Clock, 8 MHz"
C:\Users\jp\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude.exe -CC:\Users\jp\AppData\Local\Arduino15\packages\m328pb\hardware\avr\1.1.4/tools/avrdude.conf -v -patmega328pb -cstk500v1 -PCOM14 -b19200 -e -Ulock:w:0xFF:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD6:m -Ulfuse:w:0xE2:m
avrdude.exe: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Users\jp\AppData\Local\Arduino15\packages\m328pb\hardware\avr\1.1.4/tools/avrdude.conf"
Using Port : COM14
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATmega328PB
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.exe: AVR device initialized and ready to accept instructions
Ошибка при записи загрузчика.
Reading | ################################################## | 100% 0.02s
avrdude.exe: Device signature = 0x00ff00
avrdude.exe: Expected signature for ATmega328PB is 1E 95 16
Double check chip, or use -F to override this check.
avrdude.exe done. Thank you.
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Charovnik, Мне кажется, что проблемы с прошивкой голых МК в 99% случаев возникают из-за плохих контактов(монтажа). Я например никогда не шью так, как вы -подвесив МК на соплях. Либо сначала припаиваю МК в ту плату, где он будет работать, а потом через разъём ISP прошиваю. Либо припаиваю МК непосредственно на переходник программатора. И всё всегда шьётся без проблем.
Вобщем взял ардуину нану с простым 328р залил в нее блинк, снял кварц с наны блинк не работал, снял чип поставил чип и кварц на колодку поставил диод на 13 ногу и резистор 1ком на ресет и 5вольт подал напряжение блинк работает. Подключил поровода isp. Тот же самый блинк скетч заливается загрузка же загрущика не идет. Ошибки типа ff0000 00ff00 0000ff. При этом когда отравляю команду по диоду видно что чип в колодке пытался прерватся
А если не прошивать загрузчик, не менять фьюзы - программатором скетчи в МК заливаются?
Если не прошивать загрузчик, то скетчи программатором загружаются. Но с завода чип настроен на непонятный внешний кварц, толи 16MHz толи 1Mhz. Не столь важно, всё равно не подходит. По этому надо перепрошить. И вот у меня полностью аналогично, как описывает Charovnik.
После первой записи загрузчика - дальше ничего не работало. Правда, я это два года назад делал и разными загрузчиками испортил три атмеги и на этом эксперименты отложил до лучших времён. Сейчас активно использую MiniCore библиотеку. Ею еще не пробовал прошить новые Atmega328PB, а в старые не грузится. Хотя тут пишут, что это может программатор Arduino as ISP не подходит. А USBtinyISP загрузить сможет... попробовать, что-ли...
Для сравнения, Atmega328P прекрасно прошивается. Отличие от в логах от Atmega328PB вот именно в этой строчке:
Почему-то для Atmega328PB оно напрочь разучивается правильно считывать эту сигнатуру. Пишет, что не тот контроллер и останавливается. А надо, чтобы пробовало загрузить загрузчик. Люди пишут, что когда делают это в принудительном порядке, то загружается и всё дальше работает.
Но с завода чип настроен на непонятный внешний кварц, толи 16MHz толи 1Mhz.
С завода чип ВСЕГДА настроен на внутренний RC-осциллятор 8МГц с делителем на 8 (т.е. тактовая 1МГц). Если у Вас чип настроен на внешний кварц, значит он уже не с завода. Вам продали б/у чип, в котором менялись фьюзы.
Цитата:
avrdude: Device signature = 0x1e950f (probably m328p)
Почему-то для Atmega328PB оно напрочь разучивается правильно считывать эту сигнатуру.
Если бы были проблемы со считыванием сигнатуры, там были нули: Device signature = 0x000000 или другая билиберда. В данном случае он чётко считывает сигнатуру Atmega328P. Сигнатура для Atmega328PB = 0x1e9516.
Вы уверены, что чип не перемаркировка б/у Atmega328P? Все признаки указывают на это.
"С завода чип ВСЕГДА настроен на внутренний RC-осциллятор 8МГц с делителем на 8 (т.е. тактовая 1МГц). "
Да, где-то про это и написал, что там была другая частота, а не 8MHz, которая нужна тогда была мне.
"Если бы были проблемы со считыванием сигнатуры, там были нули: Device signature = 0x000000".
Да, вот так и есть на микроконтроллерах, которые когда-то "испортил". В зависимости от выбранной частоты кварца там еще ff куда нибудь вписывается. Типа: avrdude.exe: Device signature = 0x00ff00
Загвоздка была, что первый раз то оно прошивалось.
Ради эксперимента, взял только что новый Atmega328PB. Прошил его MiniCore. Прошилось (но первый раз так и с другими загрузчиками было). Загрузил загрузчик второй раз - снова загрузилось! Залил через программатор сектч - работает. Алилуя. Вот она, нормально работающая библиотека для этого микропроцессора. Дело в том, что нашел её только год назад и теперь активно использую. А портил микроконтроллеры PB года два назад. Тогда по ним инфы было маловато.
И в завершение, вот как выглядит успешный лог (не знаю, как его свернуть):
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Users\Aleks\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.0.5/avrdude.conf"
Using Port : COM3
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATmega328PB
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
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
efuse 0 0 0 0 no 1 0 0 4500 4500 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.02s
avrdude: Device signature = 0x1e9516 (probably m328pb)
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: reading input file "C:\Users\Aleks\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.0.5/bootloaders/optiboot_flash/bootloaders/atmega328pb/8000000L/optiboot_flash_atmega328pb_UART0_38400_8000000L_B5.hex"
avrdude: writing flash (32768 bytes):
Writing | ################################################## | 100% -0.00s
avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against C:\Users\Aleks\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.0.5/bootloaders/optiboot_flash/bootloaders/atmega328pb/8000000L/optiboot_flash_atmega328pb_UART0_38400_8000000L_B5.hex:
avrdude: load data flash data from input file C:\Users\Aleks\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.0.5/bootloaders/optiboot_flash/bootloaders/atmega328pb/8000000L/optiboot_flash_atmega328pb_UART0_38400_8000000L_B5.hex:
avrdude: input file C:\Users\Aleks\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.0.5/bootloaders/optiboot_flash/bootloaders/atmega328pb/8000000L/optiboot_flash_atmega328pb_UART0_38400_8000000L_B5.hex contains 32768 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% -0.00s
avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: reading input file "0x0f"
avrdude: writing lock (1 bytes):
Writing | ################################################## | 100% 0.02s
avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x0f:
avrdude: load data lock data from input file 0x0f:
avrdude: input file 0x0f contains 1 bytes
avrdude: reading on-chip lock data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lock verified
avrdude done. Thank you.
Как восстановить неправильно прошитые Atmega328PB - это уже совсем другая история. Люди пишут, что как минимум через Arduino as ISP это не получится.
Weisnar - это все интересно, но совершенно не отменяет того, что тот чип где у вас читается
avrdude: Device signature = 0x1e950f
- скорее всего перемаркировка.
Вообще , мне кажется что вы как-то очень смутно представляете весь процесс, постоянно путаетесь в рассуждениях, что и как прошивали, что у вас в итоге работает, а что блочится...
По мне так тут все предельно ясно. Когда вы выставляете правильные фьюзы к правильно определенному чипу, верно соединяете провода, правильно выбираете параметры в настройках программатора - все прошивается. А если где-то ошибка - то нет. И не надо никакой магии...
а если у вас был чип с сигнатурой 0x1e950f от обычной 328р , а вы его насильно с параметром -f зашили как 328pb - то понятно, что такое можно сделать только один раз, а потом он блочится
Согласен с b707.
Сигнатура 0x1e950f НЕ может возникнуть случайным образом в результате ошибки считывания, это исключено.
Это однозначно говорит о том, что прошиваемый чип является Atmega328P, а не Atmega328PB.
а если у вас был чип с сигнатурой 0x1e950f от обычной 328р , а вы его насильно с параметром -f зашили как 328pb - то понятно, что такое можно сделать только один раз, а потом он блочится
Всё практически так, только на оборот. Были 328PB и прошивались разными загрузчиками от 328P (предварительно изменёнными по инфе с разных форумов). Блочится навсегда?
Про avrdude: Device signature = 0x1e950f (probably m328p) я там сначала указал, что это "Для сравнения, Atmega328P прекрасно прошивается". У меня разные атмеги: 328P, 328P-AU, 328PB.
Atmega328PB - более двух лет назад на алиекспресс куплен десяток за 12$ (доставка бесплатная). Классические Atmega328P на то время стоили дороже.
Тогда, летом 18-го года, я не нашел, как прошить загрузчик для этих PB. Их и не было, надо было модифицировать загрузчик от обычного 328P. Попробовал несколько вариантов. Убил пару микроконтроллеров и эксперименты отложил.
Ситуация там была в точности, как описал Чаровник. Первый раз что-то закачивалось, но потом всё. На все попытки что-то в него залить сигнатура больше не считывалась: avrdude.exe: Device signature = 0x00ff00 .
Год назад набрёл на MiniCore, которую активно использую, так как она добавляет два дополнительных пина (This core gives you two extra IO pins if you're using the internal oscillator!). И там по умолчанию была поддержка 328PB. Случайно увидел, что в этой ветке поднимали уже вопрос о том, как записать загрузчик. Этим летом вот снова. Поделился личными наблюдениями:
1. Программатором скетчи заливаются. Если не пытаться записать свой загрузчик.
2. Если пытаться записать загрузчик криво, например, модифицированный от 328P, то чё-то сбивается и больше сигнатура не считывается.
3. Загрузчик от MiniCore записывается (в новые 328PB) и всё работает.
4. В предварительно "испорченные" 328PB корявым загрузчиком записать тот же MiniCore уже не выходит. Программатор ругается на отсутствие сигнатуры.
Weisnar - вопрос о том, нафига вообще нужен загрузчик, если вы работаете с голым чипом, да еще и на внутреннем осцилляторе? Заливайте скетчи программатором и не мучайтесь
Нужен ли загрузчик в атмегах вопрос, наверно, больше философский.
Лично мне он подходит по двум причинам:
- добавляет два цифровых пина, которые в заводской прошивке не активны;
- добавляет возможность обновлять скетчи по UART, а на пины 10,11,12,13 обычно припаиваю какой-то радиомодуль.
Тоесть, мне всегда думалось, что загрузчик - штука полезная.
Тем боле, насколько понял, MiniCore использует загрузчик Optiboot, а он в свою очередь совсем не большой размером.
Хотя очень давно экспериментировал, там толи MISO, толи MOSI радиомодуля достаточно через резистор подключить и всё. Он не будет мешать перепрошивке.
Так что... Загрузчики лучше не использовать? Я же написал. Проверил уже на нескольких 328PB. MiniCore нормально заливается и всё работает лучше прежнего.
Кто не знает, Optiboot еще и функцию watchdog восстанавливает. Но она конфликтует с библиотекой LowPower, по этому тут уж кому что нужнее.
Третий раз делаю подписку на эту тему, но кто-то удаляет пост, зачем ?. Соответственно уведомления не приходят.
Если пост пустой - я удаляю, не разбираясь, для подписки он или руки не туда дрогнули. На этом форуме это стандартная практика.
Дед, до этого момента, если тема меня заинтересовала я ставил - точку(.) и всё уведомления на почту, это по моему и была стандартная практика на этом форуме.
Индикацию чего?
визуальную индикацию работы таймеров, светодиод для этого на плате уже есть - LED на пине 13, в идеале 1 короткая вспышка - 0 таймер, две - 1-й и так далее, по кругу на всех доступных таймерах
До сих пор ничерта не понимаю. Перед каждым вызовом добавить for(uint8_t i=0; 3 > i; i++) { digitalWrite(13, HIGH); delay(200); digitalWrite(13, LOW);} что ли?
Да как угодно. чтобы работу всех таймеров можно было визуально проверить только одним светодиодом )))
Вот тут я сделал по рабоче-крестьянски, но для того, чтобы проверить все таймера надо изменять номер таймера и заливать прошивку, а это - пять раз, сможешь сделать ХЭД ЭНД ШОЛДЕРС будет великолепно
Да как угодно. чтобы работу всех таймеров можно было визуально проверить только одним светодиодом )))
Ну подключайте один светодиод к разным ногам. Или думаете, что я каким-то волшебным способом заставлю T1 меандр выдавать на D13, а не на D9?
Да как угодно. чтобы работу всех таймеров можно было визуально проверить только одним светодиодом )))
Ну подключайте один светодиод к разным ногам. Или думаете, что я каким-то волшебным способом заставлю T1 меандр выдавать на D13, а не на D9?
впрямую нет, но программист, он жеж как бог, не вижу почему это нельзя сделать
Дед, до этого момента, если тема меня заинтересовала я ставил - точку(.) и всё уведомления на почту, это по моему и была стандартная практика на этом форуме.
Олег, просто точки, я тоже удаляю, т.к. неясно, человек запостил и потом стер или подписался.
Стандартная практика, на большинстве форумов, внятно, по-русски, написать "подпишусь", а не плодить посты с точками. Или я из тьмы выпал?
А ещё лучше написать что-то полезное по теме :)
Есть много чего, что можно исследовать обладателям этого МК, например:
-как "заардуинить" сенсорные кнопки на этом мк.
-тестирование стабильности при разгоне.
-сравнить разные аддоны
А ещё лучше написать что-то полезное по теме :)
Есть много чего, что можно исследовать обладателям этого МК, например:
-как "заардуинить" сенсорные кнопки на этом мк.
-тестирование стабильности при разгоне.
-сравнить разные аддоны
как раз последним и занимаюсь, сравниваю, аддон от pololu выпадает, много косяков
продолжаю исследовать аддоны, в аддоне от MiniCore (в нём доступны и другие процессоры) есть возможность установки BOD и опции компилятора LTO, при разрешении последнего к примеру на скетче квона для LCD2004 позволяет экономить память программ до полкилобайта!
Проверочный скетч, задействованы все таймеры:
И библиотека к нему:
10 шт./лот ATMEGA328PB-AU MEGA328PB-U ATMEGA328PB MEGA328PB MEGA328PB-AU
824,88 руб. / партия
Заказов (12)
Shenzhen Chuangzhuo Store Связаться с продавцом
А Atmel квадратиками закрасили чтобы не было претензий при получении левого чипа?
задам тупой вопрос. А раз уж распиновка не очень с простым 328 совпадает, может просто другой камень повыше в линейке применять? Например 1284p. У него и с памятью совсем хорошо. Ну понятно по цене чуть дороже, но не сильно.
MaksVV, другой камень взять для чего? Этот мк для тех, кто привык к меге328 и к большому кол-ву библиотек, написанных под мегу328. Я вот хоть уже давно увлечён stm32, но именно к меге 328 сохранил тёплые дружеские чувства ;)
понятно. согласен, всеобщая поддержка это важно.
Приветствую ! Ни у кого случаем нет лишнего камня ... двух ... на руках в России ? Купил бы с отправкой простым письмом.
P.S. За сутки никто не откликнулся ... :-(
Рассчитывали что все, у кого нет отпишутся? )) Камень этот пока скорей экзотика.
Кстати на амперке появились нанки по вменяемой (для Москвы) цене https://amperka.ru/product/iskra-nano-pro-headless
Вот и задачка для платы нарисовалась, осталось подключить модуль и проверить )))
Кому нибудь попадались такие нано с 328pb
Их стоит брать?
#Aliexpress 159,89 руб. 10%СКИДКА | Nano Mini USB с Загрузчиком совместимый контроллер Nano 3,0 Для arduino CH340 USB драйвер Nano v3.0 Atmega328 Atmega328pb
https://a.aliexpress.ru/_BPjqJj
Фото в "живую"
https://ibb.co/pdDh6z6
https://ibb.co/zPg4pQm
https://ibb.co/ZHpmq3C
https://ibb.co/LpHCL4V
https://ibb.co/Jv0YYvG
https://ibb.co/YB990Cx
https://ibb.co/NK4y8KL
https://ibb.co/1vwM7SS
На фото обычный контроллер 328P
Если 328pb лучше 328p почему он не пошёл в массы и не обрёл популярность? В чем проблема использования для рядового пользователя?
Пойдет ещё, надеюсь. Существующий техпроцесс по производству ардуин со старыми МК никто не торопится ломать.
Для рядового куча проблем: менталитет, отсутствие в массовых поделках, библиотеки надо править. Для меня вот эти интереснее https://aliexpress.ru/item/32828713412.html
Ну а пока на макетке.
добрый день.
приобрел 328pb без загрущика.
подключил к ардуино нано по isp и кварцу в 16 мгц.
в менеджере плат скачал 328pb. при попытке залить бутлодырь получается ошибка.
выложите сообщение об ошибке полностью. В частности. если пишет "ожидаемая сигнатура такая-то..." - должен писать , какая реально прочитана с чипа
это означает, что МК не отвечает программатору.
Тут либо МК не стартует, либо в соединениях что-то напутали
взял другой чип попытался залить загрущик выбрав 16 мгц он вроде начал шиться но выкатил ошибку
Charovnik, по логам похоже на то, что вы прошиваете камень под внешний кварц, а с кварцем он у вас не стартует. как подключали кварц, покажите схему
А если не прошивать загрузчик, не менять фьюзы - программатором скетчи в МК заливаются?
Колодка с первого пина по кругу на фото верх ногами , правда не уверен за кварц посто новый припаял
- обожмите сильнее эти провода ( встречал что китайцы такие плохо обжимают)
- пробуйте другие контроллеры
- попробуйте программатор USBtinyISP ( был случай что только он помог #comment-536135 )
- еще народ сталкивался c проблемами при программировании atmega328PB https://www.avrfreaks.net/forum/programming-atmega328pb-ispenterprogmode-fail?page=all
- самый крайний случай параллельное программирование Fuse doctor ,( на счет как там с -PB незнамо).
А зачем вы стираете бит CFD ???
Charovnik, Мне кажется, что проблемы с прошивкой голых МК в 99% случаев возникают из-за плохих контактов(монтажа). Я например никогда не шью так, как вы -подвесив МК на соплях. Либо сначала припаиваю МК в ту плату, где он будет работать, а потом через разъём ISP прошиваю. Либо припаиваю МК непосредственно на переходник программатора. И всё всегда шьётся без проблем.
я череза arduino ide заливал там все само происходит, посоветуйте может какую программу
avrdude прямо из командной строки.
Вобщем взял ардуину нану с простым 328р залил в нее блинк, снял кварц с наны блинк не работал, снял чип поставил чип и кварц на колодку поставил диод на 13 ногу и резистор 1ком на ресет и 5вольт подал напряжение блинк работает. Подключил поровода isp. Тот же самый блинк скетч заливается загрузка же загрущика не идет. Ошибки типа ff0000 00ff00 0000ff. При этом когда отравляю команду по диоду видно что чип в колодке пытался прерватся
А если не прошивать загрузчик, не менять фьюзы - программатором скетчи в МК заливаются?
Если не прошивать загрузчик, то скетчи программатором загружаются. Но с завода чип настроен на непонятный внешний кварц, толи 16MHz толи 1Mhz. Не столь важно, всё равно не подходит. По этому надо перепрошить. И вот у меня полностью аналогично, как описывает Charovnik.
После первой записи загрузчика - дальше ничего не работало. Правда, я это два года назад делал и разными загрузчиками испортил три атмеги и на этом эксперименты отложил до лучших времён. Сейчас активно использую MiniCore библиотеку. Ею еще не пробовал прошить новые Atmega328PB, а в старые не грузится. Хотя тут пишут, что это может программатор Arduino as ISP не подходит. А USBtinyISP загрузить сможет... попробовать, что-ли...
Для сравнения, Atmega328P прекрасно прошивается. Отличие от в логах от Atmega328PB вот именно в этой строчке:
Но с завода чип настроен на непонятный внешний кварц, толи 16MHz толи 1Mhz.
С завода чип ВСЕГДА настроен на внутренний RC-осциллятор 8МГц с делителем на 8 (т.е. тактовая 1МГц). Если у Вас чип настроен на внешний кварц, значит он уже не с завода. Вам продали б/у чип, в котором менялись фьюзы.
avrdude: Device signature = 0x1e950f (probably m328p)
Почему-то для Atmega328PB оно напрочь разучивается правильно считывать эту сигнатуру.
Если бы были проблемы со считыванием сигнатуры, там были нули: Device signature = 0x000000 или другая билиберда. В данном случае он чётко считывает сигнатуру Atmega328P. Сигнатура для Atmega328PB = 0x1e9516.
Вы уверены, что чип не перемаркировка б/у Atmega328P? Все признаки указывают на это.
"С завода чип ВСЕГДА настроен на внутренний RC-осциллятор 8МГц с делителем на 8 (т.е. тактовая 1МГц). "
Да, где-то про это и написал, что там была другая частота, а не 8MHz, которая нужна тогда была мне.
"Если бы были проблемы со считыванием сигнатуры, там были нули: Device signature = 0x000000".
Да, вот так и есть на микроконтроллерах, которые когда-то "испортил". В зависимости от выбранной частоты кварца там еще ff куда нибудь вписывается. Типа: avrdude.exe: Device signature = 0x00ff00
Загвоздка была, что первый раз то оно прошивалось.
Ради эксперимента, взял только что новый Atmega328PB. Прошил его MiniCore. Прошилось (но первый раз так и с другими загрузчиками было). Загрузил загрузчик второй раз - снова загрузилось! Залил через программатор сектч - работает. Алилуя. Вот она, нормально работающая библиотека для этого микропроцессора. Дело в том, что нашел её только год назад и теперь активно использую. А портил микроконтроллеры PB года два назад. Тогда по ним инфы было маловато.
И в завершение, вот как выглядит успешный лог (не знаю, как его свернуть):
Как восстановить неправильно прошитые Atmega328PB - это уже совсем другая история. Люди пишут, что как минимум через Arduino as ISP это не получится.
Я на первой странице тоже менял левый бутлоадер, но только полулой.
Weisnar - это все интересно, но совершенно не отменяет того, что тот чип где у вас читается
avrdude: Device signature = 0x1e950f
- скорее всего перемаркировка.
Вообще , мне кажется что вы как-то очень смутно представляете весь процесс, постоянно путаетесь в рассуждениях, что и как прошивали, что у вас в итоге работает, а что блочится...
По мне так тут все предельно ясно. Когда вы выставляете правильные фьюзы к правильно определенному чипу, верно соединяете провода, правильно выбираете параметры в настройках программатора - все прошивается. А если где-то ошибка - то нет. И не надо никакой магии...
а если у вас был чип с сигнатурой 0x1e950f от обычной 328р , а вы его насильно с параметром -f зашили как 328pb - то понятно, что такое можно сделать только один раз, а потом он блочится
"С завода чип ВСЕГДА настроен на внутренний RC-осциллятор 8МГц с делителем на 8 (т.е. тактовая 1МГц). "
Да, где-то про это и написал, что там была другая частота, а не 8MHz, которая нужна тогда была мне.
Так она и должна быть другая. 8 МГц с делителем на 8 дают тактовую 1МГц. Так и должно быть с завода.
скорее всего перемаркировка.
Согласен с b707.
Сигнатура 0x1e950f НЕ может возникнуть случайным образом в результате ошибки считывания, это исключено.
Это однозначно говорит о том, что прошиваемый чип является Atmega328P, а не Atmega328PB.
а если у вас был чип с сигнатурой 0x1e950f от обычной 328р , а вы его насильно с параметром -f зашили как 328pb - то понятно, что такое можно сделать только один раз, а потом он блочится
Всё практически так, только на оборот. Были 328PB и прошивались разными загрузчиками от 328P (предварительно изменёнными по инфе с разных форумов). Блочится навсегда?
Про avrdude: Device signature = 0x1e950f (probably m328p) я там сначала указал, что это "Для сравнения, Atmega328P прекрасно прошивается". У меня разные атмеги: 328P, 328P-AU, 328PB.
Atmega328PB - более двух лет назад на алиекспресс куплен десяток за 12$ (доставка бесплатная). Классические Atmega328P на то время стоили дороже.
Тогда, летом 18-го года, я не нашел, как прошить загрузчик для этих PB. Их и не было, надо было модифицировать загрузчик от обычного 328P. Попробовал несколько вариантов. Убил пару микроконтроллеров и эксперименты отложил.
Ситуация там была в точности, как описал Чаровник. Первый раз что-то закачивалось, но потом всё. На все попытки что-то в него залить сигнатура больше не считывалась: avrdude.exe: Device signature = 0x00ff00 .
Год назад набрёл на MiniCore, которую активно использую, так как она добавляет два дополнительных пина (This core gives you two extra IO pins if you're using the internal oscillator!). И там по умолчанию была поддержка 328PB. Случайно увидел, что в этой ветке поднимали уже вопрос о том, как записать загрузчик. Этим летом вот снова. Поделился личными наблюдениями:
1. Программатором скетчи заливаются. Если не пытаться записать свой загрузчик.
2. Если пытаться записать загрузчик криво, например, модифицированный от 328P, то чё-то сбивается и больше сигнатура не считывается.
3. Загрузчик от MiniCore записывается (в новые 328PB) и всё работает.
4. В предварительно "испорченные" 328PB корявым загрузчиком записать тот же MiniCore уже не выходит. Программатор ругается на отсутствие сигнатуры.
Weisnar - вопрос о том, нафига вообще нужен загрузчик, если вы работаете с голым чипом, да еще и на внутреннем осцилляторе? Заливайте скетчи программатором и не мучайтесь
Нужен ли загрузчик в атмегах вопрос, наверно, больше философский.
Лично мне он подходит по двум причинам:
- добавляет два цифровых пина, которые в заводской прошивке не активны;
- добавляет возможность обновлять скетчи по UART, а на пины 10,11,12,13 обычно припаиваю какой-то радиомодуль.
Тоесть, мне всегда думалось, что загрузчик - штука полезная.
Тем боле, насколько понял, MiniCore использует загрузчик Optiboot, а он в свою очередь совсем не большой размером.
Хотя очень давно экспериментировал, там толи MISO, толи MOSI радиомодуля достаточно через резистор подключить и всё. Он не будет мешать перепрошивке.
Так что... Загрузчики лучше не использовать? Я же написал. Проверил уже на нескольких 328PB. MiniCore нормально заливается и всё работает лучше прежнего.
Кто не знает, Optiboot еще и функцию watchdog восстанавливает. Но она конфликтует с библиотекой LowPower, по этому тут уж кому что нужнее.
Ну какой же бред...