Stránka 1 z 1
atmega 64 - obsluha int0 asi nestíhá
Napsal: 08 lis 2008, 14:17
od 32megac
Ahoj. Mám motorek s enkodérem otáček. Ten mám píchlej na int0. Pokud jsou malé otáčky tak je to ok, i když mi to neukazuje "skutečnou rychlost", ale to by se dalo pořešit. Ale při vyšších otáčkách indikovaná rychlost prudce klesá skoro až k nule. INT0 už nestíhá? Při polovičních otáčkách mám asi 1000 přerušení za sekundu při sbi(MCUCR, ISC00). Jak se dá tahle situace vyřešit?
Napsal: 08 lis 2008, 15:50
od Ragnol
Taktovací frekvence procesoru ? Kolik strojovejch cyklů trvý vykonání přerušení ? ?
Napsal: 08 lis 2008, 16:06
od 32megac
Zaprvé omylem jsem uvedl špatně název mcu. Je to atmega16. 14,745MHz je jeho frekvence. Jak mám zjistit jak dlouho trvá to přerušení? V každým ISR(INT0_vect) provedu ajaja++; a každou sekundu přečtu a nastavím na nulu a tak pořád dokola.
Napsal: 08 lis 2008, 16:36
od Ragnol
vyčíst z asembleru nebo odsimulovat
Napsal: 08 lis 2008, 17:54
od 32megac
Já to programuju v céčku. A odsimulovat to prakticky nemám kde.
Napsal: 08 lis 2008, 18:38
od Ragnol
32megac píše:Já to programuju v céčku. A odsimulovat to prakticky nemám kde.
já vím, že to programuješ v céčku ale každej dobrej kompilátor dává i výstup v asembleru. A odsimulovat třeba v avr studiu.
Napsal: 08 lis 2008, 18:45
od 32megac
Budu se snažit spustit to pod wine. Jedu totiž pod linuxem.
Napsal: 08 lis 2008, 23:14
od 32megac
Tak AVR Studio mi nejede. Musí se to vyřešit nějak jinak. ??
Napsal: 14 lis 2008, 20:29
od zmatkar
32megac píše:Tak AVR Studio mi nejede. Musí se to vyřešit nějak jinak. ??
Zkusil bych v mainu posílat pulzy na jeden pin a tam bych pích osciloskop a zjišťoval, zda se mi blikání zpomaluje a o kolik.
Napsal: 15 lis 2008, 00:59
od Jenda_KL
...
nebo na začátku INT nastavit flag a na konci ho rušit.
ALE ještě před nastavením ho testovat a kdyby byl, tak tu chybu sw ošetřit.
Nebo na konci INT resetovat a spustit timer a na začátku INT se zeptat na nenulovost.
Napsal: 15 lis 2008, 01:05
od Jenda_KL
jak vypisuješ tu informaci? Protože pokud v mainu a MCU by nevyšlo z INT, tak by se nic nevypsalo.
Pokud je to tak, je to spíše v připojení enkodéru.