Arduino - pretaktovanie
Napsal: 23 dub 2023, 02:05
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á![Very Happy :D](./images/smilies/icon_biggrin.gif)
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![Very Happy :D](./images/smilies/icon_biggrin.gif)
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ší"
/aspoň pri PIO cez IRQ, DMA radič sa mi na takú hovadinu fakt riešiť nechce/
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á
![Very Happy :D](./images/smilies/icon_biggrin.gif)
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
![Very Happy :D](./images/smilies/icon_biggrin.gif)
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ší"
![Very Happy :D](./images/smilies/icon_biggrin.gif)