PIC16F1827 EUSART und FT232RL: Loopback

Gast #5024411
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
Gast #5024425
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?
#5024642
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?
Gast #5027247
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
#5027302
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?
Gast #5027320
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
#5027329
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?
Gast #5028361
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren