-
-
Neuer Benutzer
Öfters hier
PIC18F452 und FT245
Hallo zusammen,
ich weiss nicht genau in welches Forum ich es ablegen muss, also seid mir bitte nicht böse falls es am falschen Ort ist...
Ich arbeite das erste mal mit einem FT245 Chip und habe da so meine
Probleme.
Ich brauche diesen Chip um die Daten, welcher mir ein PIC18F452
bereitstellt, zu lesen.
Laut Doku von FTDI beim D2XX- Treiber kann man die Daten unter C++ auf
zwei verschiedenen Arten lesen:
1. immer die aktuellen Daten
2. mit einem timout
Die 2. Methode funktioniert mir aber ich bräuchte die 1. Methode und
diese Funktioniert mir irgendwie nicht.
Mein C- Funktion sieht so aus:
void USB::readFTDIonce()
{
FT_STATUS ftStatus;
DWORD EventDWord;
DWORD TxBytes;
DWORD BytesReceived;
DWORD RxBytes;
unsigned char RxBuffer[256];
FT_GetStatus(ftHandle,&RxBytes,&TxBytes,&EventDWor d);
if(RxBytes > 0)
{
ftStatus = FT_Read(ftHandle,RxBuffer,RxBytes,&BytesReceived);
if(ftStatus = FT_OK)
{
for(int i = 0 ; i< int(RxBytes) ; i++)
{
printf("%i\n",RxBuffer[i]);
}
}
else
{
printf("no value was writen on the bus\n");
}
}
else
{
printf("can't read\n");
}
}
und fürs öffnen des devices:
void USB:
penFTDI()
{
FT_STATUS ftStatus;
ftStatus = FT_Open(0,&ftHandle);
if(ftStatus == FT_OK)
{
printf("CONNECTED\n");
}
else
{
printf("NOT CONNECTED\n");
}
}
mit dem Pic schreibe ich folgendermassen auf den Bus:
void main(void)
{
init();
USB_D_NRD = 1;
USB_D_WR = 0;
while(1)
{
while(USB_D_NTXE == 1)
{
}
PORTD = 0xFF;
USB_D_WR = 1;
asm(" NOP");
USB_D_WR = 0;
}
}
void init()
{
PORTD = 0x00;
TRISD = ALL_OUTPUT;
PORTC = 0x00;
TRISC = 0x59;
}
und noch die Variabelndeklarationen
static bit USB_D_NRD @ (unsigned)&PORTC*8+1; /* */
static bit USB_D_WR @ (unsigned)&PORTC*8+2; /* */
static bit USB_D_NTXE @ (unsigned)&PORTC*8+3; /* */
static bit USB_D_NRXF @ (unsigned)&PORTC*8+4; /* */
Leider zeigt mir die Dos-Console immer "no value was writen on the
bus" und ich habe keine Ahnung wieso
Leider habe ich keine Ahnung wo der Fehler ist, vielleicht mache ich etwas auf der Seite vom PIC falsch das heisst irgend eine falsche Initialisation oder sonst was, oder ich kann den FTDI- Code nicht nachvollziehen...
Vielen Dank für euere Hilfe
Gruss
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen