Interrupts Atmel mega 16

Gast #100330
Lesenswert?
• ▲
▼
Hi
 ich muss ein interrupt schreiben das immer nach einer bestimmten Zeit
 eine Prozedur aufruft um zwei radencoder abzutasten das hab ich mal
 so verwirklicht:

 outp((1<<WGM01)|(1<<CS02)|(1<<CS00),TCCR0);
 outp((1<<OCIE0),TIMSK);
 outp(121,OCR0);

 Mein Problem ist dass ich im Interrupt nur auf den einen Radencoder
 zugreifen kann aber der andere nicht abgefragt werden kann woran kann
 das denn liegen oder wie müsste mein Code richtig heißen
Gast #100331
Lesenswert?
• ▲
▼
Warum legst du die beiden Radencoder nicht einfach auf INT0 bzw. INT1.
Bei Pegelwechsel bedingt durch die Radencoder wird automatisch ein
Interrupt ausgelöst. In der ISR muss dann nur eine entsprechende
Variable inkrementiert werden.
Finde ich besser, als Polling mittels eines Timers.

Gruss, Alex
Gast #100332
Lesenswert?
• ▲
▼
Hi!

>Mein Problem ist dass ich im Interrupt nur auf den einen Radencoder
>zugreifen kann aber der andere nicht abgefragt werden kann woran kann
>das denn liegen oder wie müsste mein Code richtig heißen

Das Versteh ich nicht so ganz. Wo sind denn die Encoder angeschlossen?
Btw: outp/inp etc. sind deprecated, siehe:

http://www.nongnu.org/avr-libc/user-manual/deprecated.html

Gruß,
Patrick...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren