- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 6 von 6

Thema: Interrupt jede Millisekunde

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Die Werte sind nicht initialisiert.

    Zu: OCR0A = 200-1; // to get 200 steps

    Ich glaube, das -1 ist falsch. Bei 200 wird das Zählregister mit 0 beschrieben und dann der Interrupt ausgeführt. Beim Zählen der ms schreibst du ja auch bei 1000 die 0 rein und nicht schon bei 999:

    In CTC mode the counter is cleared to zero when the counter value (TCNT0) matches the OCR0.
    Hier ist atmel scheinbar etwas ungenau, den zu folgender Beschreibung für den "Normal Mode" finde ich keine Entsprechung beim "CTC":
    (In normal operation) the Timer/Counter Overflow Flag (TOV0) will be set in the same timer clock cycle as the TCNT0 becomes zero.

    Was ist daran "krumm"?
    32768 kHz
    http://www.google.de/search?q=frequenz+uhrenquarz

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von Torrentula
    Registriert seit
    10.10.2009
    Ort
    Procyon A
    Beiträge
    355
    Die Uhr läuft auch mit berichtigtem Wert für OCR0A = 1999 zu schnell und laut allgemeiner Formel für den CTC Modus sollte dieser Wert bei einem Prescaler von 8 und einer Quartzfrequenz von 16MHz eine Interrupt-Frequenz von 1000Hz also jede Millisekunde ergeben.

    MfG

    Torrentula

    EDIT: Damfino bringt die Lösung einfach mal Prescaler 64 probieren... macht für OCR0A dann 249.

    Kann ich die Ausgaben mehrerer itoa() in einen String kombinieren den ich dann an das 7 Segment display sende, so dass mir Stunden + Minuten angezeigt werden? wenn ich die Daten nämlich nicht an einem Stück sende kommt Mist raus.
    Geändert von Torrentula (20.10.2011 um 17:46 Uhr)
    MfG Torrentula

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von radbruch
    Ich glaube, das -1 ist falsch.
    Nein, das ist richtig. Die Beschreibung im Datenblatt ist zwar etwas missverständlich, aber die Formel ein Stück weiter ist dafür absolut eindeutig.


    Zitat Zitat von Torrentula
    Die Uhr läuft auch mit berichtigtem Wert für OCR0A = 1999 zu schnell
    Natürlich. Wie soll denn auch ein 8-Bit-Zähler bis 1999 zählen können?
    MfG
    Stefan

Ähnliche Themen

  1. ATmega644P Millisekunde genau?
    Von HeyHey im Forum AVR Hardwarethemen
    Antworten: 7
    Letzter Beitrag: 18.03.2011, 19:10
  2. Timer/Interrupt Problem. LED soll jede Minute blinken
    Von dg im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 18.05.2007, 20:04
  3. Jede Sekunde ein Timer Interrupt
    Von Johannes G. im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 06.10.2006, 16:52
  4. Gibt es empfängermodule für jede Wellenlänge?
    Von Katja im Forum Sensoren / Sensorik
    Antworten: 3
    Letzter Beitrag: 03.06.2006, 22:58

Berechtigungen

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

12V Akku bauen