Zu diesem Beitrag hab ich ne Frage: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Analoge_Ein-_und_Ausgabe Setzte ich ADEN=True (ADC enable), heisst es dann, dass komplett alle acht Pins nicht mehr als IO-Ports genutzt werden können, oder kann ich es dennoch so machen, wenn ich nur einen Kanal benötige, dass ich die übrigen dennoch als IO-Ports verwenden kann?
ADIF (ADC Interrupt Flag) - habe ich das richtig verstanden - ADIF = 1, wenn Messung beendet und Werd in ADCL/ADCH reingeschrieben wurde und wird automatisch auf ADIF = 0 gesetzt, wenn eine Leseoperation erfolgt (zB. wenn ich ADCL in das Register R16 kopiere)?
1.) Du kannst weiterhin alle Pins normal nutzen. Mit ADMUX stellst du ein welcher Pin als ADC Eingang dienen soll. Aber auch diesen Pin kannst du normal nutzen. 2.) RTFM! Das ADIF wird gesetzt wenn eine Messung beendet ist und gelöscht wenn eine ISR angesprungen wird. Ansonsten kann man es noch manuell löschen. Sonst wird es nicht gelöscht. Wenn du ADC per Polling machen willst, dann teste auf das ADSC Bit mit dem du eine Messung auch startest. Das geht wieder auf 0 sobald die Messung fertig ist, dann kannst du die Werte aus ADC lesen. gruß cyblord
Danke für Deine Antwort. In dem Tutorial steht beim Initialisieren: /* ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten Wandlung nicht übernommen. */ result = ADCW; Also muss ich jeden Wert einmal irgendwie auslesen, sonst wird kein neuer reingeschrieben? Ist das nicht auch sowas ähnliches wie "Dieses Bit wird vom ADC gesetzt, sobald eine Umwandlung erfolgt ist und das ADC Data Register aktualisiert wurde. Das Bit wird bei lesendem Zugriff auf ADC(L,H) automatisch (d.h. durch die Hardware) gelöscht. "
Fragender Anfänger schrieb: > Danke für Deine Antwort. > > In dem Tutorial steht beim Initialisieren: > > /* ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten > Wandlung nicht übernommen. */ > result = ADCW; > > Also muss ich jeden Wert einmal irgendwie auslesen, sonst wird kein > neuer reingeschrieben? Ist das nicht auch sowas ähnliches wie > > "Dieses Bit wird vom ADC gesetzt, sobald eine Umwandlung erfolgt ist und > das ADC Data Register aktualisiert wurde. Das Bit wird bei lesendem > Zugriff auf ADC(L,H) automatisch (d.h. durch die Hardware) gelöscht. " Steht zwar so im Tutorial, aber wäre mir neu dass das wirklich so ist. Kommt evt. auf den AVR drauf an. Schau halt mal im Datenblatt nach, müsste ich jetzt auch tun. Da gibt es auch einen Absatz über das Lesen von 16 Bit Registern, da wird beim lesen des einen Registers, das andere gelockt, bis es ebenfalls gelesen wird. gruß cyblord
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.