mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC16F1827 EUSART und FT232RL: Loopback


Autor: BeastyK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Leute,
hab ein kleines Lazarus Programm und kann mit meinem FT232RL Modul und 
Kabel TX auf RX am Modul die Daten im Loopback verschicken. Nun hab ich 
einen PIC16F1827 aufm Breadboard mit nem Programm drauf das zuerst ein 
paar Zeilen an den PC schickt und danach alles im Loopback zurück gibt 
was vom PC kommt.
Soweit so schlecht, die Zeilen kommen anscheinend nicht an, aber 
Loopback geht...dann hab ich probiert was passiert wenn der PIC keine 
Spannung hat und gar nicht gehen sollte und ich hab wieder nen 
Loopback!?!?
Verhält es sich so dass, wenn der PIC nicht läuft, es ist als hätte ich 
ein Kabel am FT232RL Modul mit RX-TX verbunden?

Gruß
Beast

Autor: Löter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BeastyK schrieb:
> Soweit so schlecht, die Zeilen kommen anscheinend nicht an, aber
> Loopback geht...dann hab ich probiert was passiert wenn der PIC keine
> Spannung hat und gar nicht gehen sollte und ich hab wieder nen
> Loopback!?!?

In Deiner software/Terminalprogramm Echo und dergleichen ausgeschaltet?

Autor: BeastyK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn ich das FT232RL-Modul nicht RX-TX mit dem Kabel Brücke, dann 
kommt bei meinem Programm auf dem PC auch nichts an. Also das Prof echot 
nicht.

Autor: Volker S. (vloki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BeastyK schrieb:
> Soweit so schlecht, die Zeilen kommen anscheinend nicht an, aber
> Loopback geht...dann hab ich probiert was passiert wenn der PIC keine
> Spannung hat und gar nicht gehen sollte und ich hab wieder nen
> Loopback!?!?
> Verhält es sich so dass, wenn der PIC nicht läuft, es ist als hätte ich
> ein Kabel am FT232RL Modul mit RX-TX verbunden?

Nein, vermutlich wird der PIC über den RX Eingang und die Schutzdiode 
darin vom FTDI versorgt. Wenn dann noch ein Kondensator am VDD hängt, 
reicht das eventuell aus, die Zeit zu überbrücken, wenn Low übertragen 
wird.

Was hast du für ein Programmiergerät/Debugger?

Autor: BeastyK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab ein Pickit3, debuggen müßte ich wohl...mag das immer nicht so 
GER.

Autor: vloki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar, warum sollte man auch "gerne" sehen wollen, wenn es doch so bequem 
ist blind zu sein ;-)

Autor: BeastyK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ich nicht sehe habe ich auch nicht gewußt....ohmann, ja, versteht 
schon

Autor: Volker S. (vloki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... im debug Modus bekommt man auch sofort eine Fehlermeldung wenn der 
PIC nicht läuft! Da braucht man nicht mehr viel denken ;-)

Autor: BeastyK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Leute,

wollte mich zurück melden und den Thread nicht ohne Antwort frei 
schweben lassen.
Ich hab das mit dem debuggen probiert, ich weiß das man einen Breakpoint 
beim PICKIT3 setzen kann, das mit den Variablen und sonstwas 
beobachten...naja, weiß nicht genau wie das geht (gibs da ein 
Tutorial?).
Egal, das Programm lief soweit und blieb auch in der While-Schleife und 
wartete darauf das es etwas in den RX bekommt das es dann an den TX 
durchreichen darf.
Lange Rede, kurzer Sinn, ich hab zum einen das Datenblatt nicht richtig 
angeschaut, was dazu führte das ich ausversehen den Alternate Pin 
erwischte und erst später an den kleinen lustigen Indizes sah das sich 
alles auf RB1 und RB2 abspielte.
Dann hab ich den Logic Analyser auf die Ports gehetzt, 
dankenswerterweise kam er auch mit UART zurecht und konnte sogar Auto 
Baudrate ermitteln.
Schuppdiwupp, die ermittelte Autobaudrate war total schief und krumm, 
die ASCII-Zeichen waren wirr oder Frameerrors, verdammt, ich hab ein 
Timingproblem!
Die Lösung liegt bei der PLL und dem OSCCON Register, das hatte ich im 
anderen Projekt richtig gemacht, dachte aber wohl das hätte doch nur was 
mit meinem Timer für die PWM zu tun (ohmann, neeneee).

//----- Oscillator Control Register 
----------------------------------------
    OSCCON = 0b01110000;//Internal Oscillator 8MHz

Nun tut's auch bei 19,2kBaud!

Leider hab ich nun wohl ein Problem mit dem Lazarus-Programm.
Ich hab das so aufgebaut das ich mir die Schnittstelle aussuchen kann 
(Synaser) und erst durch ein Button-Druck die Verbindung aufgebaut wird.
Ich würde nun gerne über einen Timer immer abfragen ob etwas vom µC 
geschickt wurde und es dann in ein Memo ablegen. Nur wenn die Verbindung 
noch nicht besteht handle ich mir ne Exception ein bei der 
Timer-Geschichte.
Andere verbinden einfach gleich nach Programmstart in der Main-Form 
(TForm1) und werfen den Timer an, das kann ich so nicht machen wenn ich 
bei den Buttons bleiben möchte...

Gruß
dat
Beast

Autor: Volker S. (vloki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BeastyK schrieb:
> Ich hab das mit dem debuggen probiert, ich weiß das man einen Breakpoint
> beim PICKIT3 setzen kann, das mit den Variablen und sonstwas
> beobachten...naja, weiß nicht genau wie das geht (gibs da ein
> Tutorial?).

So was?
http://microchipdeveloper.com/mplabx:debugging
http://microchipdeveloper.com/mplabx:breakpoints
(Beachte auch das Menü am linken Rand)


BeastyK schrieb:
> Ich würde nun gerne über einen Timer immer abfragen ob etwas vom µC
> geschickt wurde und es dann in ein Memo ablegen. Nur wenn die Verbindung
> noch nicht besteht handle ich mir ne Exception ein bei der
> Timer-Geschichte

Warum den Timer nicht erst dann starten, wenn die Verbindung besteht?
Keine Ahnung von Lazarus, aber hat die Port Komponente vielleicht so was 
wie ein Event/Signal..., das ausgelöst wird, wenn Daten zum Lesen da 
sind?

: Bearbeitet durch User
Autor: BeastyK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Volker,

danke für den Link!
Hab das mit dem Timer starten auch in den Button gelegt anstatt auf das 
Mainframe, wollte aber nicht so recht.
Ich kenn mich mit Synaser nicht so aus, da gibs soviele Sachen und meist 
geht mir dabei der Anwendungssinn ab.
Wenn ich zum Programm etwas poste bin ich ja schon aus dem "µC & 
Elektronik" Bereich raus und im "PC-Programmierung" drin.

Ich hab das FT232RL Modul (so ein Rotes aus der Bucht) jetzt, wo ich 
weiß das auch was vernünftiges gesendet wird, ausprobiert. RX an TX, TX 
an RX und Ground zu Ground des PIC's.
Es geht auch (besonders wenn man GND nicht vergisst!), aber wenn ich 
jetzt den PIC an der Batterie lasse und das USB-Kabel vom Modul 
entferne, dann leuchtet noch die rote Power LED....obwohl ich nur GND 
verbunden habe. Kennt das jemand?

MfG
Beast

Autor: Volker S. (vloki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BeastyK schrieb:
> Es geht auch (besonders wenn man GND nicht vergisst!), aber wenn ich
> jetzt den PIC an der Batterie lasse und das USB-Kabel vom Modul
> entferne, dann leuchtet noch die rote Power LED....obwohl ich nur GND
> verbunden habe. Kennt das jemand?

Nur GND oder auch RX/TX?

->

Volker S. schrieb:
> Nein, vermutlich wird der PIC über den RX Eingang und die Schutzdiode
> darin vom FTDI versorgt. Wenn dann noch ein Kondensator am VDD hängt,
> reicht das eventuell aus, die Zeit zu überbrücken, wenn Low übertragen
> wird.

Vielleicht wird jetzt das FTDI-Modul über seinen RX und die integrierte 
Schutzdiode vom PIC-TX versorgt?

Autor: Andreas G. (beastyk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin ;o),

sodele, also

Volker S. schrieb:
> Nur GND oder auch RX/TX?

RX/TX waren auch dran, also wahrscheinlich wie gehabt:

Volker S. schrieb:
> Vielleicht wird jetzt das FTDI-Modul über seinen RX und die integrierte
> Schutzdiode vom PIC-TX versorgt?

Scheint mir so, hab da sonst keine andere Idee und was du da sagtest 
klingt ja nicht so abwegig.

Nun bin ich Programm-technisch im Forum nochmal fündig geworden und hab 
das Lazarus (Delphi) Programm mit dem Synaser Paket so verändert 
bekommen das der Empfang/RX über den Timer läuft.
Mein PIC16F-Programm im µC schiebt aber am Anfang einfach mal so einige 
Zeilen an den FT232RL und beim Lazarus-Prog fehlt mir der Anfang und 
meist auch die letzten verschickten Zeilen. Dabei ist die serielle 
Verbindung vom PC zum FT232RL schon etabliert.
Schick ich später selbst was vom Laz-Prog aus an den µC kommt alles über 
den Loopback in der While-Schleife vom µC fein säuberlich 
zurück....mhhh, am Anfang kann ich mir ja noch vorstellen das vielleicht 
das Timer.Intervall zu lang ist (hab hier Timer1.Interval := 100;), aber 
warum verschluckt er den Rest hinten?

Gruß
dat
Beast

Autor: Volker S. (vloki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas G. schrieb:
> Mein PIC16F-Programm im µC schiebt aber am Anfang einfach mal so einige
> Zeilen an den FT232RL

Meiner Meinung nach ist das keine gute Idee...
(PIC sollte erst was schicken, wenn er vom PC dazu aufgefordert wird)

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.