Hallo,
habe ne kleine Frage, ich versuche mich gerade mit dem Timer (LPM3
Betrieb) zu befassen, den ich für die Ansteuerung eines
DS1820(Parasite-Mode) benötige der sich an P1.1 befindet.
für den DS1820 brauch man ja verschiedene Zeiten, jetzt habe ich mal bei
TI die Codebeispiele durschaut und hoffe ich habe als Ansatz das
richtige gefunden.
Kann mir bitte jemand da weiterhelfen, ob ich da auf den richtigen Weg
bin
1 | #include <msp430x14x.h>
|
2 |
|
3 | void main(void)
|
4 | {
|
5 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
6 | P1SEL |= 0x0E; // P1.1 - P1.3 option select
|
7 | P1DIR |= 0x0F; // P1.0 - P1.3 outputs
|
8 | CCTL0 = OUTMOD_4 + CCIE; // CCR0 toggle, interrupt enabled
|
9 | CCTL1 = OUTMOD_4 + CCIE; // CCR1 toggle, interrupt enabled
|
10 | CCTL2 = OUTMOD_4 + CCIE; // CCR2 toggle, interrupt enabled
|
11 | TACTL = TASSEL_1 + MC_2 + TAIE; // ACLK, contmode, interrupt enabled
|
12 |
|
13 | _BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/interrupt
|
14 | }
|
15 |
|
16 | // Timer A0 interrupt service routine
|
17 | #pragma vector=TIMERA0_VECTOR
|
18 | __interrupt void Timer_A0 (void)
|
19 | {
|
20 | CCR0 += 4; // Add Offset to CCR0
|
21 | }
|
22 |
|
23 | // Timer_A3 Interrupt Vector (TAIV) handler
|
24 | #pragma vector=TIMERA1_VECTOR
|
25 | __interrupt void Timer_A1(void)
|
26 | {
|
27 | switch( TAIV )
|
28 | {
|
29 | case 2: CCR1 += 16; // Add Offset to CCR1
|
30 | break;
|
31 | case 4: CCR2 += 100; // Add Offset to CCR2
|
32 | break;
|
33 | case 10: P1OUT ^= 0x01; // Timer_A3 overflow
|
34 | break;
|
35 | }
|
36 | }
|