ADC und Portpin am gleichen AVR-Port benutzen

Gast #3258184
Lesenswert?

Wie man das mit Bascom macht weiß ich nicht. Ich kann´s dir nur auf 
Registerbene erklären.

Zunächst mal gibt es ja für jeden Pin ein Bit mit dem du die 
Datenrichtung bestimmen kannst ( Data Direction Register (DDRx), für 
Port B also DDRB).
Für I/O musst du auf Ausgang stellen und für Analog auf Eingang.

Dann gibt es bei dem ADC ein Register namens ADMUX (kommt von 
multiplexing) mit dem man den Pin wählt, wo die ADC Hardware den Wert 
misst (sampled).

Die Lösung zu deiner Frage ist also, die DDR Bits 4 - 7 von PortA
auf "Ausgang zu stellen", die DDR Bist 0 - 3 auf Eingang und die MUX 
Bits in ADMUX sich nur in dem Bereich 0 - 3 bewegen zu lassen.
Gast #3258215
Lesenswert?

Jasson schrieb:

> Zunächst mal gibt es ja für jeden Pin ein Bit mit dem du die
> Datenrichtung bestimmen kannst ( Data Direction Register (DDRx), für
> Port B also DDRB).
> Für I/O musst du auf Ausgang stellen und für Analog auf Eingang.

Jain. Zwar muß man natürlich für ADC auf Input schalten, aber für 
digital IO natürlich nicht zwingend auf Output, sondern nur dann, wenn 
Output gewünscht ist. Für digital Input schaltet man natürlich genauso 
auf Input wie für analog Input.

> Dann gibt es bei dem ADC ein Register namens ADMUX (kommt von
[...]

Außerdem gibt es bei allen neueren AVRs noch DIDR-Register, bei denen 
jedes für analoge Zwecke genutzte Bit besser auf eins steht und jedes 
für digitale Zwecke bnutzte besser auf null. Während erstere Forderung 
optional ist, ist die zweite zwingend erforderliche Voraussetzung für 
eine Funktion. Entscharft wird das einzig dadurch, daß der 
Standardinhalt nach Reset 0 ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren