mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Datenübertragung Serielle Schnittstelle


Autor: Benjamin Frankenreiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muss im Rahmen eines Schulprojekts mit Hilfe der Seriellen
Schnittstelle einen Code zum PC übertragen, den ich zuvor an einem
Mikrokontroller eingelesen habe! Kann mir bitte jemand erklären wie
genau die Serielle Schnittstelle funktioniert und wie ich sie
ansprechen kann?
Für eure Hilfe wäre ich sehr dankbar!

Autor: AndreasH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vom PC oder Mikrocontroller? Wenn PC, welches Betriebssystem?
Wenn Controller, welcher?

Ansonsten benutz mal die Suchfunktion im Code-Forum.
Da gibt es reichlich Beispiele

Grüße
Andreas

Autor: Benjamin Frankenreiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vom Pc soll dem Mikrokontroller (Infineon C515C, 8051-Familie) über den
Com-Port ein Tastaturkommando ünermittelt werden, worauf dann der
AD-Umsetzer den Spannungswer eines Widerstandthermometers einliest und
diesen an den Pc übermittelt.
Das Betriebssystem des PCs ist Win 2000.
Ich bin eigentlich ein Anfänger und weiß nicht mal wie ich die Daten,
bzw. das Tastaturkommando übermitteln soll!

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf der PC-Seite nimm ein Termimalprogramm (Hyperterminal) und auf der
8051-Seite die Funktion printf() bzw. falls Du Codespeicherprobleme mit
der Eval-Version bekommst, nimm itoa() und puts().

Einstellen der UART nicht vergessen (siehe Beispiel hello.c).


Peter

Autor: Heiko Maier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich habe in der Schule das gleiche prob.


Es ist so das ein analoges Thermometer an den µC (C515C-L)
angeschlossen wird. In dem Controller soll ne umwandlung vollzogen
werden also der 10 Bit A/D im µC benutzt werden. Es soll dann am RS232
die verarbeiteten Daten zum PC [OS egal] geschickt werden. Dort sitzt
ein C++ App welches die Daten grafisch auswertet.

Vorallem der Transfer über die RS232 (also Senden vom µC aus & empf. am
PC) is 'n bissl verzwickt. Wer mal was ähnliches hatte - posten. THX!!!

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal ne ganz dumme Frage: Im Unterricht wurde die Funktionsweise der
seriellen Schnittstelle überhaupt nicht besprochen???

Autor: Benjamin Frankenreiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, es wurde nichts besrprochen!
Wir(unsere Gruppe) haben die Aufgabe später unsere Ergebnisse der
Klasse zu präsentieren! Inklusive der Funktionsweise der RS232.
Kann mir mal bitte jemand sagen was UART heißt und was man darunter
versteht?
Ausserdem suchen wir ein Sniffertool, dass uns die Datenübertragung
anzeigt!
Danke für eure Hilfe!

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UART = universal asynchronous receiver/transmitter (universeller
asynchroner Empfänger/Sender)

Andere Bezeichungen sind ACE (asynchronous communications element) oder
gar ACIA (asynchronous communication interface adapter) - gemeint ist in
allen Fällen effektiv das gleiche.
Oft wird auch ein D oder ein Q als Präfix vorangestellt, das aussagt,
daß zwei oder vier Schnittstellen in einem IC zusammengefasst werden.

Ein Unterschied dazu stellen synchrone serielle Schnittstellen dar, die
zusätzlich zu den Daten auch ein Taktsignal übertragen (SPI/I²C fallen
beispielsweise in diese Kategorie).

Auf einem Windows-PC kann man mit Portmon (www.sysinternals.com, freier
download) die Aktivitäten der seriellen Schnittstelle abhören.

Autor: Jürgen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh mal hier: www.iftools.com ... -> CTB-Library. Das ist auch hier im
Forum schon mehrfach angesprochen worden. Da gibt es ein Beispiel.
Ansonsten benutzt du DEV CPP und eines meiner Beispiele:
http://home.arcor.de/juergen.schuhmacher/programmi...

Autor: Maximilian L (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was mich mal interessieren würde: auf was für einer schule bist du?
 so was 'tolles' machen wir nie :(

Autor: Benjamin Frankenreiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Übertragung von dem Mikrocontroller zum PC hab ich jetzt so weit,
aber jetzt muss ich noch ein Tastaturkommando vom PC an den
Mikrocontroller übertragen und ich weiß nicht wie ich dass machen soll!

Kann mir da bitte jemand helfen?!
Ich bin übrigens auf dem Technischen Gymansium und habe als Hauptfach
Informationstechnik!

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jedes Terminalprog hat auch ein Eingabefenster, um Zeichen zu senden.
Wie du sie vom MC bekommst steht in dessen Datenblatt. Gleich neben der
Stelle, wo man findet, wofür UART steht.

Autor: Heiko Maier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe folgendes Problem, ich schreibe 00h in das
Sende-und Empfangsregister des µC und schaue mir dann mit dem
Terminalprogramm an, was der µC sendet. Da kommen dann aber
irgendwelche
wirren Zahlen an, aber nicht 00h, was ich eigentlich übertragen
wollte!
Kann mir da jemand bitte helfen?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Heiko:
Was exakt für ein Terminalprogramm verwendest Du?
Ist sichergestellt, daß die Baudrate des µC korrekt ist?

Autor: Stulle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte die falsche Bautrate eingestellt (51 Serie). Der Controller
sollte in einer Endlosschleife von 0..255 jeden Wert zum Terminal
senden. Es kam immer etwas anderes an. Ich war der Meinung der
Controller sendet mit 9600 in wirklichkeit waren es aber 19600 Baud.

Autor: Heiko (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ftp://test0711.te.ohost.de/tmp/rofl.zip



Das ist der Code den ich bisher zum Testen geschrieben habe (Keil
µVision). Wenn ich ihn jedoch übertragen will kommt "Connection To
Target System Lost"!


da dachte ich mit nur wtf - habt ihr ne ahnung?

irgendwelche fehler im Code?!?

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

da ich mich mit ähnlichen Problemen rumschlage (ich habe eine fertige
Baugruppe mit unbekannter Controller-Soft aber ein Steuerprogramm unter
DOS) wo ich die verwendeten Parameter rausbekommen möchte habe ich ein
sehr gutes Terminalprogramm genommen an welchem man viel einstellen
kann. Es läuft allerdings unter DOS.
Es nennt sich TERM und ist von einem (leider schon verstorbenen)
Funkamateur DL5FBD.
Du findest es glaube nur noch auf der Seite von Symek (www.symek.de)
Es ist in Deutsch.

Notfalls kann ich es Dir auch schicken.

Viel Erfolg von Jürgen....

Autor: Heiko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe jetzt rausbekommen an was es lag...

Ich musste nach dem Debuggen mit einer Schleife noch warten bis ich auf
Transmit gehen konnte, da sonst ein Übertragungsfehler auftaucht.
Anscheinend schmiert der µC sonst ab (in den Debug-Mode komme ich, aber
Transmit geht nicht) - also bei RS232 Kommunikation immer ne Schleife
rein falls es Probleme gibt ;P



Bis zum nächsten Problem dann...

Autor: Heiko (Gast)
Datum:
Angehängte Dateien:
  • preview image for 1.jpg
    1.jpg
    227 KB, 108 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Hier ist die Aufgabenstellung die wir bekommen haben. Wir müssen nun
noch die Baudrate einstellen und was zum µC senden...



Wenn jm. was ähnliches schonmal hatte - posten - Danke!

Autor: Heiko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sende ich was vom PC aus an den Controller (Tastendruck soll ein
Ereignis am Controller auslösen)


danke!

Autor: heiko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
weiß wirklich niemand wie ich vom pc aus was zum µC schicken kann?!?


Danke!

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich hab sowas ähnliches mit einem MSP430 von Texas Instruments gemacht.
Die serielle Datenübertragung war dabei das kleinste Problem - gute
Beispiele findet man im Internet, beispeilsweise unter www.mathar.com.

Der MSP430 hat ein Sende- und ein Empfangsregister. Will ich Daten vo
uC zum PC senden, so schreibe ich diese ins Senderegister. Kommen Daten
vom PC ins Empfangsregister, so wird eine Interrupt Service Routine
aufgerufen und ich kann mit den Daten machen was ich will. Steht alles
im Handbuch/Datenblatt des uCs. Codebeispiele für den MSP findest du
auf der TI-Seite.

Versuch als erstes ein Echo-Programm zu schreiben, dass dir den vom PC
gesendeten Buchstaben wieder zurück sendet. Sebastian von
www.mathar.com macht das in einem Tutorial und ich finde das ein sehr
gutes Beispiel für den Anfang. In Sachen RS-232 musst du dich natürlich
erst selbst ein wenig schlau machen, aber auch das sollte mit einer
halben Stunde recherche kein Problem sein.

Gruss Tom

Autor: Benjamin Frankenreiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo kann ich denn eigentlich den Wert, den mir der µC an den PC sendet
"abholen" um in dann in einem C-Programm zu visualisieren?
Kann mir da jemand weiterhelfen?

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau dir mal createfile, readfile, und setcommstate an

Autor: Benjamin Frankenreiter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So...

ich binn jetzt soweit - ich hab ein COM+ Programm geschrieben.
Allerdings hängt es sobalt ich was in das Memo Feld eingebe sich auf.
Meine Vermutung ist das es an der Sperrung der RS232 Schnittstelle
unter WinXP liegt. Es währe toll wenn einer von euch den Code mal
anschaut und mir vllt. noch den einen oder anderen Tip geben kann.

Habe WinXP / Win2k

Habe den Borland C++ Builder 5 benützt...


Danke!

Autor: Benjamin Frankenreiter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe noch ein Problem und zwar betrifft das die Paritätsprüfung,
ich habe einen Modus ausgewählt, bei dem ich ein Paritätsbit übertragen
kann. Die Frage ist nur wie kann ich dann auf dem Rechner
die Parität überprüfen?

Kann mir da jdn. helfen?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hat das mit COM+ (dem Nachfolger von DCOM) zu tun?
Was magst Du mit "der Sperrung der RS232 Schnittstelle unter WinXP"
meinen?

Wenn die übertragene Parität nicht mit der erwarteten übereinstimmt,
dann gibt es einen "parity error", den man unter anderem mit der
etwas widersprüchlich benannten Win32-API-Funktion ClearCommError
abfragen kann.

  "If a communications port has been set up with a TRUE
  value for the fAbortOnError member of the setup DCB
  structure, the communications software will terminate
  all read and write operations on the communications
  port when a communications error occurs.
  No new read or write operations will be accepted
  until the application acknowledges the communications
  error by calling the ClearCommError function.

  The ClearCommError function fills the status buffer
  pointed to by the lpStat parameter with the current
  status of the communications device specified by the
  hFile parameter."

(aus der Dokumentation von ClearCommError)

Autor: AndreasH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich vermute mal, dass es hieran liegt:
ctmoNew.ReadTotalTimeoutMultiplier = 0;

Damit lässt Du Windows unendlich lange warten ohne Timeout.
Ich setze den Wert immer auf 1.

Um die Paritätsprüfung brauchst du dich nicht zu kümmern.
Das macht der Portbaustein selber. Du stellst nur ein, dass die Parität
Even oder Odd ist
BuildCommDCB("9600,N,8,1", &dcbCommPort);
Kenne BuildCommDCB jetzt nicht auswendig. Wahrscheinlich muss es bei
Even dann so aussehen:
BuildCommDCB("9600,E,8,1", &dcbCommPort);

Grüße
Andreas

Autor: Benjamin Frankenreiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das Normal, dass nach dem 3. oder 4. Übertragenen Signal sich das
Programm aufhängt? Das ist voll komisch es funktioniert am Anfang und
ich bekomm auch ein sinnvolles richtiges Ergebnis, aber dann hängt sich
das Projekt.
An was könnte das liegen?

Autor: Benjamin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
habe es nun hinbekommen.


für alle die auch solch ein problem haben -> der sourcecode

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.