www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer (1 Sekunde) in CodeVision


Autor: Michael B. (Gast)
Datum:

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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hast denn schon gemacht?

Autor: Michael B. (Gast)
Datum:

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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stell doch bitte mal das Programm ein.

Autor: Jens D. (jens) Benutzerseite
Datum:

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

Autor: Michael B. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier das Programm, aber ist nur das Grundgerüst, hab die die
Uhreistellungen weggelassen... Aber auf alle Fälle Hab ich nach einer
Stunde schon einige Sekunden Abweichung...

Autor: Michael B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab vergessen, dass ich das STK500 mit einem 8515 verwende...

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vergiß den Wizard, laß doch einfach den Compiler rechnen:

http://www.mikrocontroller.net/forum/read-4-57760.html#new


Peter

Autor: Michael B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super! Ich danke Euch! Tolles Forum!

Autor: Rolf Meinert (Gast)
Datum:

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

Autor: Programmer (Gast)
Datum:

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

Autor: Peter Dannegger (Gast)
Datum:

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

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.