Здравствуйте, работаю с платой ЦАП PCI1724U в QNX 6.5.0. Поиск и инициализация платы происходит успешно, запись в регистры вроде тоже, но на портах напряжение отсутствует, не могу понять в чем дело. Может из-за того, что она имеет 32 битные регистры? Не знаю даже где копать. В чем может быть проблема? Помогите пожалуйста. Заранее спасибо.
struct pci_dev_info info1724U;
uint16_t iobase1724U, io_size;
void *hdl1724U;
int init_PCI1724U()
{
int n;
memset(&info1724U, 0, sizeof (info1724U));
if (pci_attach(0) < 0) {
// perror("pci_attach error");
return 1;
}
info1724U.VendorId = 0x13FE;
info1724U.DeviceId = 0x1724;
if ((hdl1724U = pci_attach_device(0, PCI_SHARE|PCI_INIT_ALL|PCI_SEARCH_VENDEV, 0, &info1724U)) == 0) {
// perror("pci_attach_device_error");
return 2;
}
for(n = 0; n < 6; n++) {
if(PCI_IS_IO(info1724U.PciBaseAddress[n])) {
iobase1724U = PCI_IO_ADDR(info1724U.PciBaseAddress[n]);
io_size =info1724U.BaseAddressSize[n];
break;
}
}
ThreadCtl(_NTO_TCTL_IO, 0);
if(mmap_device_io(io_size,iobase1724U) == (uintptr_t)MAP_DEVICE_FAILED){
// perror("Can't get access to I/O memory, %s",strerror(errno));
//perror("Can't get access to I/O memory");
return 3;
}
printf("iobase1724: %d\n", iobase1724U);
out32(iobase1724U+0x04, 0x00); //не синхронизировать выходы
return 0;
}
void output_DAC1724U(){
out32(iobase1724U, 0x10FFFF);
}
void* thread_out_DAC1724U(void *not_used){
while(1){
output_DAC1724U();
delay(5);
}
return 0;
}