atmega 64 - obsluha int0 asi nestíhá

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
32megac

atmega 64 - obsluha int0 asi nestíhá

#1 Příspěvek 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?
Uživatelský avatar
Ragnol
Příspěvky: 232
Registrován: 09 lis 2005, 00:00
Kontaktovat uživatele:

#2 Příspěvek od Ragnol »

Taktovací frekvence procesoru ? Kolik strojovejch cyklů trvý vykonání přerušení ? ?
32megac

#3 Příspěvek 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.
Uživatelský avatar
Ragnol
Příspěvky: 232
Registrován: 09 lis 2005, 00:00
Kontaktovat uživatele:

#4 Příspěvek od Ragnol »

vyčíst z asembleru nebo odsimulovat
32megac

#5 Příspěvek od 32megac »

Já to programuju v céčku. A odsimulovat to prakticky nemám kde.
Uživatelský avatar
Ragnol
Příspěvky: 232
Registrován: 09 lis 2005, 00:00
Kontaktovat uživatele:

#6 Příspěvek 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.
32megac

#7 Příspěvek od 32megac »

Budu se snažit spustit to pod wine. Jedu totiž pod linuxem.
32megac

#8 Příspěvek od 32megac »

Tak AVR Studio mi nejede. Musí se to vyřešit nějak jinak. ??
Uživatelský avatar
zmatkar
Příspěvky: 4
Registrován: 11 dub 2006, 00:00
Bydliště: Plzen
Kontaktovat uživatele:

#9 Příspěvek 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.
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#10 Příspěvek 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.
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#11 Příspěvek 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.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“