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
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?
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?
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
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:debugginghttp://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?
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
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?
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
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)