Ich habe da ein Board mit einem AT mega 8 Controller. Bei der
Initialisierung ist mir aufgefallen, dass wenn ich die RS232
schnittstelle initialisere, der PORTD PIN PD1 immer auf high ist. Wenn
ich versuche im Programm den PORT zu überschreiben ist das nicht
möglich. Wird also die normale Funktionalität als I/O pPIN bei der
Initialisierung der RS232 überschrieben? Ist das normal, dass der pin
immer auf high ist??
so initialisiere ich die serielle schnittstelle
Sebastian Sw wrote:
> Bei der> Initialisierung ist mir aufgefallen, dass wenn ich die RS232> schnittstelle initialisere, der PORTD PIN PD1 immer auf high ist. Wenn> ich versuche im Programm den PORT zu überschreiben ist das nicht> möglich. Wird also die normale Funktionalität als I/O pPIN bei der> Initialisierung der RS232 überschrieben?
So ist es. Wenn Empfänger und/oder Sender des UART (hat mit RS232
zunächst nix zu tun!) aktiviert werden (durch setzen von TXEN bzw. RXEN)
wird die normale Pin-Funktionalität abgeschaltet.
> Ist das normal, dass der pin> immer auf high ist??
Ja. Das ist der Ruhezustand.
>Wird also die normale Funktionalität als I/O pPIN bei der>Initialisierung der RS232 überschrieben?
Ja. Sobald Du das TXEN-Bit setzt passiert genau das. Steht aber auch
im Datenblatt unter "Alternate Port Functions", ca. Seite 54.
>Ist das normal, dass der pin immer auf high ist??
Na, was erwartest Du? "H" ist doch der "Idle"-Pegel einer seriellen
Verbindung.
Sebastian Sw wrote:
> Also ist das auch normal, dass der TX und RX beide auf high sind?> Ich brauche nur nochmals die bestätigung:)
Hab ich oben auf chinesisch geschrieben? JA, DAS IST DER RUHEZUSTAND DES
UART UND WENN NICHTS GESENDET WIRD IST DAS NORMAL!
Sebastian Sw wrote:
> jaja.. das ist für den Transmittport normal. Der receive port ist auf> low- hab ich gerade rausgefunden, darum habe ich nochmals nachgefragt.> lg
Nö, der RX ist erstmal einfach ein Eingang.
>"Nö, der RX ist erstmal einfach ein Eingang.">Ist das der grund, wieoso ich den über die PORT operationen beschreiben>kann?
Die PORT/DDR/PIN-Register kannst Du natürlich zu jeder Zeit sowohl
auslesen und beschreiben. Wenn der UART-Receiver eingeschaltet ist (Bit
RXEN gesetzt), hätte das allerdings keine Auswirkung auf den
entsprechenden Pin, weil der dann eben von diesen Registern abgetrennt
und zum UART-Receiver "geroutet" ist.
>Der receive port ist auf low- hab ich gerade rausgefunden
Ein Eingangspin ist auf jeden Fall relativ hochohmig. Wenn ein Pullup-
oder Pulldown-Widerstand vorhanden ist, bestimmt er den Pegel, solange
sonst nichts angeschlossen ist. Ist sonst etwas (relativ niederohmiges)
angeschlossen, legt dies den Pegel fest. Eventuell misst Du nur deshalb
L, weil Du gegen GND misst.
aha.. danke für deine antwort. d.h wenn der transmitter aktiviert ist
und ich versuche den pin zu beschreiben, wird das einfach nicht wirksam?
für den receiver scheint es aber trotzdem so zu sein, dass ich den pin
bescheiben kann. ich möchte nur sicher sein, dass dies nicht für den
transmitter gilt( ich verwende nur de transmitter)
lg
aha.. ok. Ich messe gegen ground.. stimmt. Wenn ich das also richtig
verstanden habe wird dann die externe last( der transmitter der
gegenseite) den pegel am receiver(eingangsseite) des controllers
bestimmen?
lg
Du könntest ja auch mal grob umreissen, was Du da bauen willst, dann ist
es evtl. einfacher weiterzuhelfen.
Wenn da zB. eine MAX232 o.ä. dranhängt, wär mir egal welchen Pegel die
Pins haben und ob ich den ändern kann, da ich das auch garnicht will,
soll ja die UART machen.
Also ich möchte einfach ein zeichen von einem Controller zum anderen
Controller schicken und dann je nach Zeichen die I/O pins auf high bzw.
auf low schalten. Es findet also nur Kommunikation in eine Richtung
statt.
Das Problem war nur dass am PORT D, ein display hängt, welches ausgaben
tätigt und alle PINS vom PORT benutzt, ausser die ersten beiden, welche
für die serielle schnittstelle benutzt werden. Ich habe einfach angst,
dass mir die displayroutinen (das display hängt am controller, der
wegschickt) die ports überschreiben, wobei diese Angst eh unbegründet
ist, wenn immer nur weggeschickt wird. Sehe ich das richtig so? Für den
Controlle, der empfängt habe ich das problem nicht, weil ich da nur
gewisse ports verwende und da kein display dranhängt.