/*********************************************************************//** * @brief c_entry: Main RIT program body * @param[in] None * @return int **********************************************************************/ int c_entry (void) { /* Initialize debug via UART0 * – 115200bps * – 8 data bit * – No parity * – 1 stop bit * – No flow control */ debug_frmwrk_init(); _DBG(menu); RIT_Init(LPC_RIT); /* Configure time_interval for RIT * In this case: time_interval = 1000 ms = 1s * So, RIT will generate interrupt each 1s */ RIT_TimerConfig(LPC_RIT,TIME_INTERVAL); _DBG("The time interval is: "); _DBD32(TIME_INTERVAL); _DBG_(" millisecond.."); #ifdef MCB_LPC_1768 /* Using LED2.2 for testing */ //turn on LED2.2 FIO_SetDir(2,(1<<2),1); FIO_SetValue(2,(1<<2)); #elif defined(IAR_LPC_1768) /* Using LED1 (P1.25 for testing */ FIO_SetDir(1,(1<<25),1); FIO_ClearValue(1,(1<<25)); #endif NVIC_EnableIRQ(RIT_IRQn); while(1); return 1; }
inline void LatchIn(void){ #if 0 for(uint32_t i=0;i<DelayLatchIn;i++){ asm("nop"); } #endif // ticks_at_LE_start = ticks; FIO_SetValue(LED_LE_PORT, LED_LE_BIT); #if 0 for(uint32_t i=0;i<5;i++){ asm("nop"); } #endif // ticks_at_LE_finish = ticks; FIO_ClearValue(LED_LE_PORT, LED_LE_BIT); #if 0 for(uint32_t i=0;i<10;i++){ asm("nop"); } #endif // ticks_at_OE_start = ticks; FIO_ClearValue(LED_OE_PORT, LED_OE_BIT); /* xprintf("SB:%d ",SEND_BIT); xprintf("DMS_S:%d ",ticks_at_DMA_start); xprintf("DMS_F:%d ",ticks_after_DMA_finish); xprintf("DMS_LE_S:%d ",ticks_at_LE_start); xprintf("DMS_LE_F:%d ",ticks_at_LE_finish); xprintf("DMS_OE_S:%d\n",ticks_at_OE_start);*/ }
void spi_transfer(volatile U8* buf, U16 len, U8 toggle_cs) { U16 i; // ZG2100_CSoff(); FIO_ClearValue(WF_CS_PORT, WF_CS_BIT); // for (i = 0; i < len; i++) { // ZG2100_SpiSendData(buf[i]); // Start the transmission // buf[i] = ZG2100_SpiRecvData(); // } SSP_DATA_SETUP_Type xferConfig; xferConfig.tx_data = buf; xferConfig.rx_data = buf; xferConfig.length = len; SSP_ReadWrite (WF_SPI_CHN, &xferConfig, SSP_TRANSFER_POLLING); if (toggle_cs) { // ZG2100_CSon(); FIO_SetValue(WF_CS_PORT, WF_CS_BIT); } return; }
/* Example of usage: digital_write(PORT_0, X_STEP_PIN, HIGH); */ void digital_write(uint8_t portNum, uint32_t bitValue, uint8_t state) { if (state) FIO_SetValue(portNum, bitValue); else FIO_ClearValue(portNum, bitValue); }
void write_pin (tPinDef pin, uint8_t state) { if (pin.port != UNDEFINED_PORT) { if (state ^ pin_is_active_low (pin.modes)) FIO_SetValue (pin.port, _BV(pin.pin_number)); else FIO_ClearValue (pin.port, _BV(pin.pin_number)); } }
int _FIO_SetValue(uint8_t * args) { uint8_t * arg_ptr; uint8_t portNum; uint32_t bitValue; if ((arg_ptr = (uint8_t *) strtok(NULL, " ")) == NULL) return 1; portNum = (uint8_t) strtoul((char *) arg_ptr, NULL, 16); if ((arg_ptr = (uint8_t *) strtok(NULL, " ")) == NULL) return 1; bitValue = (uint32_t) strtoul((char *) arg_ptr, NULL, 16); FIO_SetValue(portNum, bitValue); return 0; }
void TIMER0_IRQHandler(void){ // xprintf("TIMER0_IRQ"); if (TIM_GetIntStatus(LPC_TIM0,TIM_MR0_INT)){ TIM_ClearIntPending(LPC_TIM0, TIM_MR0_INT); #if 0 if(TOG[0]) // FIO_SetValue(LED_LE_PORT, LED_LE_BIT); GPIO_SetValue(LED_4_PORT, LED_4_BIT); else // FIO_ClearValue(LED_LE_PORT, LED_LE_BIT); GPIO_ClearValue(LED_4_PORT, LED_4_BIT); TOG[0]=!TOG[0]; // TIM_ClearIntPending(LPC_TIM0, TIM_MR0_INT); // return; #endif // xprintf(INFO "RIT N=%d B=%x NXT_T=%d TX=%x\n",SENDSEQ,SEND_BIT,DELAY_TIME,LED_PRECALC[0][SEND_BIT]); //Setup new timing for next Timer DELAY_TIME=SEQ_TIME[SENDSEQ]; SEND_BIT=SEQ_BIT[SENDSEQ]; //Retart sequence if required SENDSEQ++; SENDSEQ>=no_SEQ_BITS ? SENDSEQ=0 : 0; #ifdef DMA // xprintf("SEND_BIT:%d\n",SEND_BIT); // xprintf("DELAY_TIME:%d\n",DELAY_TIME); GPDMACfg.DMALLI = (uint32_t) &LinkerList[0][SEND_BIT][BufferNo]; GPDMA_Setup(&GPDMACfg); GPDMA_ChannelCmd(0, ENABLE); #endif TIM_UpdateMatchValue(LPC_TIM0,0,DELAY_TIME); FIO_SetValue(LED_OE_PORT, LED_OE_BIT); #ifdef RxDMA GPDMA_ChannelCmd(1, ENABLE); uint8_t reg; for(reg=6; 0<reg;reg--){ xprintf("%d ",reg-1); #if 0 if(BUFFER==1) SSP_SendData(LED_SPI_CHN, LED_PRECALC1[reg][SEND_BIT]); else SSP_SendData(LED_SPI_CHN, LED_PRECALC2[reg][SEND_BIT]); #endif //WaitForSend();//Wait if TX buffer full //while(LED_SPI_CHN->SR & SSP_STAT_BUSY); while(SSP_GetStatus(LED_SPI_CHN, SSP_STAT_BUSY)){ }; SSP_SendData(LED_SPI_CHN, LED_PRECALC[reg-1][SEND_BIT]); xprintf("%4x ",(LED_PRECALC[reg-1][SEND_BIT])); } for(reg=12; reg>6;reg--){ xprintf("%d ",reg-1); #if 0 if(BUFFER==1) SSP_SendData(LED_SPI_CHN, LED_PRECALC1[reg][SEND_BIT]); else SSP_SendData(LED_SPI_CHN, LED_PRECALC2[reg][SEND_BIT]); #endif //WaitForSend();//Wait if TX buffer full while(SSP_GetStatus(LED_SPI_CHN, SSP_STAT_BUSY)){ } SSP_SendData(LED_SPI_CHN, LED_PRECALC[reg-1][SEND_BIT]); // if (reg==7){ xprintf("%4x ",(LED_PRECALC[reg-1][SEND_BIT])); // } } LatchIn(); #endif /* UPDATE_COUNT+=1; ATE_COUNT=0; LED_UPDATE_REQUIRED=1; }*/ } }
void GPIO::set() { FIO_SetValue(port, 1UL << pin); }
void GPIO::write(uint8_t value) { if (value) FIO_SetValue(port, 1UL << pin); else FIO_ClearValue(port, 1UL << pin); }