Gast
#2571803
Hallo zusammen,
Ich muss für mein Geschäft ein Programm schreiben zur Erkennung der
Windgeschwindigkeit eines Sensors.
Ich hab mir gedacht, ich mach das mithilfe des Timers_A und dessen
interrupts. Mein Problem:
Ich komme zwar in die interrupt-routine rein aber nicht mit der pos.
Flanke des Windsensorsignals, so wie vorgesehen.
Eigentlich sollte mit der pos. Flanke der interrupt stattfinden um die
Zeit zwischen zwei solchen interrupts zu zählen und später umzuwandeln
in eine m/s Anzeige auf einem LCD-display (hab ich noch nicht
programmiert).
Vielleicht sieht jemand von euch, was ich falsch gemacht habe?
//initialize Timer_A for SMCLK
TACTL = TASSEL_2 | ID_3 | TAIE | MC_1; //SMCLK ; div. by 8 ;
intrpt enable ; up-mode
TACCTL0 = CCIE | SCCI | SCS; //intrpt. enable ;
sync'd capture
TACCR0 = 12500; //with 125kHz CCR0 is
filled once
//every 100ms
//capture rising etch | input CCIxA | sync capture | sync input |
capture mode | intrpt enable
TACCTL1 = CM_1 | CCIS_0 | CAP | CCIE;
interrupt (TIMERA1_VECTOR) time_measure(void) //intrp
(measuring time betw intrpts)
{
time_betw_intrpt = TACCR1 + overflow_counter * 12500;
}
interrupt (TIMERA0_VECTOR) overflows(void)
//intrpt(counting overflows)
{
overflow_counter++;
}
Er scheint die Einstellung zur Flankenerkennung im capture mode zu
ignorieren, da es kein Unterschied macht, ob ich am CCIxA-Pin ein Signal
habe oder nicht.
Vielen Dank für eure Hilfe!