Timerzeit ausrechnen ???

Gast #23672
Jo Hallo
Wie tut man den für die Timer bei einem Pic16f872 Prozessor die Zeit 
ausrechnen. Soviel ich weiß zählt er bei einm 8Bit Timer immer von 
X-255, X kann man selber vorgeben aber mit was für einer Zeit muss ich 
den Wert der zwischen X-255 rauskommt multiplizieren. Wenn es die 
Zykluszeit für einen Befehl ist hab ich keine Ahnung wie ich die 
ausrechne. Mein Quarz läuft mit 4 MHZ. Zykluszeit = ???????
Gruß Ram99
Gast
Zykluszeit T = 1/f0
bei 4MHz sind das 100ns weil der PIC intern durch 4 teilt!

Du must den prescaler des PIC's auch einstellen

1:1, 1:2, 1:4 ... 1:256


Wenn Du eine Zeit t mit einem Timer realisieren willst, brauchst
Du nur die folgende Rechnung

Quarz/4 * t = n,  Anzahl der CPU-Zyklen

dann n so durch die möglichen Prescaler Einstellungen teilen damit Du 
einen Wert zwischen 0 und 255 bekommst

den ziehst Du dann von 256 ab

Example:

  Quarz = 4MHz
  t     = 1ms  = 1EE-3s

  4MHz/4 * 1EE-3s = 1000 Zyklen

  1000/8 = 125       prescaler=8

  256-125 = 131 Timerwert

  Initialisiere den Prescaler auf 1/8 und übergebe dem Timer der Wert 
131.

Denke daran, das Du bei einer zyklischen Interruptroutine den Timerwert 
130 in der Timerserviceroutine reloadest!

Reiner
Gast
Jo vielen Dank, genau das hab ich gesucht. Nur eins hab ich nicht 
verstanden, was soll das mit dem 1EE-3s ?? Soll das 1EE eine Hexzahl 
sein 494 ?? Wenn ich keinen prescaler setzen möcht muss ich dann-> 
setup_timer_0 (RTCC_INTERNAL); setzen oder geht es nur mit prescaler.

Was macht denn bei AD-Wandler die Zeile->
setup_adc(ADC_CLOCK_DIV_X);   X= 2,8,32,off,Internal

Gruß
   Thomas
Gast
>Nur eins hab ich nicht verstanden, was soll das mit dem 1EE-3s

1EE-3 = 1*10hochminus3= 0.001
reiner

>setup_adc(ADC_CLOCK_DIV_X); X= 2,8,32,off,Internal

Ein Unterprogrammaufruf in dem der ADC initialisiert wird.
Der hat auch einen prescaler und einen internen langsamen RC-Oszillator. 
Hier musst Du Deine gewünschte Konfiguration für den ADC angeben. 
Vermutlich ist das übergebene Byte exact
für für des CPU-Register ADCON0 bestimmt.

Reiner

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.