Example #1
0
int main(void)
{
    Error	check_error = success;
    uint8	narrow;
    uint8	wide;

    os_sleep(100);

    CheckCleanup(os_boot(boot_module_table, LENGTH(boot_module_table)), boot_failure);
    CheckCleanup(record_command(0, null), record_failure);

  record_failure:	narrow = 2; wide = 1; goto failure;
  boot_failure:		narrow = 1; wide = os_boot_index(); goto failure;
  failure:
    while (!uart_character_ready())
	led_signal(narrow, wide);

    error_stack_print();

    write(PSTR("\r\n\r\nWavelogger v4.0\r\n"));
    write(PSTR("Reset reason: 0x%hx\r\n"), os_reset_reason());

    shell_run(shell_command_table, LENGTH(shell_command_table));

    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
	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 ;
}
Example #3
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 ;
}