Hallo Leute,
Ich hatte die letzten Tage ne Menge Spaß mit meiner ersten
Mikrocontroller-Platine. Nur will jetzt der ADC nicht so ganz...
Problem (Vermutung):
Nachdem der ADC fertig ist wird das Interrupt nicht ausgeführt. Zum Test
wollte ich einfach im Interrupt-Teil mal meine LED auf PINB2
einschalten, die bleibt aber aus und auch im Simulator springt mir mein
Programm nicht in den ISR-Teil, sondern bleibt im main. Warum?
Wen's interessiert hier mein Schaltplan im Anhang:
Beitrag "Programmieren schlägt fehl - Anfängerfrage"
Hier mein Code:
1 | #include <avr/io.h>
|
2 | #include <stdlib.h>
|
3 | #include <avr/interrupt.h>
|
4 |
|
5 | int main(void)
|
6 | {
|
7 | DDRB |= 1<<PINB2;
|
8 |
|
9 | //ADC Enable
|
10 | ADCSRA |= 1<<ADEN;
|
11 |
|
12 | //Prescaler /16
|
13 | ADCSRA |= 1<<ADPS2;
|
14 |
|
15 | //Linksausrichtung
|
16 | ADMUX |= 1<<ADLAR;
|
17 |
|
18 | //Referenzspannung = AVCC
|
19 | ADMUX |= 1<<REFS0;
|
20 |
|
21 | sei();
|
22 |
|
23 | //Interrupt aktivieren
|
24 | ADCSRA |= ADIE;
|
25 |
|
26 | //Start first conversion
|
27 | ADCSRA |= 1<<ADSC;
|
28 |
|
29 |
|
30 | while(1)
|
31 | {
|
32 | }
|
33 | }
|
34 |
|
35 | ISR(ADC_vect)
|
36 | {
|
37 | PORTB |= 1<<PINB2;
|
38 |
|
39 | //Start next conversion
|
40 | ADCSRA |= 1<<ADSC;
|
41 | }
|