- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 8 von 8

Thema: Verbindung PC<->USB<->PIC

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53

    Verbindung PC<->USB<->PIC

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Magge2k
    Registriert seit
    27.10.2004
    Beiträge
    163
    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

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    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

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Magge2k
    Registriert seit
    27.10.2004
    Beiträge
    163
    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/Pr...s/D2XXPG33.pdf


    Als erstes musst du deine RS232 Schnittstelle beim PIC Initialisieren, hier ein Codeauszug und Beispiel für den 16F877:

    Code:
    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ß

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    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

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Magge2k
    Registriert seit
    27.10.2004
    Beiträge
    163
    Code:
    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;	
    	}
      }
    }

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    Dankeschön !!!!!

    Ich habs zusammen gebracht....

    Ich kann Daten zum PC schicken und in die andere Richtung funktionierts auch....

    Danke nochmals

    Michael

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Magge2k
    Registriert seit
    27.10.2004
    Beiträge
    163
    Bitteschön!

    Viel Erfolg bei deinem Projekt!

    Gruß Marc

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress