mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS-232 empfangen mittles PIC16F628


Autor: Patrick Plattes (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

dies ist das erste mal, dass ich hier im Forum etwas schreibe. Obwohl
ich nun seit zwei Tagen denke, google, durch das Forum streife und mich
durch spruts Seite lese komme ich einfach nicht weiter.

Ich möchte gerne einen PIC16F628 an eine serielle Schnittstelle des PCs
anschließen und die übermittelten Daten an einem LCD-Display ausgeben.
Wenn ich die Daten in das Programm schreibe werden die auch
ordnungsgemäß ausgegeben, aber wenn ich die via RS-232 übertragenen
Daten ausgebe kommen nur seltsame Zeichen (btw. interessanten
Zeichensatz haben diese Displays).

Da das direkte Ausgeben funktioniert denke ich, dass es an meiner
RS-232 Konfiguration liegt.

Von der Hardwareseite scheit alles sauber zu sein, denn ansonsten würde
er keine Daten empfangen, oder? Als Pegelwandler setze ich einen MAX232
ein.

Ich habe den Quellcode mal angehangen. Wenn jemandem etwas einfällt
oder einen Tipp für mich hat bitte ich um eine Antwort, denn so langsam
frustriert mich das Teil :-(.

Danke und viele Grüße,
 Patrick

Autor: Dmitri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Patrick!

movlw D'26'; 9600 Baud at 3.932 MHz
movwf SPBRG

Sollte es bei 4MHz nicht "25" sein? Du benützt ja den internen 4MHz
Oszillator, ne?

Gruss
Dmitri

Autor: Patrick Plattes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hatte zuerst das mit dem internen Oszillator versucht, hatte aber
keinen Erfolg. Da der erhebliche Abweichungen von 4MHz haben kann habe
ich nun einen externen dran gelötet, aber auch ohne Erfolg.

Die 25 für SPBRG habe ich berechnet, aber sowohl 25, als auch 26
funktionieren nicht.

Danke,
 Patrick

Autor: Heiner Bm (karadur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

entschuldige wenn ich so dumm frage aber wo ist im Sourcecode die RS232
Empfangsroutine?

Autor: Yves (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie mit Polling unter "tmp" erledigt, allerdings wird nur 1 Zeichen
empfangen!

Autor: Yves (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... sorry nicht "Wie" sondern "wird"! g

Autor: Heiner Bm (karadur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Yves: Danke

Ich kenne mich mit PIC nicht aus.
Ich hatte aber ähnliche Probleme mit SAB80535.
Das Problem war, das der PC Strings sendete und der Controller ohne
interuptgesteuertem Empfang nicht schnell genug war ( 14,384 MHz )

Autor: Yves (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber ich denke das Polling wird schnell genug sein! Sind zur Abfrage ja
nur 2 Befehle - Die Abfrage und das goto!

Stimmt die Baudrate denn auf dem PC selber? Mit welchem "Tool" läuft
das ganze. Denn ich denke mit dem Windows Terminal kann man diese
ungerade Baudrade nicht einstellen!?

Falsche Zeichen sind meistens ein Problem einer flaschen Baudraute auf
der Seite des PCs oder des uCs!

Autor: Yves (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... manbinichdooof sorry, sinnlose Antwort! Baud nicht gleich
Oscillator :(

Autor: Patrick Plattes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche masl allen zu antworten :)

Hans-Heinrich: wie Yves richtig erklärt hat geschieht das empfangen
über ein einfaches Polling. Das RS-232 Protokoll muss an im übrigen bei
diesem PIC nicht implementieren, da er das mitbringt. Ich bin im übrigen
auch der Meinung, dass es schnell genug sein sollte, da ich lediglich
ein Zeichen empfange.

Yves: Ich benutze minicom unter Linux.


Grüße,
 Patrick

Autor: tippgeber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erster Ansatz bei Kommunikations-Debugging:
Das Empfangene wieder zurücksenden und sehen, was ankommt.

Autor: Patrick Plattes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

und danke für die vielen Antworten. Ich habe den Fehler gefunden :).
Zuerst einmal möchte ich sagen, dass ich doch nicht ganz so dämlich
binn, wie ich aussehe g, denn die programmierung war sichtig. ich
habe jetzt mal den MAX232 getauscht und siehe da, es funktioniert...

Aber ohne die Hilfe wäre ich wohl kaum darauf gekommen. Da mir keiner
geschrieben hat, dass das Programm nicht funktionieren kann ( aus
welchem Grund auch immer ) habe ich angefangen die Hardware mal zu
tauschen, und siehe da...

Nochmals Danke und viele Grüße,
 Ein sehr glücklicher Patrick

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.