Forum: Mikrocontroller und Digitale Elektronik FT245 - Problem


von flownfluid (Gast)


Lesenswert?

Hallo zusammen,

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,&EventDWord);
  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::openFTDI()
{
  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:
  while(1)
  {
    while(USB_D_NTXE == 1)
    {
    }
    PORTD = 0xFF;
    USB_D_WR = 1;
            asm(" NOP");
    USB_D_WR = 0;
  }

Leider zeigt mir die Dos-Console immer "no value was writen on the
bus" und ich habe keine Ahnung wieso

Vielen Dank für euere Hilfe

Gruss

von MSE (Gast)


Lesenswert?

>>    if(ftStatus = FT_OK)

Unabhängig von allem anderen ist in obiger Zeile schon mal ein Fehler:
Zuweisung statt vergleich, wegen '=' statt '=='.

Gruß, Michael

von flownfluid (Gast)


Lesenswert?

Ja ja der Fehlerteufel...

Merci aber funkt gleich nicht :-(

von chrigu (Gast)


Lesenswert?

Ich glaube, um ein FT_Read auszuführe, musst du zuerst ein FT_Purge
machen, damit der Buffer gelöscht wird und sich wieder neu beschreibt.
Grusss chrigu

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.