Всё про ATmega328PB

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Он и хочет освободить Serial1.

MaksVV
Offline
Зарегистрирован: 06.08.2015

всмысле да,  SPI0 и Serial1 на одних ногах. Короче походу MCP Не рабочая, чето подключил к привычному SPI0 и родную библиотеку -  тоже не пашет. Может поджег, когда тестил на SPI1. Теплая она какаято. Как всегда всё наспех делал на брэдборде и соплях. А нужно  тщательно делать, на плате стенд соберу и буду тестить. второй mcp2515 блин нету, ждать ее. 

 

Muslim222
Offline
Зарегистрирован: 26.09.2022

Всем привет. Заказал Нано оказались (328pb) . Не подскажите как заставить WDT работать на этих чипах. На старых Ардуино менял загрузчик Нано на Уно и все работало. А в (328pb)не возможно этого сделать . Помогите очень нужно решить проблему так как без таймера моя прошивка иногда зависает.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Прошейте Optiboot.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Komandir пишет:

Прошейте Optiboot.

поставить ядро miniCore, выбрать этот чип, там будет как раз Оптибут

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

А так вообще любой загрузчик можно прошить ! Изначально на китайских платах вообще Oldbootlader прошит и IDE видит плату как 328P...

fire_on_line
Offline
Зарегистрирован: 25.02.2015

Для одной поделки нарисовал плату под atmega328p но по ошибке были распаяны 328pb((((- п соответственно 3й пин притянут к земле, а 6й к питанию, если я правильно понимаю можно оставить как есть, о умолчанию же порт находиться в режиме входа без подтяжки? или всетаки откусывать ножки?

slider
Offline
Зарегистрирован: 17.06.2014

!!!!!!!  не стартует atmega328pb от внешнего кварца , косячные  atmega328pb проблема

Привет. 
Для тех у кого накопилась жменька непонятно запоротых атмега328пб

Выяснил их неприятную особенность , видимо не спроста производитель сделал Clock Failure Detection и переключение на внутренний ген 1мгц.  В обычных atmega328p не встречал таких пакостей с встающими колом устройствами, где всё завязано на тайминги.
   На редких чипах atmega328pb перестает запускаться генератор внешнего кварцевого резонатора, даже уже при понижении температуры до +10градусов С.   Походу это баг от изменения техпроцесса производства чипов представленый как фича. Генератор на внешний кварц не стабильно работает и отваливается. Ежели подтыкнуть осциллятор ( на XTAL1  или даже XTAL2), то сколько не морозь атмегу, она стабильно работает.

   Собственно выясняется это при понижении температуры (можно балончиком FREEZER побыстрому пшикнуть протестить) , или тыкнуть осцилом ( на щупе 1:10 естественно), из-за брака - слабого генератора , генерация срывается  , атмега останавливается (в отличии от здоровых атмег , где и колебания осцилом видны).    Если убрать и так пикушный кондер с XTAL1 , и уменьшить резистор с 1МОм до 100кОм , то подключенный осцил  на XTAL1 уже  не заваливает колебания , но при понижении температуры, генерация останавливается, устройство на атмеге не работоспособно. Толку то, если атмега и перейдёт на 1Мгц , то юарты, pwm,... и др. функции привязанные ко времени, уже не алё.

Реанимация atmega328pb : ( ибо прошивальщики по SPI  его не видят ) 
1. восстановить фьюзы 12в параллельным программированием с помощью  AVR Atmega fusebit doctor (HVPP+HVSP) version 2.14c , 2.13b  https://forum.cxem.net/index.php?/topic/146099-fuse-doctor-%D0%BD%D0%B5-%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%8F%D0%B5%D1%82-%D0%BF%D0%B0%D1%86%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%B2/&do=findComment&comment=3674002
  он записывает фьюзы 

HVPP MODE

Init programming...  DONE
Chip erase...        DONE
Read signature...    1E 95 16 
Found...             Atmega 328PB     

Read fusebits...     FF DF F7 
Lockbits...          FF (no lock)
Should be...         62 DF F7 
Writing...           DONE
Verifying...         62 DF F7  - OK!

Congratulation

атмега запустится на внутреннем генераторе 8мгц + делитель на 8  CKDIV8

2. Завести уже нормально на внутреннем генераторе (с задуманными фьюзами),   он уже так не боится прохладной погоды .
   В Arduino IDE выбрать плату  Atmega328PB Internal clock - 8MHz . 
https://github.com/watterott/ATmega328PB-Testing/raw/master/package_m328pb_index.json

avrdudeprog33 уже начинает видеть чип, и считывает:
avrdude.exe: safemode: Fuses OK (E:F7, H:DF, L:62)

 USBASP ставим перемычку на slow,
При прошивке загрузчика , Ардуино ИДЕ ругнется
 ***failed;  
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).
 
ну это и понятно , т.к. в файле C:\Users\...\AppData\Local\Arduino15\packages\m328pb\hardware\avr\1.1.4\boards.txt  там установлены фьюзы
atmega328pbic.name=ATmega328PB Internal Clock
atmega328pbic.bootloader.file=optiboot_m328pb.hex
atmega328pbic.bootloader.unlock_bits=0xFF
atmega328pbic.bootloader.lock_bits=0xCF
atmega328pbic.bootloader.low_fuses=0xE2
atmega328pbic.bootloader.high_fuses=0xD6
atmega328pbic.bootloader.extended_fuses=0xFD

 

 но загрузчик запишется, поправив фьюзы  .
 
 
avrdudeprog33 считывает:
 avrdude.exe: safemode: Fuses OK (E:F5, H:D6, L:E2)
 
blink через программатор заливается и работает правильно и стабильно !
 
 
// если что , фьюзы можно считать и прогой khazama , выбрав atmega168. 
 если прошивальщики не видят атмегу, то пробовать на USBASP поставить перемычку Slow,  перетыкнуть питание, чтобы атмега стартанула на 1мгц если повезет, в прошивальщиках пробовать выбирать USBASP(Slow) .   CodeVisionAVR  позволяет работать с atmega328pb и красиво видеть считываемые/программируемые фьюзы. 
 
 
//// остается ещё вариант использовать осциляторы ( активные кварцевые генераторы)  тип того https://jlcpcb.com/partdetail/361458-S3D16000000A20F30T/C387370  , или лепить генератор на элементе НЕ , с обычным кварцем в basic https://jlcpcb.com/partdetail/Yxc-X322516MLB4SI/C13738  . Выбирать в ардуиноИДЕ  плату  ATmega328PB External Clock , и используемую частоту 16, 20 мгц....
 Это если скетч только компилился на одном из других многочисленных надстройках , к примеру Amperka Iskra atmega38pb , где нет сходу выбора тактирования от внутреннего гена 8мгц.

действенный калькулятор фьюзов для atmega328pb  https://www.vagrearg.org/atpack/atpack.html   выбирать AtPacks - 0 ATmega , далее  atmega328pb

  

kalyan-m@mail.ru
Offline
Зарегистрирован: 05.12.2014

Ребят, подскажите, такая ситуация:

прошиваю в мини на 328pb ядро от миникор, через arduinoISP, все прошивается, скетчи нормально залетают если нажать «прошить через программатор», но ни как не могу через юарт заливать скетчи. 2 ноги поднял, кварц поменял, сам юарт работает, данные в порт передает.

принимать правда не пробовал. Загрузчик пробивал и с юарт0 и с юарт1 без розницы, порт на заливку скетчей не работает, не 0 не 1.

я так думал, что загрузчик для того и нужен, чтоб заливать скетчи не через IPS. 

slider
Offline
Зарегистрирован: 17.06.2014

Для atmega328pb ядер (вернее аддонов) для arduino IDE несколько, пробуйте другие. Штук 5 находил пару лет назад.  На сейчас  они уже поменялись.

были такие , что у одних бут не заливается из-за неправильных настроек, либо загрузчик кривой, не позволяет потом по uart заливать скетчи.

 

kalyan-m@mail.ru
Offline
Зарегистрирован: 05.12.2014

Попробовал несколько, заработал только миникор, посмотрел в комментариях на гитхабе, похоже проблема кроется в сигнале сброса контроллера, в цепи сигнала DTR нужно применять конденсатор большей емкости и защитный диод. Как попробую, отпишусь. Я просто думал может кто-то уже сталкивался с такой проблемой. Спасибо за ответ