Hi, ich habe ein kleines Programm, das mir den Wert aus der ADC-Wandlung ans Uart übergeben soll. Aber irgendwie funktioniert die Wandlung so nicht richtig, da ich immer "255" ans Terminal gesendet bekomme, aber nur, wenn ich loop_until_bit_is_clear(ADCSR,ADSC); statt loop_until_bit_is_set(ADCSR,ADIF); schreibe. Wäre es möglich (sofern der Code doch richtig ist) dass der ADC hinüber ist? Ich wollte einfach nur von 0-Vcc mit einem Poti einstellen und am ADC Pin abgreifen. GND und ADC-Vcc sind mit 100nF verbunden und sonst (UART, Takt..) stimmt eigentlich auch alles. Auf die kleine Induktivität, wie im Datenblatt, habe ich verzichtet - kann es daran liegen? Danke Daniel
vergessen: mit loop_until_bit_is_set(ADCSR,ADIF); funktioniert gar nichts, scheinbar wird die Wandlung nie fertig und das bit nicht gesetzt!?
Habe mir dein gelinktes Programm nicht weiter angeschaut, jedoch folgende Kommentare: ADIF zu prüfen macht in meinen Augen keinen Sinn. Wenn du ADIE gesetzt hast, übernimmt deine ISR die Behandlung von ADIF. Ansonsten reicht es, ADSC zu prüfen. BTW: inp und outp sind veraltet, konsultiere dazu die WinAVR-Doku. Im Zweifel würde ich sagen, dass dein Fehler in der Beschaltung des AVR liegt (AVCC, AGND, AREF). Alex
while (ADCSRA & (0<<ADSC)); (0 << ADSC) wird nicht das sein, was Du machen möchtest, ~(1 << ADSC) dürfte da richtig sein... Hab aber auch nur überflogen...
@ OldBug Man setzt doch ADSC, um eine Konvertierung zu starten. ADSC wird mit dem Abschluss der Konvertierung gelöscht. Also muss geprüft werden. while (ADCSRA & _BV(ADSC)); Alex
Hm, nicht ganz, ich hatte aus (0 << ADSC) geschlossen, daß er ein Bit auf "0" Prüfen möchte. Ich habe - wie gesagt - nur überflogen. Das Bitwise-Not muss dann wohl weg... Also: while(ADCSRA & _BV(ADSC)); oder while(ADCSRA & (1 << ADSC)); Ist beides korrekt, aber mein Vorschlag while(ADCSRA & ~(1 << ADSC)); würde genau das Gegenteil liefern...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.