int main() { init_platform(); XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module microblaze_register_handler(XIOModule_DeviceInterruptHandler, XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler XIOModule_Start(&gpo); // start the GPO module XIOModule_Connect(&gpo, XIN_IOMODULE_FIT_1_INTERRUPT_INTR, timerTick, NULL); // register timerTick() as our interrupt handler XIOModule_Enable(&gpo, XIN_IOMODULE_FIT_1_INTERRUPT_INTR); // enable the interrupt microblaze_enable_interrupts(); // enable global interrupts u8 leds = 0; while (1){ // write the LED value to port 1 (you can have up to 4 ports) XIOModule_DiscreteWrite(&gpo, 1, leds++); xil_printf("%d", leds); xil_printf(","); delay(500); // delay one half second } return 0; }
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; init_platform(); //MicroBlaze MCS IOModule Initialize XIOModule_Initialize(&mcsIOMdule, uDevId); //set GPO1 XIOModule_DiscreteWrite(&mcsIOMdule, 1,2); //UART print("Hello World\n\r"); cleanup_platform(); return 0; }
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; }