Hallo,
ich habe eine simpleste Testschaltung mit einem Atmega88 aufgebaut
(Minimalbeschaltung 8MHz, Glättkondensatoren, 10K Pull-Downs).
Das ist der Code:
1 | DDRB=0xFF;
|
2 | DDRD =0b00001100; // enable outputs
|
3 | PORTD=0b11000000;
|
4 | ADCSRA=0; //disable adc bc. of analog compare mode
|
5 | ADCSRB=0; //AIN1 is applied to the negative input of the Analog Comparator
|
6 |
|
7 | ACSR|= (1<<ACIS0) | (1<<ACIS1) |(1<<ACIE) ;
|
8 | while (1) {
|
9 | PORTB = ACSR;
|
10 | }
|
Den Interupt verwende ich noch nicht.
PORTD.5 geht an eine LED, die zeigt mir direkt ACO (den AUsgang vom
Komparator) an. Jetzt messe ich mit dem Oszi aber einen Konstanten Pegel
von 1 V am PD7=AIN1=meine Refernz und PD6=AIN0. Des bestätigt sich auch
wenn ich AIN7 an GND lege ist ACO on, oder wenn ich PD6=AIN0 an VCC (5V)
lege ist ACO auch on. Sonst immer off.
Das passt ja auch, warum sind aber Pegel an AIN0 und AIN1? Wenn ich
später mal AIN1 auf 1V lege, und mit AIN0 Vergleich möchte, wo ein Wert
von 0-1.5V lanliegen kann, geht das nicht wenn auf AIN0 dauernd ein
Pegel liegt. Trotz Pull-Down.
Mach ich da was falsch das ich einen Pegel an AIN0 hab?
100K zw. AIN0 und AIN1 hab ich auch schon probiert.