mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik atmega 8 RS232


Autor: Sebastian Sw (duron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
void USART_Init( unsigned int ubrr)
{
// Set baud rate 
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
// Enable receiver and transmitter 
UCSRB = (1<<RXEN)|(1<<TXEN);
// Set frame format: 8data, 2stop bit 
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}




danke und lg sebastian

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Sebastian Sw (duron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ist das auch normal, dass der TX und RX beide auf high sind?
Ich brauche nur nochmals die bestätigung:)

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Sebastian Sw (duron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jaja.. das ist für den Transmittport normal. Der receive port ist auf 
low- hab ich gerade rausgefunden, darum habe ich nochmals nachgefragt.
lg

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Verwirrter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ist das auch normal, dass der TX und RX beide auf high sind?
Der receive port ist auf low- hab ich gerade rausgefunden

Autor: Sebastian Sw (duron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Nö, der RX ist erstmal einfach ein Eingang."
Ist das der grund, wieoso ich den über die PORT operationen beschreiben 
kann?

lg

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>"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.

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Sebastian Sw (duron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sebastian Sw (duron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: John Small (linux_80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Sebastian Sw (duron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.