Timer (1 Sekunde) in CodeVision

Gast #230141
Lesenswert?
• ▲
▼
Hallo!

Ich möchte mir gerne bzw. ich habe mir eine Uhr in CodeVision
programmiert. Nun habe ich leider das Problem mit den
Timer-Einstellungen. Kann mir vielleicht jemand weiterhelfen, mit
welchen
Einstellungen man möglichst eine Sekunde generieren kann?

Vielen Dank schon mal!

Michael
Gast #230143
Lesenswert?
• ▲
▼
Ich habe eine ms generiert. Habe im Wizard eine Freuquenz von 57,5 kHz
eingegeben und einen Hex-Wert (C7) ausgerechnet. Wenn ich das ganze
aber in meinem Programm mit 1000 multipliziere, habe ich einen ganz
schön großen Fehler. Jetzt würde ich eben gern 1 Sekunde generieren,
weiß aber nicht so ganz, wie ich das hinbekommen soll :-)
Persönliche Seite #230145
Lesenswert?
• ▲
▼
am genauesten bekommst du das mit einem externem uhrenquarz hin, den
timer laesst du dann auf diesem quarz triggern..

Hier der code in c

//Interupt Timer 2 overflow
SIGNAL (SIG_OVERFLOW2) {
  sekunden++;
}


  //Timer2 Initalisieren Interupt jede Sekunde Externer Uhrenquarz
  ASSR = (1<<AS0);          //Externer Takteingang
  TCCR0 = (1<<CS02) | (1<<CS00);
  TCNT0 = 0x00;
  OCR2 = 0x00;            //Compare Register
  TIFR = (1<<OCF2) | (1<<TOV2);
  TIMSK = (1<<TOIE2);
  sei();

ist für einen mega16 bei anderen kann es sein, dass der timer
ungestellt werden muss bei verwendung eines externen quarzes

Gruss Jens
Gast #230150
Lesenswert?
• ▲
▼
@Peter:

Ich habe das gleiche Problem wie Michael. Habe mir Dein Programm
angesehen, nur funktioniert es mit dem CVAVR leider nicht.
Aber vielleicht kannst Du mir ja bei der Berechnung helfen, da Du dich
mit den Timern wohl besser auskennst. Ich sage Dir mal, wie ich die
Zeiten bzw. Einstellungen berechne, vielleicht kannst Du mir dann
helfen, eine Sekunde daraus zu bilden:

Es stehen folgende Frequenzen zur Verfügung: 3,68 MHz, 460 kHz, 57,5
kHz, 14,375 kHz, 3,59 kHz

Ich wähle 3,59 kHz. 1 Takt = 1 / 3,59 kHz = 278,26 Mikrosekunden

256 Takte: 278,26 mikrosek. * 256 = 71,23 ms

Ich möchte aber z.B. 50 ms bilden:

256 Takte ---> 71,23 ms
3,59 Takte ---> 1 ms
179,69 Takte ---> 50 ms

256 - 179,69 = 76,3 Takte ---> in Hex: 4C

Das wären die Einstellungen für den CVAVR. Jetzt hab ich einen
Basistakt von 50 ms. Wenn ich das jetzt in meinem Programm mit 20
multipliziere, um auf meine Sekunde zu kommen, hab ich ja praktisch 20
mal eine Abweichung in meiner Sekunde.
Schon mal Danke für Deine (evtl. Eure) Hilfe!

Gruß vom Rolf!
Gast #230151
Lesenswert?
• ▲
▼
Ich denke, daß Du da einen 16-Bit Timer brauchst, weil die die 256 Takte
nicht ausreichen, wie Du den in CodeVision programmierst, kann Dir aber
vielleicht jemand anderes sagen...

Grüßle aus dem Schwabenländle!
Gast #230152
Lesenswert?
• ▲
▼
@Rolf

"Habe mir Dein Programm angesehen, nur funktioniert es mit dem CVAVR
leider nicht."


Kannst Du da mal konkreter werden (Zeile, Fehlermeldung) ?


Was willst Du denn mit den vielen Takten, brauchst Du die wirklich alle
?


Peter

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.