Beispiel #1
0
//=============================================================================
int main(void)
{
  LIGHT_init();
  LCD_init();
  LIGHT_on();
  LCD_clear();
  BEEP_init();
  RTC_init();
  RTOS_init();
  RC5_Init();
  RC5_Reset();
  ENC_init();
  KBD_init();
  bmp180Init();
  dht22Init();
  rda5807Init();
  rda5807PowerOn();
  rda5807SetMute(1);
  ds18x20SearchDevices();
  LCD_goto(0, 0);
  LCD_puts("POGODNAY STATION");
  LCD_goto(0, 1);
  LCD_puts("  VERSION 1.0   ");
  _delay_ms(1000);
  LCD_clear();
  LCD_load_bignum();
  ds18x20Process();
  if (bmp180HaveSensor()) bmp180Convert();
  dht22Read();
#if (DEBUG == 1)
  if ((BUT_1_PINX & (1<<(BUT_1_PIN))) == 0) {
    _delay_ms(100);
    if ((BUT_1_PINX & (1<<(BUT_1_PIN))) == 0) {
      RTOS_setTask(EVENT_SET_STATE_OPTION, 0, 0);
      BEEP_beep();
	  while (((BUT_1_PINX & (1<<(BUT_1_PIN))) == 0)) { }
      BEEP_beep();
    }
  }
#else
  RTOS_setTask(EVENT_SET_STATE_OPTION, 0, 0);
  BEEP_beep();
#endif
  RTOS_setTaskFunc(set_blink, 0, 1000);      // моргание
  RTOS_setTaskFunc(KBD_scan, 0, 5);          // запускаем опрос кнопок
  RTOS_setTaskFunc(ENC_poll, 0, 1);          // запускаем опрос енкодера
  RTOS_setTaskFunc(RC5_scan, 0, 5);          // запускаем опрос RC5
  RTOS_setTask(EVENT_SET_SHOW, 0, 0);		 // запуск шоу
  sei(); 				        			 // Разрешили прерывания
  while(1) {
    RTOS_dispatchTask();    			     // Вызываем диспетчер в цикле.    
  }
}
Beispiel #2
0
//=============================================================================
void show_bigpressure(void)
{
  uint8_t display[4];
  int16_t p;
  if (bmp180HaveSensor())  {
    bmp180Convert();
    p = bmp180GetPressure();
    display[0] = (p / 1000) % 10;
    display[1] = (p / 100) % 10;
    display[2] = (p / 10) % 10;
    display[3] = (p / 1) % 10;
    lcd_bigchar(0, display[0]);
    lcd_bigchar(4, display[1]);
    lcd_bigchar(8, display[2]);
    LCD_goto(13, 0); LCD_puts("MM");
    LCD_goto(13, 1); LCD_puts("RS");
  }
}
Beispiel #3
0
int main(void)
{
	uint8_t cmd;
	uint8_t dispMode = MODE_MAIN;

	static int8_t direction = PARAM_UP;

	hwInit();

	showTimeMasked();

	ds18x20Process();
	sensTimer = TEMP_MEASURE_TIME;

	while(1) {
		// Update sensors with SENSOR_POLL_INTERVAL period
		if (!sensTimer == 0) {
			sensTimer = SENSOR_POLL_INTERVAL;
			ds18x20Process();
			if (bmp180HaveSensor())
				bmp180Convert();
			dht22Read();
		}

		// Check alarm
		checkAlarm();

		// Update brightness only when not in brightness setup
		if (dispMode != MODE_BRIGHTNESS)
			calcBrightness();

		// Get command from buttons
		cmd = getBtnCmd();

		// Beep on button pressed
		if (cmd != BTN_STATE_0) {
			if (cmd < BTN_0_LONG)
				startBeeper(BEEP_SHORT);
			else
				startBeeper(BEEP_LONG);
		}

		// Stop scrolling on any button pressed
		if (cmd != BTN_STATE_0)
			matrixHwScroll(MATRIX_SCROLL_STOP);

		// Handle command
		switch (cmd) {
		case BTN_0:
			direction = PARAM_UP;
			switch (dispMode) {
			case MODE_EDIT_TIME:
				rtcNextEditParam();
				break;
			case MODE_EDIT_ALARM:
				alarmNextEditParam();
				break;
			}
			break;
		case BTN_1:
			direction = PARAM_UP;
		case BTN_2:
			if (cmd == BTN_2)
				direction = PARAM_DOWN;
			switch (dispMode) {
			case MODE_MAIN:
				startScroll(cmd - BTN_1);
				break;
			case MODE_EDIT_TIME:
				rtcChangeTime(direction);
				break;
			case MODE_EDIT_ALARM:
				alarmChange(direction);
				break;
			case MODE_BRIGHTNESS:
				changeBrightness(direction);
				break;
			case MODE_TEST:
				displayChangeRotate(direction);
				break;
			}
			break;
		case BTN_0_LONG:
			if (dispMode == MODE_MAIN) {
				dispMode = MODE_EDIT_TIME;
				rtcNextEditParam();
			} else {
				rtc.etm = RTC_NOEDIT;
				alarmSave();
				alarm.eam = ALARM_NOEDIT;
				dispMode = MODE_MAIN;
				showTimeMasked();
			}
			break;
		case BTN_1_LONG:
			if (dispMode == MODE_MAIN) {
				dispMode = MODE_EDIT_ALARM;
				alarmNextEditParam();
			}
			break;
		case BTN_2_LONG:
			if (dispMode == MODE_MAIN) {
				dispMode = MODE_BRIGHTNESS;
				showBrightness(direction, MASK_ALL);
			}
			break;
		case BTN_0_LONG | BTN_1_LONG:
			displaySwitchHourZero();
			dispMode = MODE_MAIN;
			showTimeMasked();
			break;
		case BTN_1_LONG | BTN_2_LONG:
			displaySwitchBigNum();
			dispMode = MODE_MAIN;
			showTimeMasked();
			break;
		case BTN_0_LONG | BTN_2_LONG:
			displaySwitchHourSignal();
			dispMode = MODE_MAIN;
			showTimeMasked();
			break;
		case BTN_0_LONG | BTN_1_LONG | BTN_2_LONG:
			dispMode = MODE_TEST;
			break;
		}

		// Show things
		switch (dispMode) {
		case MODE_MAIN:
			showMainScreen();
			break;
		case MODE_EDIT_TIME:
			showTimeEdit(direction);
			break;
		case MODE_EDIT_ALARM:
			showAlarmEdit(direction);
			break;
		case MODE_BRIGHTNESS:
			showBrightness(direction, MASK_NONE);
			break;
		case MODE_TEST:
			showTest();
			break;
		}
	}

	return 0;
}