Forum: Mikrocontroller und Digitale Elektronik ADC und Portpin am gleichen AVR-Port benutzen


von Ich (Gast)


Lesenswert?

Hallo

Ist es Möglich an einem PORT des Atmega32 ADC und nen Portpin 
gleichzeitig zu nutzen. Also PORTA.0 - A.3 = ADC und PORTA.4 - A.7 = 
Digital-IO?

Wie macht mann das mit BASCOM?

von Fox Mulder (Gast)


Lesenswert?

1. Ja

2. Man schreibe ein entsprechendes Programm.

von Jasson (Gast)


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.

von c-hater (Gast)


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.

von Ich (Gast)


Lesenswert?

Habs ausprobiert und Funktionierte auf anhib. ;)

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.