Exemplo n.º 1
0
int main(void)
{
	int i;

	system_init();
	p_init();
	led_init();
	cdcacm_init();
	cdcacm_register_receive_callback(cdcacm_input_callback);
	usart_init();

	led1_on();
	led2_on();
	led3_on();
	led4_on();
	led5_on();

	for (i = 0; i < 0x800000; i++)
		__asm__("nop");

	led1_off();
	led2_off();
	led3_off();
	led4_off();
	led5_off();

	while (1) {
		cdcacm_run();
		led_process();
	}
}
Exemplo n.º 2
0
int main(void) {
  /* setup controller */
  sys_init();
	
  /* setup u8g and m2 libraries */
  setup();

  /* application main loop */
  for(;;) {  
    m2_CheckKey();
    if ( m2_HandleKey() || led_process() ) {
      /* picture loop */
      u8g_FirstPage(&u8g);
      do {
	draw();
        m2_CheckKey();
      } while( u8g_NextPage(&u8g) );
    }
  }  
}
// ****************
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 ;
}
Exemplo n.º 4
0
int
main(void)
{

  led_init();

#ifdef LED_RGB
  led_off(LED_CHANNEL_GREEN);
  led_off(LED_CHANNEL_RED);
  led_off(LED_CHANNEL_BLUE);
#else
  LED_ON();
#endif


  spi_init();


  OCR0A  = 249;                            // Timer0: 0.008s = 8MHz/256/250 == 125Hz
  TCCR0B = _BV(CS02);
  TCCR0A = _BV(WGM01);
  TIMSK0 = _BV(OCIE0A);

  TCCR1A = 0;
  TCCR1B = _BV(CS11) | _BV(WGM12);         // Timer1: 1us = 8MHz/8

  clock_prescale_set(clock_div_1);

  MCUSR &= ~(1 << WDRF);                   // Enable the watchdog

  uart_init( UART_BAUD_SELECT_DOUBLE_SPEED(UART_BAUD_RATE,F_CPU) );

  input_handle_func = analyze_ttydata;

  display_channel = DISPLAY_USB;

#ifdef LED_RGB
  my_delay_ms(200);
  led_on(LED_CHANNEL_RED);
  my_delay_ms(200);
  led_off(LED_CHANNEL_RED);
  led_on(LED_CHANNEL_GREEN);
  my_delay_ms(200);
  led_off(LED_CHANNEL_GREEN);
  led_on(LED_CHANNEL_BLUE);
  my_delay_ms(200);
  led_off(LED_CHANNEL_BLUE);
#else
  LED_OFF();
#endif

  sei();

  /* start moritz function */
  moritz_func("Zr\n");
  for(;;) {
	led_process(ticks);

    uart_task();
    Minute_Task();
    rf_asksin_task();
    rf_moritz_task();
    if (rf_moritz_data_available()) {
        DC('Z');
        uint8_t *rf_data = (uint8_t*) &max_data;
        for (uint8_t i=0; i<=*rf_data; i++) {
        	DH2( *rf_data++ );
        }
        DNL();
        DS("length: ");
        DU(max_data.length, 2);
        DNL();
        DS("msg count: ");
        DU(max_data.message_count, 2);
        DNL();
        DS("msg type: ");
        DU(max_data.message_type, 2);
        DNL();
    }
  }

}