Вопрос к знатокам: почему ft245 может некорректно передавать считанные данные ?
Более подробно о ситуации: имеется ft245, подключённая по типовой схеме. Преобразователь ничего не получает от управляющего контроллера, т. е. RD# - выставлена в 1, WR - выставлена в 0. Но библиотечная функция ftdi_read_data () при обращении к этому устройству немедленно, не дожидаясь таймаута всегда возвращает 0. Если подставить вместо ftdi_read_data () ftdi_write_data - то всё нормально, данные уходят если управляющий контроллер их считывает, либо возвращается ошибка превышения таймаута, если контроллер данные не принимает. Где могут быть грабли, в какую сторону посоветуете копнуть ? (на всякий случай привожу проблемный код; при запуске программа почти сразу выдает "total read 0"):
Код
#include <cstdio>
#include <ftdi.h>

#define L 128

int main (void)
   {
   struct ftdi_context ftdi_context;
   int ret, cnt = 0;
   ftdi_init (&ftdi_context);
  
   ret = ftdi_usb_open(&ftdi_context, 0x0403, 0x6001);
  
   if (-5 == ret)
      std :: fprintf (stderr, "wrn: retcode = -5\n");
   else  
      if (0 > ret)
         {
         std :: fprintf (stderr,"unable to open ftdi device: %d (%s)\n", ret, ftdi_get_error_string (&ftdi_context));
         goto end;
         }
  
   for (int i = 0;i < 0x1;i++)
      {
      static unsigned char buffer[L];
      int rd;
      
      rd = ftdi_read_data (&ftdi_context, buffer, L);
      if (0 > rd)
     std :: fprintf (stderr,"error while read ftdi: %d (%s)\n", ret, ftdi_get_error_string (&ftdi_context));
      else
         cnt += rd;  
      }
      
   printf ("total read %d\n", cnt);  
   ftdi_usb_close (&ftdi_context);
   ret = 0;  
   end:
  
   ftdi_deinit (&ftdi_context);
   return ret;
   }