Forum: Mikrocontroller und Digitale Elektronik Timer Interrupt mit Atmega 48


von Jim2k (Gast)


Lesenswert?

Hallo,

ich habe schon wieder ein Problemchen.
Und zwar möchte ich den 16 Bit Timer des Atmega 48 dazu bringen, den 
Interrupthandler aufzurufen.

Folgendes habe ich eingestellt:

TCCR1B |= (1<<CS11) | (1<<WGM12) ;

OCR1A = 100;


Wobei das WGM12 Bit in der Tabelle des Datenblatts unter TCCR1B steht, 
und in der Beschreibung unter der Überschrift TCCR1A.



Jetz sollte er doch eigentlich wenn er bis 100 gezählt hat, sich 
aufrufen, oder?

Beim Atmega 8535 habe ich es damit zum laufen gebracht:


TCCR2 = (1<<CS20) | (1<<CS22) | (1<<WGM21);
TCNT2  = 0;
OCR2  = 15;

Muss beim Atmega48 der TCNT1 Wert auf 0 zurück gesetzt werden oder wo 
liegt das Problem.
Die Schaltung ist leider sehr schwer zugänglich, und von daher schwer zu 
flashen, da es einen extremer aufwand ist. Somit kann ich nicht alle 5 
Minuten testen :/

von Jim2k (Gast)


Lesenswert?

Ach ja, der Interrupt Handler fehlt natürlich, den habe ich so 
geschrieben:

ISR(TIMER1_COMPA_vect)
{
}



Also weiß jemand wo das problem liegt?

von spess53 (Gast)


Lesenswert?

Hi

Und hast du auch in TIMSK1 den Interrupt freigegeben?

MfG Spess

von Jim2k (Gast)


Lesenswert?

Oh man, ich hätte in der main() also nur

TIMSK1 |= (1<<OCIE1A); reinschreiben müssen?

Ok dann probiere ich es nochmal.

Danke :)

von Jim2k (Gast)


Lesenswert?

Jo, das funktioniert:) Danke nochmal

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.