ok, blöd vielleicht nicht, aber sehr unwissend :-)
dein code schritt für schritt:
1.)
PINB1 (AIN1) gegen Masse
PINB0 (AIN0) gegen +5V
----> so weit, so gut
und an PINB3 (OC1) eine LED
----> hier liegt denke ich dein erster denkfehler. unten schreibst du,
das hier jetzt der ausgang des komparator sein sollte... wie kommst du
da drauf???? OC1 steht für output compare und gehört weder zum analog
comparator, noch ist er dessen ausgang!!!! er gehört zu einm timer und
du kannst ihn zb zur pwm-erzeugung nutzen... immer das datenblatt
gründlich lesen... sinnvoll programmieren kann der, der seine
zielplattform gut kennt ;-)
ACSR = 0x00;
----> ok
ACSR |= (1<<ACO) | (1<<ACIC);
----> 1.) wie du im DATENBLATT erkennen kannst, ist ACO ein readonly -
bit... spar dir es zu beschreiben... ausserdem: ACO ist dein ersehnter
ausgang des comparator ;-)
2.) hier dämmert die idee, wie der zusammehang zu timer1 zustande
kommt, dessen ausgang du benutzen möchtest... aber auch hier klärt das
datenblatt auf, und verrät, das nun der comparator einen capture im
timer1 auslösen kann... dh: er friert den aktuellen zählerstand ein und
kopiert ihn ins input-capture register des timer1... damit kannst du zb
pulsweiten messen... aber oc1 bleibt davon eigentlich unbeeindruckt
;-)
ACSR &= ~(1<<ACD);
----> ok, obwohl du zwei zeilen früher eh schon gelöscht hast...
speicherfressender pragmatismus :-)
DDRB = 0x00; PORT B als Eingang
DDRB |= (1<<PINB3); PINB3 als Ausgang
----> ok
nun sollte doch der Komparartor Ausgang an PINB3 liegen oder?
----> NEIN
Aber egal
was ich mit PB0 und PB1 mache PB3 bleibt auf 0.
----> KLAR
Hat jmd eine Idee was ich falsch mache?
----> versuchs mal damit:
/////////////////////////////////////////////////
unsigned char tmp;
DDRB = 0x00; PORT B als Eingang
DDRB |= (1<<PINB3); PINB3 als Ausgang
ACSR = 0;
for(;;){
tmp = ACSR;
tmp = (tmp >> 2);
tmp &= 0x08;
PORTB &= 0xf7;
PORTB |= tmp;
}
///////////////////////////////////////////////////
...es gibt aber noch tausend andere wege :-)