Hallo!
Ich verwenden den ATtiny84A und will den ADC benutzen:
http://www.atmel.com/Images/doc8183.pdf
Mein CODE:
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 | #include <util/delay.h>
|
4 |
|
5 | void init();
|
6 | volatile uint16_t t1var = 0;
|
7 |
|
8 |
|
9 | int main(void)
|
10 | {
|
11 | init();
|
12 | while(1)
|
13 | {
|
14 |
|
15 | }
|
16 | return 0;
|
17 | }
|
18 | void init()
|
19 | {
|
20 | PRR &= ~(1 << PRADC); //disable Power Reduction for ADC
|
21 | ADMUX = (1 << REFS0) | (1 << MUX1); //externe Referenz und ADC Channel 2 (PA2) aktivieren
|
22 | _delay_ms(1);
|
23 | ADCSRA = (1 << ADEN) | (1 << ADIE) | (1 << ADPS1) | (1 << ADPS0); // ADC aktivieren, AD INterrupt aktivieren und prescaler 8 -> 125 kHz
|
24 | _delay_ms(1);
|
25 | ADCSRA = (1 << ADSC);
|
26 |
|
27 | sei();
|
28 | }
|
29 |
|
30 | ISR(ADC_vect)
|
31 | {
|
32 | DDRA |= (1 << PA7);
|
33 | PORTA |= (1 << PA7);
|
34 | }
|
Ich will nach fertiger Wandlung in der ISR ein Port auf High setzen, um
zu sehen, dass der ADC mit interrupt funktioniert. An dem port hängt
eine LED zur Anzeige, wenn ich im main die beiden zeilen der ISR
aufrufe, leuchtet sie. Anscheinend wird jedoch die ISR nie erreicht,
WARUM???
Vielen Dank!