pravě si lámu hlavu nad výběrem vhodné ATmegy resp. nějakou
co by byla schopna pracovat s frekvenci krystalu 20MHz, disponovala
alespon třemi I/O branami (piny 0:7 pro všechny brány) a pokud možno
DIL provedení.
Prozatím jsem našel pouze atmega644.
Poradíte někdo s dalšími variantami?
Díky , takovýhle ucelený přehled jsem přesně hledal.
20MHz: Bojím se aby procesor stihnul provést všechny instrukce. Snažím se totiž každých 10us (100kHz) měnit hodnoty na dvou portech. Raději bych volil vyšší frekvenci pro případ rezervy, kdybych musel ještě přidávat nějaké instrukce do smyčky vykonávané v 10us.
Nyní se pokouším realizovat přerušení generované pro již zmíněných 10us pomocí timeru, včera mě ale napadlo že by možná nebylo od věci zkusit signál 100kHz (generované např. NE555) přivádět na vstup vnějšího přerušení (INT) a tím mít zaručenou přesnou periodu 10us. Mýslím si že bude tak přerušení generováno přesněji nežli pomoci timeru. Je tento můj úsudek správný?
Externím přerušením nic nezískáš. Přesnost timeru je lepší než 555 a reakci neovlivníš stejně jako dobu pro vstup do přerušení.
Na vstup do přerušení počítej 4-6 IC, pokud to bude v C, tak dalších dobrech 5*2 IC na push a to samé na opuštění přer. Zápis dvou portů z RAM by mohlo dát 8 IC, kdyby byly data v registrech tak méně. Takže by se to mohlo odbýt ve 40ti cyklech. Čísla jsou jen orientační, nemám v hlavě IS avrka. Při 20MHz a 10us máš 200 IC . V simulátoru si to snadno změříš přesně.
Ty 2-4 instrukce na us, který získáš použitím rychlejšího mcu málokdy ovlivní funkčnost/nefunkčnost programu. A pokud by ovlivnily, tak už je to na ASM .
piityy: trošku jsem se podival na listing s asm a všechno propočítal (co dopočtu instrukci a času potřebného pro jejich vykonani), musím ti dát za pravdu stačí bohatě 8MHz kmitočet interního oscilátoru. Měl jsem zbytečné obavy a také nepatrně podcenoval uC , po zvažení všecho vybírám mega162 .
lou: diky za tip na obchod , ale vzhledem k vyše uvedenému již asi nebude potřeba