Hallo, ich habe ein Problem mit dem Analog Comparator meines Atmega 16. Ich möchte den Analogcomparator mit der internen Bandgap Referenz am Positven Eingang verwenden, und den Negativen Eingang mit dem ADC MUX auf Pin PA4 legen. Der Analog Komparator löst eine Interrupt und die ISR soll sich dann bemerkbar machen ( LED an ).
1 | #include <avr/io.h> |
2 | #include <avr/interrupt.h> |
3 | |
4 | // Analog Comparator Interrupt
|
5 | #define INT_ANA_COMP_vect _VECTOR(17)
|
6 | |
7 | void master_init (void) { |
8 | /*----------PORT Initialisierung----------*/
|
9 | // LEDs
|
10 | DDRC = 0xFF; // setzte PORTC als Ausgang, LED1-8 |
11 | PORTC = 0x00; // LEDs ein |
12 | |
13 | /*----------Analog Comparator---------*/
|
14 | ACSR &= ~(1<<ACD); //AnalogComparator ein |
15 | ACSR |= (1<<ACBG)|(1<<ACIE)|(1<<ACIS1)|(1<<ACIS0); //BandgapRef ein, Interrupt enable ein, Interrup on rising edge |
16 | ADCSRA &= ~((1<<ADEN)|(1<<MUX1)|(1<<MUX0)); //ADC aus, ADMUX auf Kanal AD4 |
17 | ADCSRA |= (1<<MUX2); |
18 | SFIOR |= (1<<ACME); //Multiplexer für Analogkomparator ein |
19 | DDRA &= ~(1<<PA4); |
20 | }
|
21 | |
22 | ISR( INT_ANA_COMP_vect ) //ANALOG COMPARTOR Interrup Routine |
23 | {
|
24 | PORTC = 0x0f; // LED an |
25 | }
|
26 | |
27 | |
28 | int main( void ) |
29 | {
|
30 | master_init(); |
31 | ....
|
32 | }
|
Es löst kein Interrupt aus. Kann mir da jemand auf die Sprünge helfen? vielen Dank Gruß Kai