PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer 2 Initialisierung



duderino
05.04.2005, 20:08
void main(void)
{
// Do initialization

// setup timer2 to int every milisecond

// Start counting
miliseconds = 0

// wait until the 1 second is up
while (miliseconds < 1000);

do_function();

// wait until the 10 seconds are up
while (miliseconds < 10000);


while(1)
{
}

1)..wäre dieser Code richtig?
1)Wie muss ich den Timer2 Initalisiern damit er alle 10ms interruptet?
bei einem
PIC16F870
mit
4Mhz

Bomberman
06.04.2005, 09:27
hallo duderino,

wenn Du den Timer2 als 16Bit-Timer initialisierst, dann kann er bis maximal 2^16 (etwas über 65000) zählen. Wenn Du Deinen Proz mit 12 Mhz taktest sind das 65000µs, die der Timer maximal überbrücken kann, ehe er überläuft und Dir ein Flag setzt.
Da Du 10ms, also 10000µs brauchst, mußt Du entweder 10000 als Start und Reloadwert setzen und das Teil abwärts zählen lassen. Andere variante: Aufwärtszählen - hier mußt Du (2^16)-10000 als Start- und Reloadwert setzen.
Die initialisierung des Timers geschieht in den Registern T2COM und T2MOD. In T2H und T2L werden die Sartwerte gesetzt. Die Reloadwerte werden in zwei weitere Registern gesetzt (habe den Namen vergessen - steht aber in jedem 8051-er-Handbuch)
Ich hoffe das hilft Dir ein wenig weiter.

Ciao

Patrick