Hallo Mikrocontroller.net Gemeindschaft Ich hab mir das AVR Starterkit (inkl. USB Programmer) hier im Shop gekauft alles ok bis her. Aber wenn ich den Quelltext unten compiliere leuchtet einfach die Led auf dem Board auch wenn ich nichts gedrückt habe. Das kommt öffters vor das der Quelltext nicht so ausgeführt wird wie ich es versucht hab zu programmieren. Im Simulator läuft das Programm richtig ab nur auf dem Mikrocontroller nicht. C/C++ programmier ich schon seit 4 Jahren. Ich versuche momentan als Übung verschiedenen Tasterzustände zu programmieren, um mich in die Materie der uC einzuarbeiten. Vielleicht hab ich doch etwas falsch gemacht.
1 | #include <avr/io.h> |
2 | #include <avr/delay.h> |
3 | #include <avr/interrupt.h> |
4 | |
5 | #include <stdint.h> |
6 | |
7 | |
8 | uint16_t time = 0; |
9 | |
10 | |
11 | ISR( TIMER0_OVF_vect ); |
12 | |
13 | void blink(int8_t i); |
14 | |
15 | |
16 | int main(void) |
17 | {
|
18 | |
19 | uint8_t click = 0; |
20 | |
21 | |
22 | |
23 | DDRC |= ( 1 << PC5 ); |
24 | DDRD &= ~( 1 << PIND2 ); |
25 | |
26 | TIMSK |= ( 1 << TOIE0 ); |
27 | |
28 | |
29 | sei(); |
30 | |
31 | |
32 | while(1) |
33 | {
|
34 | |
35 | |
36 | if( time < 2200 || click != 2) |
37 | {
|
38 | |
39 | if( PIND & ( 1 << PIND2 ) ) |
40 | {
|
41 | |
42 | if( TCCR0 == 0) |
43 | {
|
44 | |
45 | TCCR0 |= ( 1 << CS00 ) | ( 1 << CS01 ); |
46 | |
47 | click+=1; |
48 | |
49 | }
|
50 | |
51 | }else |
52 | {
|
53 | |
54 | if( TCCR0 != 0) |
55 | {
|
56 | |
57 | TCCR0 = 0x00; |
58 | |
59 | }
|
60 | |
61 | }
|
62 | |
63 | }else |
64 | {
|
65 | |
66 | if( TCCR0 != 0) |
67 | {
|
68 | |
69 | TCCR0 = 0x00; |
70 | |
71 | }
|
72 | |
73 | |
74 | |
75 | if( time < 2000 ) |
76 | {
|
77 | |
78 | if( click < 2) |
79 | {
|
80 | |
81 | blink( 1 ); |
82 | |
83 | }else |
84 | {
|
85 | |
86 | blink( 2 ); |
87 | |
88 | }
|
89 | |
90 | }else |
91 | {
|
92 | |
93 | blink( 3 ); |
94 | |
95 | }
|
96 | |
97 | |
98 | click = 0; |
99 | time = 0; |
100 | |
101 | }
|
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | }
|
109 | |
110 | }
|
111 | |
112 | |
113 | |
114 | ISR( TIMER0_OVF_vect ) |
115 | {
|
116 | |
117 | time++; |
118 | |
119 | }
|
120 | |
121 | |
122 | |
123 | |
124 | void blink( int8_t i) |
125 | {
|
126 | |
127 | for( int8_t j = 0; j < i; j++) |
128 | {
|
129 | |
130 | PORTC |= ( 1 << PC5); |
131 | |
132 | _delay_ms( 500 ); |
133 | |
134 | PORTC &= ~( 1 << PC5); |
135 | |
136 | _delay_ms( 500 ); |
137 | |
138 | }
|
139 | |
140 | }
|