Also ich versuche eine positive Flanke mit einem MSP430x169 zu messen.
Ich kann dazu nur den PORT1 benutzen. Dazu initialisiere ich den PORT1
Interrupt, starte in diesen den TimerA, stelle die Flanke auf
high-to-low transition und im nächsten Interrupt lese ich den Wert aus.
Hierzu mein Quellcode:
1 | //TimerA Interrupt
|
2 | TACTL |= MC_2; // start TIMERA
|
3 |
|
4 | if (position_MANCODE == 1)
|
5 | {
|
6 | timer_MANCODE = CCR2; // Get current timer value
|
7 | TACTL = MC_0; // stop TIMERA
|
8 | P1IE &= ~PORT1_IE; // PORT1 interrupt disable
|
9 | }
|
10 | P1IES ^= PORT1_IES; // set interrupt on low-to-high transition
|
11 | P1IFG &= ~PORT1_IF; // clear interrupt flag
|
12 | ++position_MANCODE;
|
13 |
|
14 |
|
15 |
|
16 | // hauptschleife
|
17 | P1IE |= PORT1_IE; // PORT1 interrupt enable
|
18 |
|
19 | while(!(position_MANCODE==2));
|
20 |
|
21 | position_MANCODE = 0;
|
22 |
|
23 | // Timerinit
|
24 | TACTL = TASSEL_2 + TACLR; // SMCLK, clear TAR
|
25 |
|
26 | CCTL0 &= ~CCIE; // CCR0 interrupt disable
|
Ich erhalte nun aber ein "willkürliches" Ergebnis. Das es nicht die
beste Methode ist, weiß ich auch. Es sollte aber doch möglich sein ein
kontinuierliches, ungefähres Ergebnis zu erhalten.
Für jeden Tipp bin ich dankbar
Mfg
Stephan