Hallo, ich sitze hier gerade vor meinem (nicht richtig funktionierenden) AVR-ADC und finde den Fehler nicht. Deshalb erstmal eine Grundsatzfrage: Ich habe vor den ADC einen externen 4067 sitzen (16-Kanal Analog Multiplexer). Dieser hat 4 digitale Eingänge, mit denen man bestimmen kann, welcher der 16 analogen Eingänge auf den Ausgang durchgeschaltet wird. Diese will ich mit PORTA0..3 ansteuern, der Analogausgang liegt auf PORTA5. Geht das überhaupt? Oder ist, wenn ich den ADC nutzen will, der ganze PORTA weg? Gruß, Sebastian
Das geht. Wobei bei meinem AVR (Mega8) der ADC auf PortC liegt. ;-) Bei meinem anderen AVR (Mega48) kann (und sollte) man sogar bitweise den Digitalteil des Ports deaktivieren, wenn man den ADC nutzen will. Bei meinem noch anderen AVR (Tiny15) gibt es nur einen Port (PortB), von dem einige Pins als ADC nutzbar sind. Wie das bei deinem AVR ist, könnte dir wahrscheinlich ein Blick ins entsprechende Datenblatt verraten. ...
Oh, tschuldigung, habe vergessen zu erwähnen. ATMega32. Wollte nur wissen, ob gleichzeitig digitaler Ausgang auf 5Pins und analoger Eigang auf einem Pin auf dem selben Port möglich ist. Dazu habe ich im Datenblatt nämlich nix gefunden. Danke einstweilen. Es funktioniert zwar immer noch nicht, aber dann liegt es zumindest nicht dadran. Sebastian
;-) Ja selbstverständlich kann man jedes Bit eines Ports getrennt als Digital-Ausgang, Digital-Eingang oder Analog-Eingang verwenden. Das steuerst du halt mit den Registern DDRA und PORTA (falls es um Port A des Mega32 geht). Allerdings sollte man (bei einigen AVRs) während der Wandlung nicht an den Digitalausgängen am selben Port herumschalten, da dies die Wandlungsgenauigkeit beeinflussen könnte. Aber das trifft ja in deinem Fall sowiso nicht zu. Denke daran, dass die Wandlung Zeit braucht. Wenn du die Quelle eingestellt hast, dann startest du die Wandlung und wendest dich anderen Aufgaben zu. Ist die Wandlung fertig (ADC-Complete-Interrupt oder sowiso laufender Timer-Interrupt), so liest du den Wert aus, weist ihn dem entsprechenden Speicherplatz zu, schaltest die Messquelle um und startest die nächste Wandlung. Nur so bekommst du auch den Wert der jeweiligen Quelle. ...
Ok, Problem ist gelöst: Ich benötige nur 8 Bit, und ich habe vergessen, das ADLAR-Bit (Linksbündig) zu setzen. Die Mini-Ergebnisse habe ich fälschlicherweise als Messfehler interpretiert. Danke für die Antworten. Sebastian
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.