Archiv verlassen und diese Seite im Standarddesign anzeigen : Verbindung PC<->USB<->PIC
michas_rob
02.03.2007, 14:58
Hello zusammen,
ich habe ein Problem, ich habe mir mit einem FTDI FT232BM USB Chip eine USB Schnittstelle für meinen PIC 18F2520 zusammen gelöttet.
Sie wird Porblemlos erkannt und den passenden Treiber (D2xx) von der FTDI Seite habe ich auch schon installiert.
Nun stehe ich aber vor meinem eigentlichen Problem und zwar hab ich keinen Ahnung wie ich diese USB Schnittstelle ansprechen kann.
Da ich bereits C++ Erfahrungen hab würde ich mir gerne ein kleines Programm schreiben, welches einen String an den PIC sendet. Und dieser diesen String an das LCD, welches am PORTB angeschlossen ist, ausgeben.
Nun meine Frage an euch, hat schon jemand ein Programm in C++ geschreiben welches mit einem PIC über USB kommuniziert, oder kann mir jemand einen Tipp geben, wie ich am besten beginne.
Danke jetzt schon für alle Antworten
Michael
hiho, Michael!
Ich hätte ein solchen Testprogramm nur, habe ich den Parallelen FTDI Chip verwendet und einen PIC16F877. Der Code für den PIC habe ich in C geschreiben und das Windowsprogramm mit dem BCB.
Wie programmierst du deinen PIC?
Schon einmal eine Routine geschreiben um irgendwelchen Text auf dem LCD auszugeben?
Was für eine Programmiersprache bzw. Umgebung verwendest du für dein Programm für den PC?
Gruß Marc
michas_rob
03.03.2007, 17:29
hallo,
danke erst einmal für deine Antwort....
Ich programmiere meinen PIC in C.
Ja, ich hab schon eine Routine geschrieben und eine Tastenabfrage mit dieser man verschiedene Sachen auf dem LCD darstellen kann.
ZUrzeit kämpfe ich noch bei diesem Programm mit den Interrupts.
Du könntest mir sicher weiterhelfen, denn ich hänge zurzeit bei einer Verbindung zwischen PIC und dem FTDI Chip. Dieser ist über UART mit dem PIC verbunden und nun versuche ich zweifelhaft diesen anzusprechen. Habe gestern nämlich noch ein Tool gefunden mittels diesem man eine Bit-Kombination an den FTDI Chip über den USB Port senden kann und mittels desen versuche ich nun eine Kommunikation aufzubauen.
Danke Michael
Hiho, ich bin gerade erst wieder an den PC gekommen.
Hast du eigentlich ein Evaluation Kit von dem IC oder alles selber aufgebaut. Weil ich ein solches Kit habe und von daher die feinheiten beim Hardware aufbau nicht kenne. Darum geh ich jetzt mal nur auf die Verbindung ein und hoffe das alles richtig angeschlossen ist usw.
Also gut als erstes würde ich dir empfehlen den Programming Guide von FTDI herunter zu laden.
http://www.ftdichip.com/Documents/ProgramGuides/D2XXPG33.pdf
Als erstes musst du deine RS232 Schnittstelle beim PIC Initialisieren, hier ein Codeauszug und Beispiel für den 16F877:
void initUSART(void)
{
RS232INFLAG = 0x00;
//===== USART initialisieren ======
TXSTA = 0x20;
RCSTA = 0x90;
//=== USART Baudrate einstellen ===
BRGH = 0;
SPBRG = 0x0F;
//==== Interrupts vorbereiten =====
TXIE = 0;
RCIE = 1;
PIR1 = 0x00;
PIR2 = 0x00;
GIE = 1;
PEIE = 1;
Delay1ms(1);
//==== Welcome Nachricht an Terminal =====
/*COMString("Der COM-Port wurde Initialisiert!");
COMOut(0x0D);*/
COMString("Have a nice DAY!");
COMOut(0x0D);
//==== HIER KANN DIE AUSGABE ZUM LCD STEHEN z.B.
// LCD Routine ("Die Schnittstelle wurde Initialisiert") oder ähnliches
}
//================================================== ===============
Ich weiß nicht ob die einstellungen beim 18Fxxxx gleich sind von daher solltest du es mit den registern von deinem PIC vergleichen.
Im Datenblatt sind auch die einzelnen werte für die Übertragungsgeschwindigkeit angegeben.
Um diese Funktion zu testen könntest du den VCP Treiber von FTDI installieren und mit dem dazugehörigen Comport eine Terminalverbindung zum Controller herstellen.
Ich habe gerade nicht mehr Zeit aber Fortsetzung folgt!
gruß
michas_rob
03.03.2007, 18:07
Danke für deine rasche Antwort!
Ich habe eine Frage zu deinem Beispielcode.
COMString("Have a nice DAY!");
Wie geht diese Funktion weiter?
Danke Michael
void COMString(const char *string)
{
char __cs;
__cs = *string;
while(__cs>0)
{
string++;
hier2:
if (TRMT)
{
if (__cs == 0) break;
TXREG = __cs;
Delay10us(1);
__cs = *string;
}
else
{
goto hier2;
}
}
}
michas_rob
03.03.2007, 19:06
Dankeschön !!!!!
Ich habs zusammen gebracht....
Ich kann Daten zum PC schicken und in die andere Richtung funktionierts auch....
Danke nochmals
Michael
Bitteschön!
Viel Erfolg bei deinem Projekt!
Gruß Marc
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.