Forum: Mikrocontroller und Digitale Elektronik PortD als Eingang trotz UART-Kommunikation


von JohnnyD (Gast)


Lesenswert?

Hi,
ich hab ne kurze Frage. Ich benutze beim Atmega8 den PortB als Ausgang, 
PortC als ADCs und PD0 und PD1 für die UART-Kommunikation. Kann ich den 
PortD trotz UART als Eingang schalten, um restliche Pins zu benutzen?

von Winnie (Gast)


Lesenswert?

die restlichen Pins ja.

von holger (Gast)


Lesenswert?

>ich hab ne kurze Frage.

Ich auch: wieso probierst du es nicht einfach aus wenn du schon
das Datenblatt nicht selber lesen möchtest?

von Stefan F. (sfrings)


Lesenswert?

Den seriellen Eingang kannst Du sogar wie einen "normalen" I/O Pin 
abfragen.

von Buna-Pelzer (Gast)


Lesenswert?

@Holger

Du bist doch der Datenblatt-Kenner schlechthin. Dann kannst Du bestimmt
ganz locker die Fragen beantworten: Muß man die Portpins RXD und TXD
extra aus dem Portbyte ausmaskieren, wenn die anderen Pins des Ports
z.B. alle Eingaänge sein sollen?
Muß man TXD extra als Ausgang und RXD extra als Eingang definieren?

Jetzt könntest Du mal zeigen, daß Du etwas im Datenblatt gefunden hast,
was andere nicht finden konnten.

Danke im Voraus
Buna-Pelzer

von Andreas (Gast)


Lesenswert?

@ Buna-Pelzer:

Bin zwar nicht der Holger, aber:

Sind wir hier im Kindergarten? Muss hier wirklich jedem DAU extra noch 
mal das Datenblatt vorgekaut werden?

Datenblatt ATmega8, Seite 63, "Alternate Functions of Port D":

>•TXD – Port D, Bit 1
>TXD, Transmit Data (Data output pin for the USART). When the USART
>Transmitter is enabled, this pin is configured as an output
>regardless of the value of DDD1.

>• RXD – Port D, Bit 0
>RXD, Receive Data (Data input pin for the USART). When the USART Receiver
>is enabled this pin is configured as an input regardless of the value of
>DDD0. When the USART forces this pin to be an input, the pull-up can
>still be controlled by the PORTD0 bit.

von Andreas B. (bitverdreher)


Lesenswert?

Hallo,
Ich zitiere mal aus dem Datenblatt (S.63, unter IO-Ports):

• TXD – Port D, Bit 1
TXD, Transmit Data (Data output pin for the USART). When the USART 
Transmitter is
enabled, this pin is configured as an output regardless of the value of 
DDD1.
• RXD – Port D, Bit 0
RXD, Receive Data (Data input pin for the USART). When the USART 
Receiver is
enabled this pin is configured as an input regardless of the value of 
DDD0. When the
USART forces this pin to be an input, the pull-up can still be 
controlled by the
PORTD0 bit.


War doch nicht so schwer, oder?

Gruß
Andreas

Ha, zu spät....

von Buna-Pelzer (Gast)


Lesenswert?

@Andreas(se)

Eine Reaktion, wie die von "Winnie" ist doch absolut in Ordnung.
Klare Frage -klare Antwort und der Frager konnte sofort weiterarbeiten.

Ich danke Euch, ein Teil der Frage konnte damit beantwortet werden und
ich habe diese Passage im Datenblatt tatsächlich mehrfach überlesen..
8-/



DAS war damit nicht gemeint. Präziser gefragt: Man hat den gesamten
PortD als Eingang definiert und will dessen Inhalt in ein internes
Register umschaufeln. Bit1 und Bit0 von PortD sollen als RxD und Txd 
fungieren.
Muß man nun Bit0 und Bit1 ausmaskieren, bevor man den Inhalt von PortD
(die verbleibenden 6 Bits) in ein Register zur Weiterverarbeitung
schiebt?

Richtig, ihr seid beide nicht Holger -nur gerade von dem hätte ich eine
Antwort erwartet. Warum? Weil der nur die große Schnauze auftut und 
nicht
einer seiner Beiträge irgendeine Hilfe für den Fragenden brachte!

Buna-Pelzer

von Andreas B. (bitverdreher)


Lesenswert?

Buna-Pelzer schrieb:
> Muß man nun Bit0 und Bit1 ausmaskieren, bevor man den Inhalt von PortD
> (die verbleibenden 6 Bits) in ein Register zur Weiterverarbeitung
> schiebt?

Warum sollte man diese Bits nicht ausmaskieren? Welche Informationen 
erwartest Du von diesen beiden Bits. Interessant zur Auswertung können 
ja wohl nur die anderen 6 Bits außer Rx und Tx sein, die extern wie auch 
immer beschaltet sind.
Somit würde ich diese Bits als undefiniert betrachten.

Gruß
Andreas

von Buna-Pelzer (Gast)


Lesenswert?

Danke Andreas, das macht die Sache klarer. Eine Frage trotzdem noch:
Wenn ich PortD komplett als Ausgang definiere und jage dort dann
hex FF raus, dann mache ich mir doch den Sende-Datenstrom kaputt,
weil ja mittendrin unmotiviert eine 1 eingefügt wird und auch bei Rxd
wird mittendrin eine 1 eingefügt. Ist das so?

Wenn das so ist, dann müsste man ja (symbolisch) schreiben:

PortD = Ausgabebyte AND 3

Gruß
Buna-Pelzer

von Spess53 (Gast)


Lesenswert?

Hi

>weil ja mittendrin unmotiviert eine 1 eingefügt wird und auch bei Rxd
>wird mittendrin eine 1 eingefügt. Ist das so?

Nein. Datenblatt:

The Receiver will override normal port operation
for the RxD pin when enabled.

The Transmitter will override normal port
operation for the TxD pin when enabled.

MfG Spess

von Buna-Pelzer (Gast)


Lesenswert?

Danke Spess!
Jetzt weiß ich Bescheid und kann nun manche Sachen aus meinem Programm
werfen, die ich dadurch gar nicht brauche.

Ich sitze hier mit dem ausgedruckten Datenblatt und finde die angegebnen
Textstellen immer erst dann, wenn andere sie schon gefunden haben...

@All
Es ist nicht fair, immer nur zu brüllen: "Lies das Datenblatt!"
Das ist so umfangreich und die Informationen zu einem Thema sind darin
so weit gestreut, daß man in der "Eingewöhnungsphase" nicht alles, was
dazugehört findet.

Denkt mal daran, daß bei Euch auch kein Atmega8 in der Wiege lag, der
hätte Euch das Kreuz zerstochen

:-)

Gruß
Buna-Pelzer

von Andreas B. (bitverdreher)


Lesenswert?

Buna-Pelzer schrieb:
> @All
> Es ist nicht fair, immer nur zu brüllen: "Lies das Datenblatt!"
> Das ist so umfangreich und die Informationen zu einem Thema sind darin
> so weit gestreut, daß man in der "Eingewöhnungsphase" nicht alles, was
> dazugehört findet.

Ich denke mal das liegt daran, daß man machmal den Eindruck hat, daß das 
Forum dazu dient die Faulheit mancher zu unterstützen. Da reagieren 
viele Leute hier sehr allergisch.
Du wirst diese Antwort vermutlich nicht bekommen, wenn Du zeigst, daß Du 
Dich mit dem Datenblatt bereits beschäftigt hast.

Gruß
Andreas

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.