Forum: Mikrocontroller und Digitale Elektronik Suche Rat.


von W. Meyer (Gast)


Lesenswert?

Wer kann mir einen Tip geben?

Ich beschäftige mich zwar mit ATMega103, aber dieses Problem
ist wohl nicht Typ-gebunden. Ich kann jetzt über die serielle
Schnittstelle des PC's mit dem Kontroller kommunizieren.
Die restlichen 6Pins liegen nun wohl brach. Ich bin aus der Beschreibung 
leider nicht schlau genug geworden. Es heißt dort,
wenn der UART aktiv ist  dann wird das DatenRichtungsRegister 
überschrieben. Oder betrifft das nur die vom UART benutzten Pins?
 Muß ich evtl. eine bestimmte Reihenfolge einhalten.

Eigentlich hat das schon ein 20 Jahre alter DDR-Kontroller (UB8840M) 
gekonnt.

Was muß ich machen, um die restlichen Pins trotzdem glichzeitig
als Ein- oder Ausgänge nutzen zu können.

W. Meyer.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo W.,

> Es heißt dort,
> wenn der UART aktiv ist  dann wird das DatenRichtungsRegister
> überschrieben. Oder betrifft das nur die vom UART benutzten
> Pins?

das UART arbeitet völlig unabhängig von den anderen Portfunktionen, du 
kannst die restlichen Pins von Port D also ganz normal nutzen.

MfG
Andreas

von W.Meyer (Gast)


Lesenswert?

Hallo Andreas.
Erst mal vielen Dank für Deine Antwort.
Da ich vor ein paar Wochen noch blutiger Anfänger war, was Programmieren 
und AVR's angeht werde ich wohl noch lange bei AVR-Assembler bleiben.
Ich habe erst das DatenRichtungsRegister des Ports aktiviert:
Ldi sr25Uni,0b11110000 Dann:
Out DDRE,sr25Uni (wegen 103Mega, ist sonst PortD).
Das macht ohne UART-Aktivierung den Port zum Ausgang, was auch klappt 
(Habe zur Kontrolle auf PinE7-4 LED's angehen lassen).
Sobald ich aber zusätzlich den UART in Betrieb nehme,
indem das RxEn+TxEn-Flag gesetzt wird geht aber nur noch dieser.
Ich kann immer nur eins von Beiden in Betrieb nehmen brauche aber 
"gleichzeitig" PinE7-4 als Ausgang und Pin3und2 als Eingang. Pin1und0 
nutzt ja dann der UART für sich.
Da der M103 6Ports hat, ist das zwar nicht weiter schlimm aber wirklich 
nicht sehr elegant gelöst.
Wie muß ich vorgehen?

MfG. Wolfgang.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo,

> Ich kann immer nur eins von Beiden in Betrieb nehmen brauche
> aber   "gleichzeitig" PinE7-4 als Ausgang und Pin3und2 als
> Eingang. Pin1und0 nutzt ja dann der UART für sich.

das ist komisch. Versuche mal, das Datenrichtungsregister erst nach der 
Aktivierung des UARTs zu setzen.
Was genau funktioniert denn nicht?

MfG
Andreas

von W.Meyer (Gast)


Lesenswert?

Hi.
Vielen Dank für den Tip.
Jetzt kann ich probehalber die angeschlossenen LED's
an und aus machen.
Manchmal braucht man eben doch einen Denkanstoß,
wenn man den Wald vor lauter Bäumen nicht mehr sehen kann.
Das DOS-Terminal-Programm empfängt zur Kontrolle die zum AVR 
abgeschickte ZeichenKette wieder.
Nun will ich mal sehen, wie ich PinE3 und PinE2 abfragen kann.
Vielleicht mit "In PinE3" usw...
MfG: Wolfgang.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

W.Meyer schrieb:
>
> Nun will ich mal sehen, wie ich PinE3 und PinE2 abfragen kann.
> Vielleicht mit "In PinE3" usw...

Mit <b>in (register),PinE</b> kannst du den am gesamten Port E 
anliegenden Wert bekommen. Um Pin 2 und Pin 3 dann zu isolieren, 
verwendest du <b>andi (register), 0b00000110</b>. Meistens wird das aber 
nicht nötig sein, du kannst z.B. Pin 2 einfach mit <b>sbis PinE, 2</b> 
abfragen (sbis = skip if bit set, überspringe nächsten Befehl wenn bit 
gesetzt).

MfG
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.