PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einsteiger nutzt erstes mal Timer



The Man
19.12.2006, 19:01
Hallo da,

Erstmal eine prinzipielle Frage: wenn ich den Timer nutzte und eine Reaktion haben will, wenn der Timer voll ist, dann macht es doch keinen Sinn, das über einen Coparematch zu machen anstatt direkt das Overflow Flag abzufragen oder?

Ich will eine Schleife im ATTINY 26 programmieren, wo durch abfrage des TIFR diese Schleife in Abhängigkeit vom Overflow Flag über BREQ verlassen wird.
Sieht bis jetzt so aus:

ldi mp,00001101 (1)
out TCCR1A,mp (2) in 1;2 prescaler auf 1024 und Timer1 starten
loop: (3)
in mp,TIFR (4)
cpi mp,0b00000000 (5) in 4;5 prüfen, ob das Overflow Flag gesetzt ist
breq an (6)
rjmp loop (7) in 6;7=> wenn Overflow = 0 dann zu loop:

an:
usw....

geht das so?

danke,
The Man

izaseba
19.12.2006, 19:27
mit breq springst Du, wenn der Vergleich stimmt, also immer wenn Der Flag 0 ist, besser wäre hier brne.
Allgemein ist es keine gute Lösung, weil hier wird nicht nach dem TOV1 geschaut, sondern nach allen Flags
besser wäre es dann so:


sbis TIFR,(1<<TOV1)
brne loop


Vergiß aber nicht den TOV1 per Hand zu löschen, wenn der Überlauf stattgefunden hat.

Gruß Sebastian

The Man
19.12.2006, 20:10
Danke,

sbis TIFR,(1<<TOV1)
brne loop

ich muss zugeben, das verstehe ich nicht ganz, brne fragt doch das Z-Bit ab, aber sbis hat doch damit nicht´s zu tun oder?
Und die Bedeutung von (1<<TOV1) kenne ich auch nicht.

Justus

izaseba
19.12.2006, 20:18
Ups, ein Fehler meinerseits :oops:


sbis TIFR,TOV1
rjmp loop

So ist es richtig... sorry, hab etwas gepennt gerade

Gruß Sebastian

The Man
03.01.2007, 21:45
Hallo,

brauche nochmal Hilfe beim Timer (ATTINY26) :
ich kann doch z.B. um eine verzögerungsschleife zu realisieren in ein Register einen Wert laden und diesen über den cpi Befehl mit dem Timerwert
( TCNT1 ?) vergleichen und im Falle von Gleichheit mit BREQ weiterverzweigen, also einen RJMP überspringen.

Gesetzt den Fall das geht so, ist die nächste Frage, ob das eine Softwarelösung ist, im Gegensatz dazu, wenn man das Verhalten über TCCR1A bzw. B bei einem Comparematch regelt und somit dieHardware für einen arbeiten lässt?

Danke