MSP430start
30.06.2009, 23:01
Hallo,
ich habe jetzt mal angefangen mit dem Timer1 von einem mega32 zu spielen.
ich möchte für den Anfang erstmal ohne Interrupt oder sonstiges messen wie lange eine Taste gedrückt ist.
if ( PIND&(0x04) )
{
PORTD |= 0x40; //signal LED ein
TCCR1A = 0x00;
TCCR1B |= (1<<CS12)|(1<<CS10); //timer starten
_delay_ms(20); //entprellen
while (PIND&(0x04)); //warten bis Taste losgelassen
TCCR1B &= ( (~(1<<CS12)) | (~(1<<CS10)) ); //timer stoppen
//Wert speichern
temp1= TCNT1L;
temp2 = TCNT1H;
counter = (temp2<<8)+temp1;
//zählregister auf 0 zurück setzen
TCNT1H = 0x00;
TCNT1L = 0x00;
//Ausgang abschalten
PORTD &= 0xdf;
}
die Variable counter gebe cih danach auf einem LCD aus, die Werte die ich da bekomme sind nur leider bedingt richtig denke ich, weil ich teilweise negative Zahlen ausgegeben bekomme oder auch gerade bei kurzen Tastimpulsen schon recht große Werte.
Der Controller ist auf intern 1MHz eingestellt und mit dem Prescaler hab ich jetzt quasi doch eine Erhöhung des Timerregisters alle 1,024ms oder nicht?
ich habe jetzt mal angefangen mit dem Timer1 von einem mega32 zu spielen.
ich möchte für den Anfang erstmal ohne Interrupt oder sonstiges messen wie lange eine Taste gedrückt ist.
if ( PIND&(0x04) )
{
PORTD |= 0x40; //signal LED ein
TCCR1A = 0x00;
TCCR1B |= (1<<CS12)|(1<<CS10); //timer starten
_delay_ms(20); //entprellen
while (PIND&(0x04)); //warten bis Taste losgelassen
TCCR1B &= ( (~(1<<CS12)) | (~(1<<CS10)) ); //timer stoppen
//Wert speichern
temp1= TCNT1L;
temp2 = TCNT1H;
counter = (temp2<<8)+temp1;
//zählregister auf 0 zurück setzen
TCNT1H = 0x00;
TCNT1L = 0x00;
//Ausgang abschalten
PORTD &= 0xdf;
}
die Variable counter gebe cih danach auf einem LCD aus, die Werte die ich da bekomme sind nur leider bedingt richtig denke ich, weil ich teilweise negative Zahlen ausgegeben bekomme oder auch gerade bei kurzen Tastimpulsen schon recht große Werte.
Der Controller ist auf intern 1MHz eingestellt und mit dem Prescaler hab ich jetzt quasi doch eine Erhöhung des Timerregisters alle 1,024ms oder nicht?