Arduino - pretaktovanie

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Zpráva
Autor
nixdorf
Příspěvky: 540
Registrován: 06 kvě 2017, 02:00

Arduino - pretaktovanie

#1 Příspěvek od nixdorf »

Hoši, skúšali ste niekto pretaktovať svoje Arduino?
Ja tu akurát experimentujem so svojim hókuspókus disketovým radičom a 2,88MB mechanikou z IBM PS/2, ktorá požaduje po radiči, aby pri prenosovej rýchlosti dát 1Mbps vybavila hardwarové prerušenie (IRQ), od nábežnej hrany INT, do šiestich mikrosekúnd, inak dochádza k pretečeniu - a nejak ten môj kód nestíha ani po prepísaní do asm s klauzulou ISR_NAKED. Ako vidíte, každá mikrosekunda mi je drahá :D
Pre ilustráciu, už len samotný arduiňácky céčkový overhead ISR trval viac než 10us pri vstupe do funkcie. Dobu trvania toho špalku neviem jak zmerať, prerušenie od časovačov mám zakázané, uvažujem teď jedine nastaviť príznak na nejaký pin na začiatku a konci (strata pár stovák ns) a pozreť škopíkom.

Tak som zobral svoju Mega2560 dosku (made in China, nie Italy) osadenou ATMEGA2560 16U-TH, zdrojáky bootloadera - pre Megu sa používa STK500v2, ja buildujem z arduiňáckeho adresára, cez ich toolchain a make, testované kmitočty s kryštálmi 18,432MHz, 20MHz, 22,1184MHz a 24MHz.
Pôvodnú Mega2560 dosku som mal osadenú 16MHz keramickým rezonátorom s odporom 1M paralelne - ten šiel preč. Dva kondenzátory 15p proti pôvodnému rezonátoru a zemi, boli ponechané. Nestačí iba vymeniť kryštál, musí sa zbuildovať a napáliť nový bootloader cez ICSP, pretože inak odmietlo MCU sériovú komunikáciu cez USB, takže aj nahrávanie sketchov. Okrem nového bootloadera sa musí upraviť f_cpu (vytvoriť nová konfigurácia) do boards.txt, inak sa rozbijú časovacie funkcie.
Ako programátor ICSP používam druhé Arduino (Uno) so zadrátovaným napájaním, MOSI, MISO, SCK a D10 na RESET ICSP Megy2560 - programátor šikmák TL866 mi holt Mega2560 nepodporuje.

Výsledky pokusu - Mega2560 ešte plne funkčná pri 18,432MHz a 20MHz, pri 22,1184MHz už zlyhávala verifikácia flash pamäte po USB uploade sketche, pri 24MHz už odmietal reagovať MCU, skeč blikanie ledkou - zato kryštálový oscilátor ešte kmital. Mal som vyskúšať motivačne poštekliť VCC/VREF :D
Uvažujem, že by som spustil nejaký benchmark/dhrystone test na porovnanie, ale nebudem tu spamovať "špalkami", ak sa nikto nechytí.
Plus čo som čítal i na fórach, tak také Mega328P (Uno) ide potiahnuť i po 30MHz - podľa datasheetu 328P ide oficiálne full swing oscilátorom až po 20MHz, kdežto 2560 papierovo do 16MHz, ale ešte som z toho 20MHz vytrieskal. Otázne je to s dlhodobou spoľahlivosťou - nie som až taký odborník do tejto platformy...
A ešte jeden vtip - samotný FDC čip je taktovaný kryštálom na 24MHz. Ten pocit, keď je mikroprocesor "pomalší" :D /aspoň pri PIO cez IRQ, DMA radič sa mi na takú hovadinu fakt riešiť nechce/
Přílohy
Mega2560_20MHz.jpg

Uživatelský avatar
pocitujlasku
Příspěvky: 1757
Registrován: 12 pro 2005, 01:00

#2 Příspěvek od pocitujlasku »

a preco by som mal pretaktovavat arduino, ked existuju vykonnejsie verzie za par drobnych. A ak by som chcel vyuzit plny vykon mcu, tak tam nedam arduino, ale C, alebo asembler.
No vidis, a tak si sa bal

nixdorf
Příspěvky: 540
Registrován: 06 kvě 2017, 02:00

#3 Příspěvek od nixdorf »

pocitujlasku píše:tak tam nedam arduino, ale C
:D Na chleba nenatrem jahodový džem, ale džem. Vďaka za tip!
Ten "asembler" mi teda vôbec nenapadol. Neviem čo je "mov", to bude isto niečo s olympijským výborom, že?

Uživatelský avatar
Valdano
Příspěvky: 695
Registrován: 01 led 2023, 01:00
Bydliště: Česká Lípa

#4 Příspěvek od Valdano »

pocitujlasku píše:A ak by som chcel vyuzit plny vykon mcu, tak tam nedam arduino, ale C, alebo asembler.
Tato formulace vypadá jako by se kombinace Arduino + C nebo assembler vylučovala, ale to není pravda. Arduino je HW platforma zatímco C nebo assembler jsou programovací jazyky, které se k programování Arduina dají použít. Arduino IDE podporuje psaní programů v jazyce C i v assembleru viz tento odkaz. Takže kombinace Arduino + C nebo assembler se rozhodně nevylučuje. :wink:
Naposledy upravil(a) Valdano dne 23 dub 2023, 18:25, celkem upraveno 2 x.

nixdorf
Příspěvky: 540
Registrován: 06 kvě 2017, 02:00

#5 Příspěvek od nixdorf »

Samozrejme, ja v tej IRQ framework Arduina obchádzam úplne, keyword ISR_NAKED je priamo avr-libc, aby nevytváral stack frame - teda aby som ušetril cykly miesto ukladania registrov na stack, ktoré mi IRQ rutina neničí. Ale ani tým som si nepomohol, takže si hovorím, jedine už iba skúsiť overclock. Beztak, 2,88MB floppyny sú niečo tak exotické a bohom zabudnuté, že mi na ten zvyšok Mega2560 plne postačuje, skôr som chcel zistiť, či si tým pomôžem. (Zatiaľ neviem posúdiť, tieto mechaniky vyžadujú 1K pull-upy, takže na to spravím ešte jednu DPS...)

Tá paralela s džemom - Arduino (jeho softwarová časť) je iba framework/API, napísaná v C

Uživatelský avatar
Valdano
Příspěvky: 695
Registrován: 01 led 2023, 01:00
Bydliště: Česká Lípa

#6 Příspěvek od Valdano »

Přetaktování Arduino UNO / ATmega328P pro fajnšmekry z 20 na 65 MHz s chlazením tekutým dusíkem -196 °C (popis k tomu včetně video ukázek), ale to už je opravdu jen pro hračičky, kteří neví co s volným časem a mají několik litrů kapalného dusíku nebo si ho zajdou koupit třeba k prodejci viz tento odkaz (Pouze k osobnímu odběru. Nelze zasílat přepravní službou ani poštou). :D

Z hlediska praktického využití to není moc užitečné, ale jen pro zajímavost níže google překlad části textu z toho webu.
Po všech těchto přípravách - vše zapnuto, pomalu nalévám tekutý dusík... a najednou podsvícení LCD slábne a za pár sekund - samotná deska přestala fungovat. Při zvednutí desky nad hladinu kapalného dusíku jsem stěží dosáhl ~45Mhz, ale tento výsledek nebyl stabilní, protože teplota kolísala.

Když jsem pozoroval, jak deska po ponoření do kapalného dusíku přestane fungovat a téměř okamžitě po mírném zahřátí zas funguje, došlo mi, že to může být chyba detekce brown-out. Vypnul jsem detekci brown-out - a voilà - samotná deska začala fungovat perfektně i když byla ponořena do tekutého dusíku. Problém s podsvícením LCD tu ale stále byl. Zdálo se, že když mi docházely piny VCC na Arduinu, zapojil jsem pin podsvícení do +3,3V konektoru na Arduinu, který je napájen z lineárního regulátoru. Očividně tento lineární regulátor měl svůj ochranný obvod, který fungoval nezamýšleným způsobem nebo jeho výstupní napětí bylo příliš nízké na to, aby LED fungovala.

Stabilní to bylo asi okolo 50 Мhz a začal jsem zvyšovat napětí. Zdálo se, že nad 8 V systém začíná ztrácet stabilitu a 7.5-8V umožňuje dosáhnout nejvyšší taktovací frekvence 65.3Mhz. Pro srovnání, pokojová teplota a napájení 5V maximální stabilní frekvence byla 32,5Mhz, při 8V - asi 37Mhz.

Udělal jsem 1 hodinový test stability na 65Mhz - a nebyly zjištěny žádné chyby. Během tohoto procesu byly spotřebovány 3 litry kapalného dusíku.

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#7 Příspěvek od Celeron »

No a co ESP32? Tensilica LX6 má o trochu míň in/out ale maximálně 600 MIPS. ATmega328 i 2560 má jen 16-20 MIPS. To je rozdíl jako kráva. :wink:
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#8 Příspěvek od Mahoney »

Mám pocit že to chce na AVR, proto napsal sem do této sekce.

@nixdorf: Zkus AVR32DD28, ten jde i z Arduino prostředí a je na 24 MHz úplně od výrobce (a možná půjde ještě popotáhnout).

nixdorf
Příspěvky: 540
Registrován: 06 kvě 2017, 02:00

#9 Příspěvek od nixdorf »

diky, vyskúšam - musím ísť s dobou aj ja :D

Uživatelský avatar
pocitujlasku
Příspěvky: 1757
Registrován: 12 pro 2005, 01:00

#10 Příspěvek od pocitujlasku »

Valdano píše:Tato formulace vypadá jako by se kombinace Arduino + C nebo assembler vylučovala, ale to není pravda.
Ok, tak som to zle napisal. Kludne mozem dat boot arduina, ale samotny program bude C, alebo asm.
Ja som to skor myslel tak, ze samotny jazyk arduina je sice super na pisanie, ale nabaluje tam zbytocne vela bordelu.
nixdorf píše: :D Na chleba nenatrem jahodový džem, ale džem. Vďaka za tip!
Neviem čo je "mov", to bude isto niečo s olympijským výborom, že?
na chleba nenatries dzem s kopou prisad, ale cisty dzem.
No vidis, a tak si sa bal

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#11 Příspěvek od Celeron »

Mahoney píše:Mám pocit že to chce na AVR, proto napsal sem do této sekce.

@nixdorf: Zkus AVR32DD28, ten jde i z Arduino prostředí a je na 24 MHz úplně od výrobce (a možná půjde ještě popotáhnout).
A ESP32 na Arduinu IDE snad nejde? Stojí míň než 2560 a na desce MH ET LIVE ESP32 MINIKIT mě chodí většina z toho, co na 328 nebo 2560.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
Valdano
Příspěvky: 695
Registrován: 01 led 2023, 01:00
Bydliště: Česká Lípa

#12 Příspěvek od Valdano »

pocitujlasku píše:Ja som to skor myslel tak, ze samotny jazyk arduina je sice super na pisanie, ale nabaluje tam zbytocne vela bordelu.
To je daň za pohodlí v podobě už předpřipravených knihoven, které jsou k dispozici v rámci Arduino IDE. Nicméně případ od případu existují i pro Arduino možnosti použít různé jiné optimalizované knihovny, které tolik balastu zas nemají a nebo si to může člověk od základu napsat pro Arduino všechno sám a třeba i všechno v assembleru maximálně optimalizované a s minimem bordelu, ale to dělá dnes už asi jen málokdo. Nicméně není to nemožné. Takže použit Adruino rozhodně neznamená, že by všechno pro něj nešlo napsat maximálně optimálně a s minimem bordelu třeba právě jen v tom assembleru a bez knihoven, které jsou k dispozici v rámci Arduino IDE. Jen je to mnohem pracnější, ale kdo zvládá assembler a není pro něj problém si všechno k tomu napsat sám tak to může udělat i s Arduinem.

Uživatelský avatar
pocitujlasku
Příspěvky: 1757
Registrován: 12 pro 2005, 01:00

#13 Příspěvek od pocitujlasku »

Ved ano, nesmieme zabudat na hlavny ucel arduina, ktory bol (je) pritiahnut ludi k programovaniu tym, ze to bude jednoduche.
Ja tiez pouzivam arduino na rozne blbosti, ktore mam hotove za chvilu. Ale na serioznejsie veci uz siaham po C.
Ono je to tak so vsetkymi prog. jazykmi. Vykon nielen mcu isiel rapidne hore, ceny su nizke, tak vzhladom na pomer casu/ceny je vyhodnejsie nabuchat, aj ked neoptimalny program za kratky cas, ako riesit dlhe hodiny jeho optimalizaciou.
No vidis, a tak si sa bal

Uživatelský avatar
bdn
Příspěvky: 436
Registrován: 16 led 2020, 01:00

#14 Příspěvek od bdn »

Novější arduino every jede na 20MHz. Chip ATmega4809. Obsahuje CCL (configurable custom logic) a event systém. Některé operace lze tak udělat mimo CPU samotné.
https://forum.arduino.cc/t/about-arduin ... ry/1002910

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#15 Příspěvek od ZdenekHQ »

Takovej AT89C2051 šel přetaktovat ze 24MHz až na 75MHz a nepadal. Jeden tady dlouhý léta používám přetaktovanej na 48MHz.

Ovšem to je triviální jednočip, tady ty orloje na to už budou citlivý a na hodiny obzvlášť.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“