Krystal u arduino uno a nano

butan
Příspěvky: 109
Registrován: 02 dub 2019, 07:06

Krystal u arduino uno a nano

Příspěvek od butan »

Zalistoval jsemm si v návodu k procesoru 328P, přečetl erratu, a vyšlo mi že arduino by vůbec nemělo fungovat. Poslední HW revize totiž nepodprují Full swing oscilátor, měly by se používat jen s 32kHz krystalem, nebo s externím oscilátorem.
Co si o tom myslíte?
A navíc se ten procesor snad už ani nevyrábí, jeho nástupce 328PB má jinak zapojené nožičky...
Lubor
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

Re: Krystal u arduino uno a nano

Příspěvek od DavidO »

Uno R3 i Nano mají oficiálně v zapojení 16MHz krystal. Jak mají v Arduinu nastavené pojistky z hlavy nevím, ale ATmega328P má Low power oscilator do 16MHz a výstup se nepoužívá, takže to by šlo. Kde jsi našel že by se měl používat ten 32kHz krystal? Workaround jen říká použij jiné zdroje hodin.
ATmega328P je ve stavu "In Production, Consider: ATmega328PB", takže se nejspíš vyrábí, ale už se mu nachyluje čas. Ale zatím není ani "not recommended for new design", takže to ještě chvíli potrvá. A navíc i po skončení produkce můžou mít výrobci desek dostatečnou zásobičku nasyslenou (a dostatečnou zásobičku fejků k tomu), takže to dost jistě ještě chvíli potrvá, než přestanou být. A až (než) to nastane, tak přejít na PB jednak nebude problém, a navíc tam jsou nový vlastnosti, který se můžou hodit. Kód je nahoru kompatibilní, takže třeba vyjde Arduino Uno R4 se stejně šmikmo pozicema konektorů pro shield, jen přeroutovaný pro PB a běžný uživatel to ani nepozná.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
butan
Příspěvky: 109
Registrován: 02 dub 2019, 07:06

Re: Krystal u arduino uno a nano

Příspěvek od butan »

Neviděl jsem strohý zákaz, ale
The Low-frequency Crystal Oscillator is optimized for use with a 32.768kHz watch crystal.
Dále se píše o nějakém omezení na ESR krystalu (navíc v pF), nevím co to je, a u údajích několika krystalů jsem ten údaj nenašel.
Našel jsem na netu nářky o tom, že někomu se oscilátor moduluje činností uartu.
A ta věc že se v erratě nenápadně objeví něco kde výrobce asi šetří cenu (myslím že tu funkcionalitu vyřadili záměrně, protože u nových procesorů tato volba zmizela).
Lubor
A můžeme o tom v sobotu podebatovat.
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

Re: Krystal u arduino uno a nano

Příspěvek od DavidO »

Low power oscilator! Kapitola 9.3.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
butan
Příspěvky: 109
Registrován: 02 dub 2019, 07:06

Re: Krystal u arduino uno a nano

Příspěvek od butan »

Máte parvdu, tak do 16MHz slibují že to chodit bude.
Zbývá dořešit co se vlastně stane když zvolím v CKSEL některou z nepodporovaných kombinací.
Jsou někde zveřejněné doporučená nastveni fusek pro ardouino? Aduino ide pokud vím s nimi nehýbe, tak tam jeho uživatelé stále mají původní nastavení.
Sám vlastním jen čínské klony, ale zkusím je vyčíst a zítra ukážu výsledky.
Lubor
Zatím jsem všude arduína doporučoval jako levnou hračku, aniž bych je sám někde vážně použil, tak si nechci naběhnout aby mi někdo z kolegů nepřišel vynadat :-)
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

Re: Krystal u arduino uno a nano

Příspěvek od DavidO »

Co se stane, když v čemkoli nastavíš nepovolenou nebo nedefinovanou kombinaci? To je prosté. Spustíš tím řetězovou reakci, otevře se černá díra, zhroutí světové burzy a umře jedno koťátko.

Fuses najdeš v (tam kde je Arduino)\hardware\arduino\avr\board.txt:
uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0xFD
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F

Zrušení full swing oscilator mode mi nepřipadá nijak fatální, naopak přišlo by mi poněkud divné vytahovat si hodiny z AVR pro jiný účel. Když už, tak bych si spíš udělal zdroj hodinového signálu vedle a posílal bych ho jak AVR, tak těm dalším zařízením. Ale možná jsem jen nepochopil návrháře tohohle mikrokontroleru - použil jste to někdo někdy takhle jako zdroj hodin ven?

Jestli Arduino na vážné použití, to je otázka na debatu tak u piva. Snad může být, ale po důkladném zvážení (resp. zvážnění ;-)). Hardwarově má svoje mouchy (např. Uno má blbě napájení apod.), softwarově to je slabé, především tedy velký problém knihoven (nejen co se týče efektivity, ale hlavně co se týče správnosti kódu), no a i samotné IDE tomu občas přispěje nějakou tou chybkou při předžvejkání .ino skriptu před kompilací. Ale to je prostě opět ta stará otázka, jestli Arduino použít pro něco vážnějšího, když tak nebylo navrženo - pamatujte "... pro studenty kretativního designu, aby se nemuseli příliš zabývat programováním a mohli snadno dělat ty svoje hejblátka a blikátka". Ale je to levný a snadno dostupný. Já to vidím tak, že na bastlení jo (a je velmi vhodné až místy nezbytné vědět, co to je zač a jak to funguje uvnitř), pro výuku programování nevim nevim, snad jo, ale velmi opatrně (a chtělo by to kvalitního učitele), pro byznys leda bez záruky a s vědomím, že to není úplně ono, a do průmyslu ne.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
butan
Příspěvky: 109
Registrován: 02 dub 2019, 07:06

Re: Krystal u arduino uno a nano

Příspěvek od butan »

Použil jsem rozvod hodin z proceoru do několika Canových řadičů, aby mi v nich pasovaly časové značky u přijímaných zpráv. A v arduinu bych klidně vyměnil krystal za 18.432MHz, kdybych měl jistotu že to poběží.
Teď mně nejvíc trápí identifikace verze mých arduín. Co se týče potisku, výrobce se k tomu nezná, kdosi mi radil že nějaký doplňkový potisk může být na bříšku procesoru, ale sundavat ho kvůli tomu nebudu.
A jestli chápu dobře návod, tak ta změněná signatura specifická pro K verzi je dostupná pouze po debugWIRE, který nemám. Lze to nějakým trikem vyčíst i LPM instrukcí?

K nastaveni fusek, mám v přihrádce čínské kusy se 512 a 2K boot flash. Ale i v tom 2K boot je jen do 512B kodu. Tak mně hned napadá jestli si arduino ide kontroluje, zda se program vejde do volné flashky?
CKSEL mám všude, i v souladu s arduinem 1111
Lubor
PS když nastavím nevhodné CKSEL a oscilátor mi chcípne, tak už to nepřeprogramuji ani po ISP je to tak? Asi to půjde spravit přivedením externích hodin...
butan
Příspěvky: 109
Registrován: 02 dub 2019, 07:06

Re: Krystal u arduino uno a nano

Příspěvek od butan »

Konečně dokážu vyčíst DebugWire ID.
Pokud někdo máte podezřelý nový procesor, na robodoupěti to můžeme zkusit identifikovat.
Lubor
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

Re: Krystal u arduino uno a nano

Příspěvek od DavidO »

butan píše: 02 lis 2019, 08:38 A jestli chápu dobře návod, tak ta změněná signatura specifická pro K verzi je dostupná pouze po debugWIRE, který nemám. Lze to nějakým trikem vyčíst i LPM instrukcí?
Nevím, jestli se tomu dá říct "trik", když to je napsaný v dokumentaci - ale viz datasheet, kap. 26.8.10 Reading the Signature Row from Software
butan píše: 02 lis 2019, 08:38 K nastaveni fusek, mám v přihrádce čínské kusy se 512 a 2K boot flash. Ale i v tom 2K boot je jen do 512B kodu. Tak mně hned napadá jestli si arduino ide kontroluje, zda se program vejde do volné flashky?
Ano, ale kontroluje to podle toho, co si o tom myslí samo IDE. Nastavení je v boards.txt, pro Uno takhle: uno.upload.maximum_size=32256
Když si tam nahraješ jiný (menší) Bootloader, tak by sis měl změnit i tohle, jinak ti Arduino ten prostor nevyužije (a nedovolí sketch nahrát).
butan píše: 02 lis 2019, 08:38 PS když nastavím nevhodné CKSEL a oscilátor mi chcípne, tak už to nepřeprogramuji ani po ISP je to tak? Asi to půjde spravit přivedením externích hodin...
Půjde to přeprogramovat tak, jak to nastavení fuses povolí... takže když si pod sebou uřízneš větev, vem si žebřík. Buď připojíš správné hodiny, nebo to uděláš třeba paralelním "high voltage" způsobem viz manuál kap. 27.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Uživatelský avatar
fulda
Příspěvky: 1359
Registrován: 04 led 2016, 17:18

Re: Krystal u arduino uno a nano

Příspěvek od fulda »

DavidO píše: 04 pro 2019, 23:27
butan píše: 02 lis 2019, 08:38 PS když nastavím nevhodné CKSEL a oscilátor mi chcípne, tak už to nepřeprogramuji ani po ISP je to tak? Asi to půjde spravit přivedením externích hodin...
Půjde to přeprogramovat tak, jak to nastavení fuses povolí... takže když si pod sebou uřízneš větev, vem si žebřík. Buď připojíš správné hodiny, nebo to uděláš třeba paralelním "high voltage" způsobem viz manuál kap. 27.
Já bych jen poukázal na "žebřík", který používám. Fusebit Doctor 2 je taková jednoduchá mazačka. Pokud si nastavím nějakou hovadinu, které se nemohu jinak zbavit, tak tímhle prostě smáznu celej procesor a začnu znovu.
Nejedná se jen o CKSEL, lze si pokazit třeba práci s resetem.
Naposledy upravil(a) fulda dne 05 pro 2019, 15:34, celkem upraveno 1 x.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Odpovědět