void osTimerInterruptInitialize(void) { /* ************ BEGIN TARGET SPECIFIC SECTION **************/ TimerInterval(0); (VPint(TDATA(0))) = gBUSCLK/100; TimerStart(0); Enable_Int(TIMER0_INT); /* ************ END TARGET SPECIFIC SECTION **************/ }
void updateUserland(void) { //J センサのバッファがいっぱいになっていた場合の処理 if (sGetFlagOnce(sFlagSensorLogIsFull)) { char *str = sString; uint8_t idx = 1-sActiveIndex; for (int i=0 ; i<LOG_RECODE_SIZE ; ++i) { uint32_t len = sSensorDataToText(sSensorLog[idx][i].timeStamp, sSensorLog[idx][i].duty, sSensorLog[idx][i].distance, &sSensorLog[idx][i].data, str, SENSOR_RECODE_TEXT_LEN+1); str += len; } UINT len = 0; f_write(&sLogFile, (void *)sString, (str - sString), &len); f_sync(&sLogFile); } //J UARTからの距離計計測 uint32_t len = uart_get_rxlen(); while (len) { len--; uint8_t tmp = 0; uint32_t rlen = 0; (void)uart_rx_n(&tmp, 1, &rlen); (void)rlen; //J パケットの先頭(0x10)を探す if (sUartState == UART_WAIT_FOR_STX) { if (tmp == 0x10) { sUartState = UART_DATA_RECEIVING; sUartReceiveLen = 0; sUartReceiveBuf.byte[sUartReceiveLen++] = tmp; } } //J 見つけたら16バイト受信する else{ sUartReceiveBuf.byte[sUartReceiveLen++] = tmp; if (sUartReceiveLen >= sizeof(DISTANCE_METER_PACKET)) { if (sUartReceiveBuf.byte[1]==0x02 && sUartReceiveBuf.byte[15]==0x03) { Disable_Int(); sDistanceX += sUartReceiveBuf.packet.x; sDistanceY += sUartReceiveBuf.packet.y; Enable_Int(); } sUartState = UART_WAIT_FOR_STX; } } } return; }
void setupIRQEnv() { //mask all interrupt ClrIntStatus(); //create interrupt handler table creatIntHandlerTable(); //register interrupt setIRQHandler(nTIMER0_INT, Timer0_ISR); setIRQHandler(UART0_INT, UARTIrq); //setIRQHandler(nDMA0_INT, Dma0Done); //setIRQHandler(nDMA1_INT, Dma1Done); setIRQHandler(nDMA2_INT, IsrForUSBDma2); //setIRQHandler(nDMA3_INT, Dma3Done); setIRQHandler(nIIC_INT, IICInt); setIRQHandler(nEXT8_23_INT,ExternIntDevice); setIRQHandler(nUSBD_INT,usbIRQ); //enable IRQ enable_IRQ(); //enable device interrupt Enable_EInt(IRQ_LAN); Enable_Int(nTIMER0_INT); Enable_Int(UART0_INT); //Enable_Int(nDMA0_INT); //Enable_Int(nDMA1_INT); Enable_Int(nDMA2_INT); //Enable_Int(nDMA3_INT); Enable_Int(nIIC_INT); Enable_Int(nEXT8_23_INT); Enable_Int(nUSBD_INT); }