Hab jetzt folgendes Programm geschrieben:
1 | #include<avr/io.h> |
2 | #include<avr/interrupt.h> |
3 | #include<avr/sleep.h> |
4 | #include<util/delay.h> |
5 | #include"timer.h" |
6 | #include"uart.h" |
7 | |
8 | #define F_CPU 4000000UL
|
9 | |
10 | // 9600 baud
|
11 | #define UART_BAUD_RATE 9600
|
12 | |
13 | volatile uint8_t time=0; |
14 | |
15 | ISR(TIMER2_OVF_vect) |
16 | {
|
17 | time++; |
18 | }
|
19 | int main() |
20 | { uint8_t test=0; |
21 | DDRA=0xff; |
22 | PORTA=0xff; |
23 | |
24 | while(test!=100) |
25 | { _delay_ms(10); |
26 | test++; |
27 | }test=0; |
28 | set_sleep_mode(SLEEP_MODE_PWR_SAVE); |
29 | sleep_enable(); |
30 | |
31 | timer2_init(); |
32 | |
33 | sei(); |
34 | |
35 | while(1) |
36 | {
|
37 | if(time==5) |
38 | {
|
39 | uart_puts("jip das klappt"); |
40 | while ((UCSR0A & (1 << TXC0)) != 1); |
41 | // UCSR0A =(1 << TXC0);
|
42 | time=0; |
43 | |
44 | }
|
45 | else
|
46 | {
|
47 | PORTA=time; |
48 | sleep_cpu(); |
49 | }
|
50 | }
|
51 | return(0); |
52 | }
|
Jedoch läuft das Programm einmal durch und dann bleibt der Timer stehen. Hab irgendwo gelesen, dass man das TXC FLag zurücksetzen muss habs mit der auskommentierten Zeile versucht, klappt aber auch nicht!