Gast
#273549
Hallo!
hab heute versucht meinen AD-wandler am Mega128
zum laufen zu bringen. Der versuchsaufbau ist eigentlich ganz einfach:
Am Port-pin ADC0 wird eine spannung von 2,5V angelegt (poti).
Die Referenzspannung beträgt 5V und wird extern an Aref angeschlossen.
Nach einer Single-conversion soll der wert aus ADCH (nur 8bit) binär am
byteport A ausgegeben werden (8 leds angeschlossen)
In Assembler hab ich folgendes test-programm geschrieben:
ADMUX: REFS1 + REFS2 auf low setzen (externe Uref an Aref)
ADCLAR auf high setzen (lese nur das high-byte ADCH)
ADCSRA: ADEN auf high und die drei Prescaler bits auf high (prescaler
128) alles andere Low (kein ADIF)
bevor ich anfange zu lesen, werden MUX0 - 4 auf low gesetzt (Channel
ADC0).
anschließend wird das ADC start-bit gesetzt (ADSC) und per schleife
wird gewartet, bis ADIF
high wird. jetzt wird das ADC Data register (ADCH) ausgelesen und auf
port A ausgegeben.
--> Ich glaube der fehler liegt an der schleife. Gibt es einen befehl
mit dem man ein einzelnes bit abfragen kann (kein I/O)
und je nach wert weiterspringt? z.B. jump if bit ADIF = 1 oder
sowas?
hab sowas im instructionset nicht gefunden!
Danke, Burt