-         

Ergebnis 1 bis 5 von 5

Thema: Einsteiger nutzt erstes mal Timer

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.06.2006
    Beiträge
    473

    Einsteiger nutzt erstes mal Timer

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    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:
    Code:
    sbis TIFR,(1<<TOV1)
    brne loop
    Vergiß aber nicht den TOV1 per Hand zu löschen, wenn der Überlauf stattgefunden hat.

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.06.2006
    Beiträge
    473

    TOV

    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

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Ups, ein Fehler meinerseits
    Code:
    sbis TIFR,TOV1
    rjmp loop
    So ist es richtig... sorry, hab etwas gepennt gerade

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.06.2006
    Beiträge
    473
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •