void read_from_mp(void){ // Read data: MP_DATA = XIOModule_DiscreteRead(&gpio, 1); if(MP_DATA & 0x80000000){ // if MP_VALID is high u8 index = (u8)((MP_DATA & 0x3F000000)>>24); // store data into buffer buffer[index] = MP_DATA & 0x00FFFFFF; IO_DATA |= 0x40000000; // raise IO_ACK XIOModule_DiscreteWrite(&gpio, 1, IO_DATA); }
int main() { u32 uDevId = XPAR_IOMODULE_0_DEVICE_ID; XIOModule mcsIOMdule; u8 read_data_8; u8 read_data_8_old; init_platform(); XIOModule_Initialize(&mcsIOMdule, uDevId); print("Hello World + GPIO \n\r"); while(1){ read_data_8 = XIOModule_DiscreteRead(&mcsIOMdule, 1); if( read_data_8 != read_data_8_old){ XIOModule_DiscreteWrite(&mcsIOMdule, 1, read_data_8); xil_printf("sw %02x\n\r",read_data_8); read_data_8_old = read_data_8; } } return 0; }