DIGILIGHT
power_control.c
См. документацию.
1 
11 #include <avr/io.h>
12 #include "avr_helper.h"
13 #include <avr/pgmspace.h>
14 #include <stdlib.h>
15 #include "lcd.h"
16 #include "pixel.h"
17 #include "ws2812.h"
18 #include "control.h"
19 #include "main_effect.h"
20 #include "power_control.h"
21 #include <avr/interrupt.h>
22 #include <avr/sleep.h>
23 #include <util/delay.h>
24 #include "lcd_show.h"
25 #include <avr/eeprom.h>
26 
27 static uint8_t sec100 = 100;
28 static uint8_t sec=60, min=0;
29 
30 uint8_t power_timeout(signal_t *s){
31  if(cfg.time_to_sleep != 0){
34  } else {
35  if(!--sec100){
36  sec100 = 100;
37  if(!--sec){
38  sec = 60;
39  if(!--min){
40  return 1;
41  }
42  }
43  }
44  }
45  }
46  return 0;
47 }
48 
50  sec100 = 100;
51  sec = 60;
52  min = cfg.time_to_sleep;// * 5;
53 }
54 
55 ISR(INT2_vect){
56 
57 }
58 
59 INIT(6){
60  DDR(BKLIGHT_PORT) |= BKLIGHT_PIN;
61  backlight_off();
62 }
63 
64 void power_off(void){
65  if(get_btn_state()) return;
67  if(cfg.lcd_enabled){
68  lcd_clrscr();
69  center_str_p(0,PSTR("DIGILIGHT V1.0"));
70  center_str_p(1,PSTR("ARV(c)2017"));
71  }
72  for(uint8_t i=0; i<PIXEL_CNT; i++)
73  bright_ctrl(i, 0, 0);
74  ws2812_show();
75  backlight_off();
76  eeprom_busy_wait();
77  cli();
78  GICR |= _BV(INT2);
79  GIFR = _BV(INTF2);
80  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
81  sei();
82  sleep_mode();
83  GICR &= ~_BV(INT2);
84  backlight_on();
85 }
86 
void bright_ctrl(uint8_t id, uint8_t bright, int8_t delta)
Управление яркостью
Definition: pixel.c:95
void save_all_effects(void)
Сохранение настроек всех эффектов
Definition: main_effect.c:200
#define DEF_SILENCE_LVL
Предел уровня громкости, считающийся тишиной
Definition: global.h:23
#define BKLIGHT_PORT
Символ порта, управляющего подсветкой ЖКИ
Definition: hardware.h:73
volume_t average_vol
средняя громкость
Definition: global.h:74
void lcd_clrscr(void)
Clear display and set cursor to home position.
Definition: lcd.c:416
uint8_t lcd_enabled
ЖКИ присутствует
Definition: global.h:91
Вспомогательные эффекты ЖКИ
uint8_t get_btn_state(void)
получение кода нажатых кнопок
Definition: control.c:81
структура параметров звукового сигнала
Definition: global.h:72
сервисный модуль для реализации эффектов Набор вспомогательных функций для базовых манипуляций над це...
uint8_t time_to_sleep
время автоотключения
Definition: global.h:88
void ws2812_show(void)
обновление ленты светододов
Definition: ws2812.c:45
void reset_power_timeout(void)
сброс таймаута автоотключения питания
Definition: power_control.c:49
void center_str_p(uint8_t row, const char *src)
вывод строки из flash по центру дисплея
Definition: lcd_show.c:111
Управление питанием
uint8_t power_timeout(signal_t *s)
проверка таймаута автовыключения питания
Definition: power_control.c:30
#define PIXEL_CNT
Общее количество пикселов
Definition: pixel.h:27
void power_off(void)
выключение питания
Definition: power_control.c:64
Интерфейс визуальных эффектов
описания урганов управления
#define BKLIGHT_PIN
Пин подсветки ЖКИ
Definition: hardware.h:75
аппаратные особенности подключения WS2812.