Hallo Mikrocontroller.net ich bin gerade dabei den Atmega32 zu programmieren. Ich habe auch schon den ADC zum laufengebracht allerdings nur mit dem "Pollingverfahren". Nun wolte ich mal die Interrupts benutzen, aber dies will nicht ganz funktionieren. Ich habe keine keine Ahnung wo der Fehler liegt. Hier mal mein Quelltext:
1 | #include <avr/io.h> |
2 | #include <stdint.h> |
3 | #include <avr/interrupt.h> |
4 | |
5 | unsigned int adwert = 100; |
6 | |
7 | //--------------------------
|
8 | #ifndef F_CPU
|
9 | #warning "F_CPU war noch nicht definiert, wird nun mit 1600000 definiert"
|
10 | #define F_CPU 16000000UL
|
11 | #endif
|
12 | #include <util/delay.h> |
13 | //--------------------------
|
14 | void waitms(unsigned int ms) |
15 | {
|
16 | for(; ms>0; ms--) _delay_ms(1); |
17 | }
|
18 | //--------------------------
|
19 | |
20 | int main (void) |
21 | {
|
22 | DDRA = 0xc0; |
23 | ADMUX = 0x24; |
24 | SFIOR = 0x00; |
25 | sei(); |
26 | ADCSRA = 0xC4; |
27 | |
28 | while(1) |
29 | {
|
30 | PORTA = 0x80; |
31 | waitms(adwert); |
32 | PORTA = 0x40; |
33 | waitms(adwert); |
34 | }
|
35 | return(0); |
36 | }
|
37 | |
38 | ISR(ADC_vect) |
39 | {
|
40 | adwert = ADCH; |
41 | ADCSRA = 0xC4; |
42 | }
|
Vielen dank schonmal. MfG Atmega32