PIC18F Timer Prescaler
Samstag, 19. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  CCS Compiler  |  Timer (CCS)  |  PIC18F Timer Prescaler « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: PIC18F Timer Prescaler  (Gelesen 4279 mal)
 
jaipur
Newbie
*
Offline Offline

Beiträge: 9


Profil anzeigen
« am: September 04, 2006, 12:38:18 »

hallo,

ich verstehe leider nicht den vorteiler (prescaler) bei den timern ... was genau bewirkt dieser?

ich habe mal die formeln in den datenblättern von picc compiler etwas umgestellt
bei dem timer1 stand dort folgendes: internal clock at 20MHz, increments every 1,6us, overflows every 104,896ms

verstehe ich nicht, aber wenn ich mir folgende formel zu recht bastel, komme ich (fast) auf den gleichen wert für den overflow: overflow = (2^16 * 4 * Cool / (20MHz)

die 4 kommt von der pll, also die 20MHz / 4 (interne takt vom pic)
die 8 kann ich mir nicht erklären, hatte zuerst versehentlich gelesen das der prescaler auf 8 steht?!?

dann gab es dort noch eine formel für den timer_value: timer_value = 2^16 - Overflow / (4/20MHz)
also diese formel auch umgestellt: Overflow = 20MHz/4 * (2^16 - timer_value)
diese formel habe ich dann auch verstanden, denke (=vermute) ich Zwinkernd

min-wert: 200ns
max-wert: 0,0131072ms

ich weiß jetzt nicht wo ich den prescaler hinpacken soll und daher wird mir das zusammenspiel von setup_timer und set_timer nicht so wirklich klar?!?
Gespeichert
Schoasch
Sr. Member
****
Offline Offline

Beiträge: 343



Profil anzeigen
« Antworten #1 am: September 04, 2006, 15:31:20 »

Hi

Ich glaube, der folgende Link dürfte dir das ganze etwas verständlicher machen:

http://www.sprut.de/electronic/pic/grund/timer/timer.htm

Zitat
ich weiß jetzt nicht wo ich den prescaler hinpacken soll und daher wird mir das zusammenspiel von setup_timer und set_timer nicht so wirklich klar?!?
Der Prescaler steht dann in "setup_timer". Mit dieser Funktion werden die Eigenschaften des Timers eingestellt. Also Prescaler, usw.
Mit "set_timer" wird ein Wert in die Timerregister(zb.: TMR0H und TMR0L) geschrieben. Also ein Wert von dem aus zb weitergezählt wird.

mfg Schoasch

PS.: In dem CCS-Tutorial gibts dazu ein Beispiel.
Gespeichert
jaipur
Newbie
*
Offline Offline

Beiträge: 9


Profil anzeigen
« Antworten #2 am: September 06, 2006, 14:02:31 »

hallo,

in dem css tutorial habe ich folgende formel gefunden:
time = 1/frequenz * 4 * Timerwert * vorteiler

schön ist ja schon mal das diese formel wie meine formel aussieht, also richtig geraten ;)

aber was ist eigentlich wenn ich setup_timer ohne prescaler einstelle?
und was ist wenn ich einen prescaler ohne timer_value einstelle?
Gespeichert
Schoasch
Sr. Member
****
Offline Offline

Beiträge: 343



Profil anzeigen
« Antworten #3 am: September 06, 2006, 15:24:00 »

Zitat
aber was ist eigentlich wenn ich setup_timer ohne prescaler einstelle?
Wenn du dir das ASM-Listing ansiehst erkennst du, dass er den Prescaler auf 000 setzt und PSA(Prescaler Assignment bit) auch auf 0 setzt. Das heisst du würdest den so einstellen, dass er einen Prescaler von 2 benutzt.

Aber generell würde ich nicht darauf vetrauen, sondern immer den Prescaler mit angeben. Der PIC braucht dadurch nicht länger fürs abarbeiten des Programms, denn der CCS-Compiler rechnet zuerst den Wert und schreibt nur diesen Wert in das Register. Also so oder so, sind werden nur 2 Befehle erzeugt die er zur Konfiguration des Timers verbraucht.

Zitat
und was ist wenn ich einen prescaler ohne timer_value einstelle?
Normalerweise sollte das TMR0H Register nach einem Reset auf 0x00 gesetzt sein. Für TMR0L wird "unkown" im Datenblatt angegeben. Also immer einen Timervalue angeben. Ansonst kannst du auch nie eine konkrette aussage machen, wie lang dein Timer überhaupt läuft.

mfg Sschoasch
Gespeichert
ich
Gast
« Antworten #4 am: Februar 08, 2010, 17:42:13 »

hallo
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.036 Sekunden mit 19 Zugriffen.
 
Top! Top!