Suche Rat.

Gast #460
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.
Gast #462
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.
Admin Persönliche Seite #463
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
Gast #464
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.
Admin Persönliche Seite #465
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

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