int main(void) { setup_systemclock(); //TODO:TimerInitに切り出し // Setup SysTick Timer to interrupt at 10 msec intervals SysTick_Config(CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/100); GPIO_SetDir(0,1<<8, 1); // GPIO0[8](LED)を出力に設定 GPIO_ClearValue(0,1<<8);// GPIO0[8](LED)出力L ////////////////////wave_gen/////////////////////////////// gen_dac_cfg_t cfg; cfg.amplitude=5000; cfg.dcOffset=0; cfg.frequency=150; cfg.waveform=GEN_DAC_CFG_WAVE_TRIANGLE; wave_gen(&cfg, &buf); ////////////////////fft/////////////////////////////// fft_gen(); ////////////////spi/////////////////////////////////// lcd_init(); lcd_clear(); ////////////////lcd/////////////////////////////////// // uint16_t lcd_x; // uint16_t lcd_y; // uint8_t scale_time = 2;//横軸データ数を2倍表示 // uint8_t scale_fft = 2;//横軸データ数を2倍表示 ////////////////////////////////////////////////////// // uint16_t i; // int j; ADC_DMA_Init(); NVIC_SetPriority(DMA_IRQn, ((0x01<<3)|0x01)); // Enter an infinite loop while(1) { //wav_genタイムドメイン表示 // for (i = 0; i < 240; i++) { // for (j = 0; j < 25; j++) { // lcd_data[i][j]=0x0000; // } // } // for (i = 0; i < 400*scale_time; i++ ){ // lcd_x = ((int16_t)(i/scale_time) -200) * -1 + 200;//左右逆転(LCD都合 // lcd_y = (buf.LUT_BUFFER[i]-2048)/17 + 120;//0~240に正規化 // lcd_data[lcd_y][lcd_x/16] = lcd_data[lcd_y][lcd_x/16] | 0x01<<(lcd_x%16); // } // lcd_write(lcd_data); systick_delay(50); } ADC_DMA_Exit(); return 0 ; }
// **************** int main(void) { led2_init(); // Setup GPIO for LED2 led2_on(); // Turn LED2 on // Setup SysTick Timer to interrupt at 1 msec intervals if (SysTick_Config(SystemCoreClock / 1000)) { while (1); // Capture error } // Enter an infinite loop, just incrementing a counter and toggling leds every second volatile static int i = 0 ; while(1) { i++; systick_delay (2000); // wait 2 seconds (2000ms) led2_invert(); // Toggle state of LED2 } return 0 ; }
void call_transmit_if_needed (void) { NVIC_DisableIRQ (TIMER_32_0_IRQn); if (transmit_call) { DBG (DBG_LEVEL_INFO, "Transmitting station ID (%s)", CALL_STRING); tx_enable (); while (!tx_is_ready ()); morse_send (CALL_STRING, strlen (CALL_STRING)); systick_delay (CALL_POST_DELAY_MS); tx_disable (); transmit_call = false; Chip_TIMER_Reset (LPC_TIMER32_0); Chip_TIMER_ClearMatch(LPC_TIMER32_0, 0); Chip_TIMER_SetMatch (LPC_TIMER32_0, 0, CALL_INTERVAL_SEC); NVIC_ClearPendingIRQ (TIMER_32_0_IRQn); } NVIC_EnableIRQ (TIMER_32_0_IRQn); }
// **************** int main(void) { // Setup SysTick Timer to interrupt at 10 msec intervals if (SysTick_Config(SystemCoreClock / 100)) { while (1); // Capture error } led_init(); // Setup GPIO for LED2 led_on(0); // Turn LED2 on //led_on(0); //led_on(1); systick_delay(100); led_off(0); UARTInit(0, 115200); // baud rate setting UARTInit(2, 9600); // baud rate setting, PC UARTSendCRLF(0); UARTSendCRLF(0); UARTSendStringln(0, "UART2 online ..."); drs155m_init(); logger_setEnabled(1); logger_logStringln("logger online ..."); logger_logString("BUILD ID: "); logger_logStringln(VERSION_BUILD_ID); led_off(7); uint16_t loop_count = 0; uint8_t do_start = 0; #define METER_COUNT 4 uint8_t error_count[METER_COUNT] = {0,0,0}; uint8_t current_meter_index = 0; drs155m_t power_meters[METER_COUNT]; power_meters[0].meter_id = "001511420141"; power_meters[1].meter_id = "001511420142"; power_meters[2].meter_id = "001511420143"; power_meters[3].meter_id = "001511420149"; drs155m_t* current_power_meter = &power_meters[0]; uint32_t delay_value = 0; while(1) { /* process logger */ if (console_out_dataAvailable() && UARTTXReady(0)) { uint8_t iCounter; // fill transmit FIFO with 14 bytes for(iCounter = 0; iCounter < 14 && console_out_dataAvailable(); iCounter++) { UARTSendByte(0, console_out_read()); } } led_process(msTicks); s0_process(msTicks); drs155m_process(msTicks); uint32_t triggerValue = s0_triggered(0); if (triggerValue) { logger_logString("s0_0:"); logger_logNumberln(triggerValue); led_signal(1, 30, msTicks); if (do_start) { do_start = 0; } else { do_start = 1; } } if (drs155m_is_ready() && do_start && math_calc_diff(msTicks, delay_value) > 20) { loop_count++; current_meter_index++; if (current_meter_index >= METER_COUNT) { current_meter_index = 0; } current_power_meter = &power_meters[current_meter_index]; drs155m_request_data(current_power_meter); } if (drs155m_is_data_available()) { logger_logStringln("Meter data: "); logger_logNumberln(current_power_meter->voltage); logger_logNumberln(current_power_meter->ampere); logger_logNumberln(current_power_meter->frequency); logger_logNumberln(current_power_meter->active_power); logger_logNumberln(current_power_meter->reactive_power); logger_logNumberln(current_power_meter->total_energy); logger_logString("operation took "); logger_logNumber(drs155m_get_duration()); logger_logStringln(" ticks"); logger_logString("current loop: "); logger_logNumberln(loop_count); logger_logString("error count 0: "); logger_logNumberln(error_count[0]); logger_logString("error count 1: "); logger_logNumberln(error_count[1]); logger_logString("error count 2: "); logger_logNumberln(error_count[2]); logger_logString("error count 3: "); logger_logNumberln(error_count[3]); drs155m_reset(); delay_value = msTicks; } if (drs155m_is_error()) { logger_logStringln("error reading meter data"); error_count[current_meter_index]++; drs155m_reset(); delay_value = msTicks; } triggerValue = s0_triggered(1); if (triggerValue) { logger_logString("s0_1:"); logger_logNumberln(triggerValue); led_signal(2, 30, msTicks); } /* logger echo */ if ( UART0Count != 0 ) { led2_on(); LPC_UART0->IER = IER_THRE | IER_RLS; /* Disable RBR */ int i = 0; for(; i < UART0Count; i++) { logger_logByte(UART0Buffer[i]); } UART0Count = 0; LPC_UART0->IER = IER_THRE | IER_RLS | IER_RBR; /* Re-enable RBR */ led2_off(); } } return 0 ; }
// **************** int main(void) { // Setup SysTick Timer to interrupt at 10 msec intervals if (SysTick_Config(SystemCoreClock / 100)) { while (1); // Capture error } led_init(); // Setup GPIO for LED2 led2_on(); // Turn LED2 on //led_on(0); //led_on(1); systick_delay(100); led2_off(); systick_delay(100); led2_on(); UARTInit(0, 115200); /* baud rate setting */ UARTSendCRLF(0); UARTSendCRLF(0); UARTSendStringln(0, "UART2 online ..."); //EINT3_init(); // Enter an infinite loop, just incrementing a counter and toggling leds every second //led2_off(); //int ledstate; //EINT3_enable(); logger_logStringln("logger online ..."); while(1) { /* process logger */ if (logger_dataAvailable() && UARTTXReady(0)) { uint8_t data = logger_read(); UARTSendByte(0,data); } process_leds(msTicks); process_s0(msTicks); uint32_t triggerValue = s0_triggered(0); if (triggerValue) { logger_logString("s0_0:"); logger_logNumberln(triggerValue); led_signal(0, 30, msTicks); } triggerValue = s0_triggered(1); if (triggerValue) { logger_logString("s0_1:"); logger_logNumberln(triggerValue); led_signal(1, 30, msTicks); } /* if (!s0_active) { s0_newState = ~LPC_GPIO0->FIOPIN & (S0_INPUT0 | S0_INPUT1); if (s0_oldState != s0_newState) { s0_active = 1; s0_msticks = msTicks; } } if (s0_active && s0_msticks != msTicks) { s0_state = ~LPC_GPIO0->FIOPIN & (S0_INPUT0 | S0_INPUT1 ); logger_logNumberln(s0_state); if (s0_state == s0_newState) { // falling edge if ((s0_newState & S0_INPUT0) > 0) { led2_invert(); } // rising edge if ((s0_newState & S0_INPUT1) == 0) { led2_invert(); } } s0_oldState = s0_state; s0_active = 0; } */ } return 0 ; }