-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Timer richtig berechnen

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627

    Timer richtig berechnen

    Anzeige

    Hallo,

    ich habe mir den Artikel "Bascom und Timer" im Wissensbereich kurz durchgelesen. Ganz unten auf der Seite wird auf ein Programm verlinkt: "AvrTimer Windows Berechnungstool / Bascom Codegenerator" Das ist schön einfach - also habe ich damit gearbeitet. Leider ist dort kein 20 MHz Quarz mit drinn und so musste ich den Artikel doch lesen und verstehen.

    Jetzt habe ich aber einen Unterschied zwischen Artikel und Programm gefunden! Was ist denn nu richtig?!

    8 MHz Quarz
    Timer1 16Bit
    Prescaler 256
    Timer soll jede Sekunde überlaufen

    Artikel: 34285
    Programm: 34286

    Ich will ja nicht spitzfindig sein, aber ich möchte die Rechnung gerne verstehen(und mein Timer soll bei 20MHz alle 0,5sek überlaufen)

    vielen Dank schon mal,
    Tobias

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    hat denn keiner eine Ahnung wie man den Timer berechnet?!
    Das muss doch jemand wissen...

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    also nach Rechnung komm ich auf 34285.

    Quarzfrequenz 8 MHz => 8.000.000 Takte pro Sekunde
    Prescaler 256 => 8.000.000 / 256 = Nur noch 31250 Takte pro Sekunde

    Wenn der Überlauf nach jeder Sekunde stattfinden soll sinds dann
    ((2^16)-1) - 31250 = 34285.
    Für ne halbe Sekunde sollte es dann der halbe Wert sein, der abgezogen wird... also
    ((2^16)-1) - 15625 = 49910

    49910 wäre der Wert auch für 16MHz, 16-Bit-Timer und Prescaler von 1024.

    Die Werte sind 0-basiert, also man beginnt bei 0 zu zählen. 2^16 ist dann nicht 65536 sondern 65535.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    -> Oh mann, die Nachricht war im SPAM <-

    Hallo,
    vielen Dank für die Antwort!

    2^16 ist dann wohl, weil das ein 16Bit Timer ist oder?! Also bei einem 8Bit timer wäre das also 2^8. richtig?


    D.h.

    für 20MHz und ne´ halbe Sec.:

    20.000.000/1024 = 19.531,25 Takte / sek
    ((2^16)-1) - 9.765,625(hälfte) = 55.769,375!!!!

    richtig?

    Kann man das Komma mit eingeben?

    Tobias

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    52
    Beiträge
    117
    nein. bei dir wären es dann als startwert = 55769

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    ach so - danke.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    11.02.2006
    Beiträge
    40
    Man sollte bedenken, das man bei der interrupt-methode 2 mal toggeln muss um eine periode zu erzeugen. Das berechnungtool hat sich bei mir allerdings als sehr ungenau heruasgestellt. grade wenn es richtung 40khz geht hatte mein MEGA32 mit 16Mhz ziemlich zu kämpfen. Das restliche Programm wurde auch nur sehr träge abgearbeitet.

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    vielleicht hat der Programmierer ja nur die -1 vergessen.

    P.S: Wenn der Programmierer das hier liest und eine neue richtige Version raus bringt: Ich hätte gerne auch einen 20MHz Quarz in der Liste

    Tobias

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791

    Timer-Berechnungen

    Leute,

    habe euren Thread erst heute gelesen:

    Leider gibt es bei den Timer-Berechnungs-Tools immer das Problem, ob die Berechnung für die Timer-Werte genau so erfolgt, als ob diese Werte in Assembler verwendet würden, oder ob die Timer-Startwerte für [highlight=red:f0d1da6202]Bascom[/highlight:f0d1da6202] errechnet werden.

    In Bascom werden am Anfang der ISR alle Register gesichert. Das kostet insgesamt 53 Zyklen. Für Bascom muss man also die resultierende Timer-Frequenz um diese Zyklen korrigieren.
    Manche Berechnungs-Tools machen das nicht und sind damit für Bascom etwas ungenau. Da sich die Timer-Startwerte aber nur gering (z.B. +- 1) unterscheiden, fällt das kaum auf.

    Gruß Dirk

  10. #10
    DKM
    Gast

    Wo gibt es das Tool?

    Zitat Zitat von TobiasBlome Beitrag anzeigen
    Hallo,

    ich habe mir den Artikel "Bascom und Timer" im Wissensbereich kurz durchgelesen. Ganz unten auf der Seite wird auf ein Programm verlinkt: "AvrTimer Windows Berechnungstool / Bascom Codegenerator" Das ist schön einfach - also habe ich damit gearbeitet. Leider ist dort kein 20 MHz Quarz mit drinn und so musste ich den Artikel doch lesen und verstehen.
    Habe mir auch die Seite durchgelesen und wollte das genannte Tool probieren. Leider leitet mich der Link auf die Startseite zurück :/ Ist das Tool verschoben worden, oder garnicht mehr existent?

    Grüße
    DKM

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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