Forum: Mikrocontroller und Digitale Elektronik ATMEGA 48/88, Live-Umschaltung Portpin ADC ./. Digital-IO


von Jochen (hermann_kokoschka)


Lesenswert?

Liebe Leute,
Folgende Frage konnte ich mir @Datenblatt (noch) nicht beantworten, 
vielleicht übersah ich dort (wo?) aber etwas:

Am Atmega48 liegt an einem ADC-Eingang (PC.5/ADC.5) der EIN-/AUSGANG 
eines 4051-Analog-Multiplexers, der dient 3 Zwecken:
- paar 4051-Pins sind Digital-IN
- paar 4051-Pins sind Digital-OUT
- paar 4051-Pins sind Analog-IN
Zyklisch wird der 4051 adressiert und der AVR-PortPin entsprechend 
konfiguriert.

WENN ich nun über ADMUX den AVR-PortPin (temporär) als ADC wähle:
- ist es relevant, wie der PortPin per DDRn/PORTn zuvor definiert wurde?
- oder wird er durch ADMUX eh komplett von der DigitalWelt abgekoppelt?

WIE bringe den PortPin danach wieder zu digitaler Funktion?
- reicht es ADMUX auf einen anderen Input/GND zu schalten?
- kehrt der Port dann zur vorherigen DDRn/PORTn-Definition zurück?
- oder muss ich den PortPin danach neu konfigurieren?

Besten Dank schomma für etwas Hilfe!

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Es gibt AVRs, bei denen man den Digitaleingang komplett "tot legen" 
kann, wenn man den Pin analog benutzt. Hat bspw. Sinn, wenn man 
"zappelige" Analogsignale anliegen hat, die dazu führen, dass der 
Eingang ständig hin und her schaltet, was zusätzlichen Energieverbrauch 
bedeutet.

ATmega48/88 haben diese Funktionalität nicht. Man sieht im Blockdiagramm 
der IO-Ports, dass dort die einzige Möglichkeit, den Digitaleingang vom 
Pad zu entkoppeln ist, dass sich die MCU im Sleep befindet. Ansonsten 
ist der Digitalteil der Eingangslogik immer angeschlossen und bewertet 
das anliegende Signal entsprechend seiner Eingangscharakteristik (Pegel, 
Schmitt-Trigger-Zustand).

von Jobst M. (jobstens-de)


Lesenswert?

Ist aber im Datenblatt eindeutig erklärt.

Kapitel I/O-Ports - Alternate Port Functions:


Signal Name: AIO

Full Name: Analog Input/Output

Description:
This is the Analog Input/output to/from alternate functions. The
signal is connected directly to the pad, and can be used bi-
directionally.


Also die ADC Eingänge sind parallel zum Portpin geschaltet.


Gruß
Jobst

von Jochen (hermann_kokoschka)


Lesenswert?

Jörg W. schrieb:
> Ansonsten ist der Digitalteil der Eingangslogik immer angeschlossen und bewertet

Jobst M. schrieb:
> Also die ADC Eingänge sind parallel zum Portpin geschaltet.

Besten Dank!
Also -wenn ich richtig verstehe- sollte ich dann:

a) VOR 4051-Umschaltung auf ADC-Verwendung den AVR-Eingang STETS
auf "Input-ohne-PullUp" schalten, um das AnalogSignal möglichst wenig zu 
beeinflussen.

b) VOR 4051-Umschaltung auf DIGITAL-Verwendung den AVR-Eingang STETS
"neu-und-jeweils" konfigurieren.

Verstand ich es richtig?
Dank nochmal!

von Jobst M. (jobstens-de)


Lesenswert?

Jochen schrieb:
> Verstand ich es richtig?

Sieht so aus. ;-)

Gruß
Jobst

von M. K. (sylaina)


Lesenswert?

Jochen schrieb:
> Verstand ich es richtig?

Sieht so aus aber mal, so als Idee, und wenn dein Digital-Signal nicht 
rasend schnell ausgewertet werden muss:

Lass den Eingang doch immer als ADC laufen. Wenn die das Digitalsignal 
interessiert wertest du einfach die Analogmessung aus indem du dann z.B. 
alles < 0.3*Vcc als 0 bewertest und alles >0.7*Vcc als 1. So kannst du 
dir das Umschalten zwischen Analog- und Digitalfunktion im Grunde 
schenken, nur mal so als Idee ;)

von Peter D. (peda)


Lesenswert?

Mit DIDR0 kann man die digitalen Eingangspuffer abschalten.
Will man zwischen allem umschalten, muß man also DDRC, PORTC und DIDR0 
entsprechend setzen.

Jochen schrieb:
> - paar 4051-Pins sind Digital-OUT

Ausgänge mit dem 4051 zu multiplexen halte ich für völlig sinnfrei. Die 
nicht adressierten sind dann ja floatend, nur der eine ausgewählte ist 
Ausgang.
Für Ausgänge gibt es adressierbare Latches, z.B. 74HC259.

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
Noch kein Account? Hier anmelden.