Hallo allerseits, ich habe ein kleines problem mit meinem Timer. Ich verwende den Timer im compre match modus aber ohne interrupts. Das Funktioniert auch das erste mal, dann wird ein Bit im Interruptregister gesetzt. Das 2 mal wenn ich den Timer aufrufe funkieoniert er nicht mehr so wie von mir vorgesehen. Wie kann ich ein Bit TIFR löschen. Im Tutorial steht das ich es mit einer logischen 1 löschen kann. Mit welchem Befehl kann ich auf das TIFR Register zugreifen?? Wenn ich es mit SBR versuche kommt die Fehlermeldung unkown register!! mein Programm ist im Anhang (als asm) ! P.S ich benutze den ATMega16
1. Für IO-Register gibts den Befehl sbi 2. Der funktioniert aber mit TIFR nicht, weil TIFR nicht bitaddressierbar ist. 3. out TIFR, (1 << OCF1A) Damit sollte es gehen.
danke für die schnelle Antwort. Leider funktioniert das auch nicht. Kommt die gleiche Fehlermeldung (invalid Register) kann das aber auch am OCF1A liegen? Ich verstehe den befehl leider nicht. (1<<ocf1a)???
man kann natürlich keine Konstanten direkt in ein I/O-Register schreiben... ldi r16, (1 << OCF1A) out TIFR, r16 das sollte jetzt aber funktionieren :-)
@crazy horse: Hast natürlich recht. Hab net aufgepasst. @Marc (1 << OCF1A) schiebt eine binäre '1' (also 0b00000001) um 'OCF1A' Stellen nach links. OCF1A ist normalerweise in der ...def.inc-Datei definiert. ('ldi r16, 0b00010000' ist das gleiche wie 'ldi r16, (1 << OCF1A)'). Gruß Johnny
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.