Ich stehe vor dem Problem 8 Lego Lichtsensoren mit einem ATmega644 ansprechen zu wollen. Über diese fand ich aus diversen Quellen zusammengesucht herraus: - AVR mit AVcc = Vcc = +5V betreiben - 10kOhm Pull-Up Widerstand gegen +5Volt an PORTAn - DDRAn = 1, PORTAn = 1 für min. 3ms zum aufladen des Stützkondensators - DDRAn = 0, PORTAn = 0 für min 5us bzw. max 0,1ms und während dessen mittels ADC die Spannung messen. Meine Idee dazu ist es den ADC in den Free Running Mode zu versetzen und im ADC Interrupt ADMUX zu ändern um zwischen den bis zu 8 an PORTA angeschlossenen Sensoren zu wechseln. Ist dies möglich oder läuft dann bereits die nächste Konvertierung (die den alten ADMUX Wert verwendet)? MfG Crest
Ich verwerfe meist zur Sicherheit die jeweils erste Messung nach der ACMUX-Umschaltung. Ansonsten siehe hier: Beitrag "Re: ADC: Zweiter Kanal misst nicht"
Hi Im Datenblatt S.238 ist ein schönes Timingdiagramm. MfG Spess
Danke da muss ich wohl mit Blindheit geschlagen gewesen sein. Demnach ist dies dies bei Beginn der Ausführung des Interrupts noch min. einen halben ADC Clock Zyklus bis ADMUX (genauer REFSn und MUXn) gelesen werden bei 20MHz / 1 und ADC Prescaler von 128 gut möglich. MfG Crest
Crest schrieb: > Demnach ist dies dies bei Beginn der Ausführung des Interrupts noch min. > einen halben ADC Clock Zyklus bis ADMUX (genauer REFSn und MUXn) gelesen > werden bei 20MHz / 1 und ADC Prescaler von 128 gut möglich. Wenn noch ein anderer Interrupt dazukommt, dann verpasst man das leicht. Ich würde es daher anders machen: Verwende den ADC nicht im Freerunning Mode, sondern setze im ADC Interrupt zuerst ADMUX und starte dann erst die nächste Messung. So kannst du sicher sein, dass der ADMUX Wert übernommen wird.
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.