1 | #include "msp430x24x.h"
|
2 |
|
3 | unsigned int lichtsteuerung = 80;
|
4 | unsigned int lichtmax = 85;
|
5 | unsigned int lichtmin = 10;
|
6 | unsigned int auswahl;
|
7 |
|
8 |
|
9 | void setON()
|
10 | {
|
11 |
|
12 | if(auswahl == 98){
|
13 | P1SEL &= ~BIT2; // P5.0 is I/O
|
14 | P1DIR |= BIT2; // P5.0 is Output
|
15 | P1DIR &= ~ BIT0; // P5.0 is Output
|
16 | P1OUT |= BIT2; //Output auf High
|
17 | }else{}
|
18 |
|
19 | }
|
20 |
|
21 | void setOFF(){
|
22 |
|
23 | if(auswahl == 99){
|
24 | P1SEL &= ~BIT2; // P5.0 is I/O
|
25 | P1DIR |= BIT2; // P5.0 is Output
|
26 | P1DIR &= ~ BIT0; // P5.0 is Output
|
27 | P1OUT &= ~ BIT2; //Output auf Low
|
28 | }else{}
|
29 |
|
30 |
|
31 | }
|
32 |
|
33 | void setTimer(){
|
34 |
|
35 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
36 | P5DIR |= BIT7; // P1.0 output
|
37 | CCTL0 = CCIE; // CCR0 interrupt enabled
|
38 | CCR0 = 10000-1;
|
39 | //TACTL = TASSEL_2 + MC_1; // SMCLK, upmode
|
40 | TACTL = TASSEL_1 + MC_1; // ACLK, upmode
|
41 | //_BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/ interrupt
|
42 | _BIS_SR(GIE); // Enter LPM3 w/ interrupt
|
43 | //__bis_SR_register(GIE);
|
44 | }
|
45 |
|
46 |
|
47 | void setRS232(){
|
48 |
|
49 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
50 | BCSCTL1 = CALBC1_1MHZ; // Set DCO
|
51 | DCOCTL = CALDCO_1MHZ;
|
52 | P3SEL = 0xf0; // P3.4,5,6,7 = USCI_A0 TXD/RXD
|
53 | // P3DIR = 0xf0; // P3.4,5 = USCI_A0 TXD/RXD
|
54 | UCA0CTL1 |= UCSSEL_2; // SMCLK
|
55 | UCA0BR0 = 6; // 1MHz 9600
|
56 | UCA0BR1 = 0; // 1MHz 9600
|
57 | UCA0MCTL = UCBRF3 + UCOS16; // Modln UCBRSx=1, over sampling
|
58 | UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
|
59 | IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
|
60 |
|
61 | ///////////////////////////////////////////////
|
62 |
|
63 | UCA1CTL1 |= UCSSEL_2; // SMCLK
|
64 | UCA1BR0 = 6; // 1MHz 9600
|
65 | UCA1BR1 = 0; // 1MHz 9600
|
66 | UCA1MCTL = UCBRF3 + UCOS16; // Modln UCBRSx=1, over sampling
|
67 | UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
|
68 | UC1IE |= UCA1RXIE; // Enable USCI_A1 RX interrupt
|
69 |
|
70 | __bis_SR_register(GIE); // Enter LPM3 w/ int until Byte RXed
|
71 |
|
72 | }
|
73 |
|
74 |
|
75 |
|
76 | void setPWM(char val){
|
77 |
|
78 | if(val >= lichtmax)
|
79 | {
|
80 | val = 84;
|
81 | lichtsteuerung = val;
|
82 | }
|
83 | if(val <= lichtmin)
|
84 | {
|
85 | val = 15;
|
86 | lichtsteuerung = val;
|
87 | }
|
88 |
|
89 | P1DIR |= BIT3; // P1.2 and P1.3 output
|
90 | P1SEL |= BIT3; // P1.2 and P1.3 TA1/2 otions
|
91 | CCR0 = 128; // PWM Period/2
|
92 | CCTL2 = OUTMOD_6; // CCR2 toggle/set
|
93 | CCR2 = val; // CCR2 PWM duty cycle
|
94 | TACTL = TASSEL_2 + MC_3; // SMCLK, up-down mode
|
95 |
|
96 | }
|
97 |
|
98 |
|
99 |
|
100 | void main(void)
|
101 | {
|
102 |
|
103 |
|
104 | //setRS232();
|
105 | // setTimer();
|
106 | auswahl = 98;
|
107 | setON();
|
108 | while(1){
|
109 |
|
110 | setTimer();
|
111 | //setPWM(lichtsteuerung);
|
112 | }
|
113 | /*
|
114 | while(1){
|
115 |
|
116 | //setTimer();
|
117 | //setPWM(UCA1RXBUF); //SET PWM RATE!
|
118 |
|
119 |
|
120 |
|
121 | switch(auswahl) {
|
122 | case 10: //Licht Heller
|
123 | lichtsteuerung -= 10;
|
124 | setPWM(lichtsteuerung);
|
125 | auswahl = 100;
|
126 | break;
|
127 | case 20: //Licht Dunkler
|
128 | lichtsteuerung += 10;
|
129 | setPWM(lichtsteuerung);
|
130 | auswahl = 100;
|
131 | break;
|
132 | case 30: //lichtmodus Dimmung
|
133 | setTimer(); //machts solange bis case nicht mehr 30 ist!!
|
134 | //if((lichtsteuerung > lichtmax) || (lichtsteuerung < lichtmin)){
|
135 | //break;}
|
136 | break;
|
137 | case 99: //Licht Aus
|
138 | setOFF(); //EVG OFF
|
139 | auswahl = 100;
|
140 | break;
|
141 | case 98: //Licht ein
|
142 | setON(); //EVG ON
|
143 | auswahl = 100;
|
144 | break;
|
145 |
|
146 | }
|
147 | }
|
148 | */
|
149 |
|
150 | }
|
151 |
|
152 | //Für TX Interrupt RS232
|
153 |
|
154 | #pragma vector=USCIAB0RX_VECTOR
|
155 | __interrupt void USCI0RX_ISR(void)
|
156 | {
|
157 | UCA0TXBUF = UCA0RXBUF;
|
158 | }
|
159 |
|
160 | //Für RX Interrupt RS232
|
161 |
|
162 | #pragma vector=USCIAB1RX_VECTOR
|
163 | __interrupt void USCI1RX_ISR(void)
|
164 | {
|
165 | //UCA1TXBUF = UCA1RXBUF; // TX -> RXed character
|
166 | auswahl = UCA1RXBUF;
|
167 | }
|
168 |
|
169 | //Für Timer Dimmingmodus
|
170 | #pragma vector=TIMERA0_VECTOR
|
171 | __interrupt void Timer_A (void)
|
172 | {
|
173 | //if((lichtsteuerung < lichtmin)){lichtsteuerung = 5;}
|
174 | lichtsteuerung = lichtsteuerung - 10;
|
175 | P5OUT ^= BIT7; // Toggle P5.7
|
176 |
|
177 |
|
178 | }
|