Hallo, kann es sein dass die delay Funktion beim Atiny13 mit dem Timer verknüpft ist? Denn bei meinem Programm wird soll eine LED blinken dies tut sie aber nur bei nicht initialisiertem Timer. Wenn ich ihn initialisiere dann Leuchtet sie konstant. Hier mein quellcode:
1 | #include <avr/io.h> |
2 | #include <avr/interrupt.h> |
3 | #include <util/delay.h> |
4 | |
5 | #define F_CPU 1225000UL
|
6 | |
7 | volatile uint8_t aus; |
8 | volatile uint8_t z; |
9 | |
10 | void main (void) |
11 | {
|
12 | DDRB |= (1 << DDB0) | (1 << DDB3); |
13 | DDRB &= ~(1 << DDB1); |
14 | |
15 | PORTB |= (1 << PB3) | (1 << PB1); |
16 | |
17 | TCCR0B |= (1 << CS00); |
18 | TIMSK0 |= (1 << TOIE0); |
19 | |
20 | GIMSK = (1 << INT0); |
21 | MCUCR |= (1 << ISC01); |
22 | sei(); |
23 | |
24 | aus = 0; |
25 | z = 5; |
26 | |
27 | while(1) |
28 | {
|
29 | if (aus == 1) |
30 | {
|
31 | ausgabe (z); |
32 | aus = 0; |
33 | }
|
34 | }
|
35 | |
36 | }
|
37 | |
38 | /*
|
39 | ISR(TIM0_OVF_vect)
|
40 | {
|
41 | if (z < 6)
|
42 | {
|
43 | z++;
|
44 | }
|
45 | else
|
46 | {
|
47 | z = 1;
|
48 | }
|
49 | }
|
50 | */
|
51 | ISR(INT0_vect) |
52 | {
|
53 | if (aus == 0) |
54 | {
|
55 | aus = 1; |
56 | }
|
57 | else
|
58 | {
|
59 | aus = 0; |
60 | }
|
61 | }
|
62 | |
63 | |
64 | void ausgabe(uint8_t zahl) |
65 | {
|
66 | for(; zahl > 0;zahl--) |
67 | {
|
68 | PORTB |= (1<<PB0); |
69 | _delay_ms(500); |
70 | PORTB &= ~(1<<PB0); |
71 | _delay_ms(500); |
72 | }
|
73 | }
|