Forum: Mikrocontroller und Digitale Elektronik µKontroller-Übertragung


von Leon A. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,



bin neu hier und hoffe der Thread ist hier an der richtigen Stelle, 
ansonsten würde ich mich freuen wenn ihn jemand verschieben würde.

Und zwar geht es um ein Projekt auf schulischer Ebene. Aufgabe ist es, 
zwei Mikrocontroller (8051) über das RS232 Verfahren zu verbinden und 
Daten von den PINs des einen µC an den LEDs des anderen µC ausgeben 
lassen. Eine Verbindung über P3.0 und P3.1 wurde hergestellt. Meine 
Frage ist nur:

Wie genau mache ich es??

Habe jetzt 2 Leitungen (eine zum Senden, eine zum Empfangen). Kann ich 
nun einfach meine Daten (Startbit + Übertragungs-Daten + Stopbit) auf 
diese eine Leitung legen?

Meine Überlegung: Nein, es geht nicht. Man muss diese in Bit-Format 
einteilen und nun einzeln über die Leitung senden (natürlich im 
Hinterkopf, das man mit dem LSB beginnt).

Ich habe leider keine Ahnung deswegen würde ich mich freuen wenn mir 
jemand helfen würde :/

Gruß

von innerand i. (innerand)


Lesenswert?

Müsst ihr die Serielle denn selbst programmieren?

Grundsätzlich bringen die meisten µCs einen UART mit der das schon kann, 
den müsste man dann nur noch konfigurieren.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Leon A. schrieb:
> Eine Verbindung über P3.0 und P3.1 wurde hergestellt.
Wie genau? Wurden die RXD und TXD Signale gekreuzt? Und warum heißen 
denn diese Pins RXD und TXD? TXD ist der Senderausgang und der muss auf 
RXD, den das ist der Empfängereingang. Such mal nach serielle 
Schnittstelle, da wird das evtl näher erläutert...

Und jetzt musst du dir mal ansehen,wie man in eurem uC die serielle 
Schnittstelle initialisiert und ansteuert. Keine Sorge, das haben schon 
zehntausende vor euch gemacht. Du wirst also schon ein Beispiel finden. 
Das analysiert ihr, bis ihr es versteht, und dann passt ihr es auf *eure 
Hausaufgabe* an.

: Bearbeitet durch Moderator
von Leon A. (Gast)


Lesenswert?

1. Ja wir haben sie gekreuzt :)
2. Das mit der UART habe ich jetzt schon sehr oft gelesen und so weit 
ich weiß hat unser µC eine UART-Schnittstelle
3. Schon mal wirklich Danke für die Antwort und eure Hilfe :)

von innerand i. (innerand)


Lesenswert?

Leon A. schrieb:

> 2. Das mit der UART habe ich jetzt schon sehr oft gelesen und so weit
> ich weiß hat unser µC eine UART-Schnittstelle

Na dann braucht ihr ja jetzt nur noch die Doku zu eurem µC, darin steht 
wie man so einen UART konfiguriert. Schaden würd's wohl auch nicht wenn 
ihr mal den Wikipedia Artikel des UART lest.

btw, ihr wollt sowas in die Richtung haben: 8 Datenbits, 1 Stopbit, no 
Parity, 9600 Baud, asynchron

von Leon A. (leona)


Lesenswert?

Okay nochmal:

Haben die uC am Port 3_0 und Port 3_1 verbunden: RxD mit TxD und TxD mit 
RxD.
Und meine Frage ist jetzt, wie ich das realisiere in C.
Habe aber keinen Plan wie. Erste Überlegung war:
Interrupt1 um zu gucken, wer senden möchte, also Abfrage an P3_0.
Interrupt2 um zu gucken, wenn der Taster gedrückt wurde, sollen die 
Werte der DIPs übernommen werden, umgewandelt werden und gesendet 
werden.
uC2 (Empfänger) soll diese annehmen, zusammensetzen und an den LEDs 
ausgeben.

Ich habe leider keinen Plan :-/ Versuche mich die ganze Zeit herein zu 
lesen aber da steht nirgendwo wie ich es nun realisiere.

MfG

Leon

von Tim S. (tommypic)


Lesenswert?

da es eine asynchrone schnittstelle ist, ist es egal wer gerade senden 
möchte.

wenn ich es richtig verstanden habe soll das so ablaufen:

-über dip-schalter werte einstellen
-bei tastendruck werte werden von µC1 eingelesen
-nach einlesen der werte zu µC2 über UART schicken

also ich würde das so lösen:

wie du gesagt hast interrupt bei tastendruck abfangen. die dip-schalter 
werte einlesen und dann einfach die 8 bit in das uart-senderegister 
schieben und der rest macht dein µC, wenn du die UART richtig 
konfiguriert hast und das sollte im datenblatt stehen. und ansonsten zum 
8051 sollte es einige beispiele geben zur benutzung der 
UART-schnittstelle in C

bei deinem µC2 musst du die UART-schnittstelle konfigurieren und dann 
entweder ein bit pollen (ständig abfragen), ob was im empfangen wurde 
oder eben auch ein interrupt auslösen lassen, wenn die schnittstelle 
etwas empfangen hat und dies dann auswerten.

von Karl H. (kbuchegg)


Lesenswert?

Leon Achterusch schrieb:
> Okay nochmal:
>
> Haben die uC am Port 3_0 und Port 3_1 verbunden: RxD mit TxD und TxD mit
> RxD.
> Und meine Frage ist jetzt, wie ich das realisiere in C.
> Habe aber keinen Plan wie.

Indem du im Datenblatt nachliest, wie die UART auf deinem µC-Typ zu 
benutzen ist und/oder du dir Beispiele im Netz suchst, in denen die UART 
im Einsatz ist.

> Erste Überlegung war:
> Interrupt1 um zu gucken, wer senden möchte, also Abfrage an P3_0.
> Interrupt2 um zu gucken, wenn der Taster gedrückt wurde, sollen die
> Werte der DIPs übernommen werden, umgewandelt werden und gesendet
> werden.

Quatsch. Dazu brauchst du keine Interrupts. Immer dieses Getue mit 
Interrupts. Was denkst du, was du aus µC Sicht bist? Du bist (als 
Mensch) aus µC Sicht ein schnarchlangsamer alter Sack. In der Zeit in 
der du einmal mit den Augen blinzelts kann der µC 1000 Sachen machen und 
langweilt sich dabei noch.

µc mit den Tasten
1
int main()
2
{
3
  ....
4
  alles initialisieren, UART auf Senden initialisieren
5
6
  while( 1 )
7
  {
8
    byte = Status der beiden Schalter
9
10
    byte per UART ausgeben
11
  }
12
}

µc mit den LED
1
int main()
2
{
3
   ....
4
   alles initialisieren, UART auf Empfang initialiseren
5
6
   while( 1 )
7
   {
8
     byte = Byte von der UART holen
9
10
     Led entsprechend der Bits ansteuern
11
   }
12
}

der erste µC kann ruhig in deinem Beispiel dauernd senden. Sendet der 
halt 200 mal in der Sekunde, das keiner der beiden Schalter betätigt 
ist. Stört doch momentan noch keinen.

> Ich habe leider keinen Plan :-/ Versuche mich die ganze Zeit herein zu
> lesen aber da steht nirgendwo wie ich es nun realisiere.

Sieh zu, dass du die UART zum laufen kriegst. Der Knackpunkt ist der 
Kommunikationskanal. Das was dann über diesen Kanal drüber geht (die 
Information) ist eine zweite Geschichte. Aber erst mal muss die 
Verbindung stehen.

: Bearbeitet durch User
von Uwe (Gast)


Lesenswert?

guckst du hier auf Seite 11 und
http://www.atmel.com/images/doc1919.pdf

und hier auf Seite 94
http://www.atmel.com/images/doc4316.pdf

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.