mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TIMER


Autor: Marc (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)???

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :-)

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.