Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
В моем девайсе сделана точка 86 - IN, Bulk, 512 байт, 4-ёх кратная буферизация. На входы FD0-FD7 (PORTB) контроллера подается параллельный код с цифровой ч/б камеры (каждый байт - пиксель, разрешение 640*480), строб с этой камеры идет на вход SLWR контроллера (передний фронт), FIFOADR1:0 соответственно заданы как 10. Задача - качать этот поток байтов в комп.
Настраиваю ФИФО и точку следущим образом:
CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1);
SYNCDELAY;
IFCONFIG |= 0x4B; //SLAVE FIFO, àñèíõð.
SYNCDELAY;
REVCTL = 0x03; // must set REVCTL.0 and REVCTL.1 to 1
SYNCDELAY;
SYNCDELAY;
EP1OUTCFG = 0x00; //see TRM section 15.14
EP1INCFG = 0xb0;
SYNCDELAY; //in
EP2CFG = 0xA0; //out 4
SYNCDELAY;
EP4CFG = 0x00;
SYNCDELAY;
EP6CFG = 0xE0; //in 4
SYNCDELAY;
EP8CFG = 0x00;
FIFORESET = 0x80; // reset all FIFOs
SYNCDELAY;
FIFORESET = 0x02; // reset EP2
SYNCDELAY;
FIFORESET = 0x04; // reset EP4
SYNCDELAY;
FIFORESET = 0x06; // reset EP6
SYNCDELAY;
FIFORESET = 0x08; // reset EP8
SYNCDELAY;
FIFORESET = 0x00;
SYNCDELAY;
EP2FIFOCFG = 0x0; //ýòè òî÷êè áåç ôèôû
SYNCDELAY;
EP4FIFOCFG = 0x0;
SYNCDELAY;
EP8FIFOCFG = 0x0;
SYNCDELAY;
EP6FIFOCFG = 0x08; //8, àôòàèí,
SYNCDELAY;
EP6AUTOINLENH = 0x02; //512
SYNCDELAY;
EP6AUTOINLENL = 0x00;
SYNCDELAY;
SYNCDELAY;
EP2BCL = 0x80; // arm EP2OUT by writing byte count w/skip.
SYNCDELAY;
EP2BCL = 0x80;
SYNCDELAY;
EP2BCL = 0x80; // arm EP2OUT by writing byte count w/skip.
SYNCDELAY;
EP2BCL = 0x80;
SYNCDELAY;
EP4BCL = 0x80; // arm EP4OUT by writing byte count w/skip.
SYNCDELAY;
EP4BCL = 0x80;
SYNCDELAY;
EP4BCL = 0x80; // arm EP4OUT by writing byte count w/skip.
SYNCDELAY;
EP4BCL = 0x80;
// enable dual autopointer feature
AUTOPTRSETUP |= 0x01;
Чо не так настраиваю? Все время сплошные 0xB5 передаются.
На компе накалякана прога (с примера bulkloop содрана и доделана) и все передачи в ней неправильные. Когда вручную заполняю точку - все работает.
Вообще настроил вроде по мануалу, подозреваю - может прога на компе не справляется с приемом данных?
Но даже если не справляется и перегруз буферов ФИФО идет, разве я не должен через CyConsole хотя бы первае 4 512-ибайтных пакета получить?