فهرست منبع

Enable/disable use of Brightnes control.

Vladimir Shilov 5 سال پیش
والد
کامیت
5e36c28fc7
6فایلهای تغییر یافته به همراه39 افزوده شده و 8 حذف شده
  1. 1 1
      Makefile
  2. 7 0
      ReadMe.txt
  3. 5 2
      inc/event-system.h
  4. 0 2
      inc/main.h
  5. 6 1
      src/event-system.c
  6. 20 2
      src/main.c

+ 1 - 1
Makefile

@@ -143,7 +143,7 @@ CSTANDARD = -std=gnu99
 
 
 # Place -D or -U options here for C sources
-CDEFS = -DF_CPU=$(F_CPU)UL
+CDEFS = -DF_CPU=$(F_CPU)UL -DUSE_BRIGHT_CONTROL=1
 
 
 # Place -D or -U options here for ASM sources

+ 7 - 0
ReadMe.txt

@@ -56,3 +56,10 @@ My Nixie Clock IN-12 / Мои часы на ГРИ ИН-12
 
 Переход на зимнее/летенее время. Есть нюанс - если запускать прошивку в зимнее 
 время - будет работать неправильно. Доделывать лень - и так норм.
+---
+2019.06.05
+Пока сделал всё, что хотел.
+Регулировку яркости от освещения вообще не хочу делать.
+Вообще планирую в версии для себя выкинуть эту регулировку - мне она кажется 
+лишней. Разве что ночью часы буду стоят возле головы и направлены в лицо.
+Сделал эту фичу отключаемой через дефайн в мейкфайле - 234 байта.

+ 5 - 2
inc/event-system.h

@@ -37,7 +37,12 @@ void showWDay(void);
 void showMDay(void);
 void showMonth(void);
 void showYear(void);
+
+#if (USE_BRIGHT_CONTROL == 1)
 void showBright(void);
+void incBright(void);
+void decBright(void);
+#endif
 
 void incHH(void);
 void incMM(void);
@@ -50,12 +55,10 @@ void incWDay(void);
 void incMDay(void);
 void incMonth(void);
 void incYear(void);
-void incBright(void);
 void decWDay(void);
 void decMDay(void);
 void decMonth(void);
 void decYear(void);
-void decBright(void);
 
 void setTimeShow(void);
 void setTimeBegin(void);

+ 0 - 2
inc/main.h

@@ -2,8 +2,6 @@
 #ifndef _MAIN_H
 #define _MAIN_H
 
-//#define F_CPU          16000000UL
-
 /**
  * Битовые макросы
  */

+ 6 - 1
src/event-system.c

@@ -29,7 +29,6 @@ typedef struct {
 } table_state_t;
 
 /** таблица состояний */
-//const table_state_t table[] = {
 const table_state_t stateTable[] PROGMEM = {
 /* STATE    EVENT   NEXT STATE  STATE_FUNC1 STATE_FUNC2 */
   /* show date, time */
@@ -38,8 +37,12 @@ const table_state_t stateTable[] PROGMEM = {
   {stShowWDay, evBTN1Pressed, stShowMDay, showMDay, dotOff},
   {stShowMDay, evBTN1Pressed, stShowMon,  showMonth, dotOff},
   {stShowMon,  evBTN1Pressed, stShowYear, showYear, dotOff},
+  #if (USE_BRIGHT_CONTROL == 1)
   {stShowYear, evBTN1Pressed, stShowBright, showBright, NULL},
   {stShowBright, evBTN1Pressed, stShowTime, showTime, NULL},
+  #else
+  {stShowYear, evBTN1Pressed, stShowTime, showTime, NULL},
+  #endif
   /* display wdt */
   {stShowWDay, evDisplayWDT, stShowTime, showTime, NULL},
   {stShowMDay, evDisplayWDT, stShowTime, showTime, NULL},
@@ -75,9 +78,11 @@ const table_state_t stateTable[] PROGMEM = {
   {stShowMDay, evBTN2Pressed, stNoChange, decMDay,  showMDay},
   {stShowMon,  evBTN2Pressed, stNoChange, decMonth, showMonth},
   {stShowYear, evBTN2Pressed, stNoChange, decYear,  showYear},
+  #if (USE_BRIGHT_CONTROL == 1)
   /* set bright */
   {stShowBright, evBTN3Pressed, stNoChange, incBright, showBright},
   {stShowBright, evBTN2Pressed, stNoChange, decBright, showBright},
+  #endif // USE_BRIGHT_CONTROL
   /* обязательная пустая строка таблицы */
   {stNoChange, eventNull, stNoChange, EmptyFunc, EmptyFunc}
 };

+ 20 - 2
src/main.c

@@ -26,10 +26,12 @@
 #define TIMER2_CS         (1<<CS22 | 1<<CS21 | 1<<CS20)
 #define TIMER2_CNT        (0x100 - (F_CPU / TIMER2_PRESCALER / TIMER2_HZ))
 
+#if (USE_BRIGHT_CONTROL == 1)
 /* Lamp brightness */
 #define BRIGHT_IDX_MAX    9
 #define FULL_BRIGHT_ON    0x06
 #define FULL_BRIGHT_OFF   0x22
+#endif // USE_BRIGHT_CONTROL
 
 /* Display timeout, sec */
 #define DISP_WDT_TIME   10
@@ -59,9 +61,11 @@ static uint8_t brightIdx;
 static EEMEM uint8_t EEP_SummerTime;
 
 /* Constants */
+#if (USE_BRIGHT_CONTROL == 1)
 static const uint8_t PROGMEM brightConv[10] = {
   195, 196, 197, 199, 203, 208, 216, 226, 239, 255
 };
+#endif // USE_BRIGHT_CONTROL
 
 /* Function prototypes */
 static void Board_Init(void);
@@ -86,10 +90,12 @@ void main(void) {
   Flag.blinkC = 0;
   Flag.saveEEP = 0;
 
+  #if (USE_BRIGHT_CONTROL == 1)
   brightIdx = eeprom_read_byte(&EEP_BrightIdx);
   if (brightIdx > BRIGHT_IDX_MAX) {
     brightIdx = BRIGHT_IDX_MAX;
   }
+  #endif // USE_BRIGHT_CONTROL
 
   /**
    * Инициализация, настройка...
@@ -124,11 +130,13 @@ void main(void) {
           RTC_ReadCalendar(&RTC);
           ES_PlaceEvent(evRefreshCal);
         }
+#if (USE_BRIGHT_CONTROL == 1)
         if (RTC.Hr >= FULL_BRIGHT_ON && RTC.Hr < FULL_BRIGHT_OFF) {
           OCR2 = pgm_read_byte(&brightConv[BRIGHT_IDX_MAX]);
         } else {
           OCR2 = pgm_read_byte(&brightConv[brightIdx]);
         }
+#endif // USE_BRIGHT_CONTROL
 
         setSummerWinterTime();
       } // begin new hour
@@ -186,7 +194,9 @@ static void Board_Init(void) {
   TCCR2 = TIMER2_CS;
   TCNT2 = TIMER2_CNT;
   TIMSK = _BV(TOIE2) | _BV(OCIE2);
+#if (USE_BRIGHT_CONTROL == 1)
   OCR2 = pgm_read_byte(&brightConv[BRIGHT_IDX_MAX]);
+#endif // USE_BRIGHT_CONTROL
 
   /* Interrupt from RTC */
   MCUCR = _BV(ISC11); // falling edge
@@ -322,6 +332,7 @@ void showYear(void) {
   Digit[3] = RTC.Year & 0x0F;
 }
 
+#if (USE_BRIGHT_CONTROL == 1)
 void showBright(void) {
   DISP_WDT = DISP_WDT_TIME;
   Digit[0] = DIGIT_BLANK;
@@ -329,6 +340,7 @@ void showBright(void) {
   Digit[2] = brightIdx;
   Digit[3] = DIGIT_BLANK;
 }
+#endif // USE_BRIGHT_CONTROL
 
 void incWDay(void) {
   if (RTC.WD < 7) {
@@ -384,6 +396,7 @@ void decYear(void) {
   Flag.saveCal = 1;
 }
 
+#if (USE_BRIGHT_CONTROL == 1)
 void incBright(void) {
   if (brightIdx < BRIGHT_IDX_MAX) {
     brightIdx ++;
@@ -399,6 +412,7 @@ void decBright(void) {
     Flag.saveEEP = 1;
   }
 }
+#endif // USE_BRIGHT_CONTROL
 
 static void blink(void) {
   static uint8_t s = 0;
@@ -541,9 +555,11 @@ ISR(TIMER2_OVF_vect) {
   uint8_t pd = PORTD & ~ANOD_PINS;
   uint8_t pc = PORTC & ~DIGIT_PINS;
 
+#if (USE_BRIGHT_CONTROL != TRUE)
   // power off lamps
-//  PORTD = pd;
-//  PORTC = pc;
+  PORTD = pd;
+  PORTC = pc;
+#endif
 
   switch (idx) {
   case 0:
@@ -594,6 +610,7 @@ ISR(TIMER2_OVF_vect) {
   }
 }
 
+#if (USE_BRIGHT_CONTROL == 1)
 /**
  * @brief Power Off Nixie output
  * @note  For Brightnes dimming
@@ -603,6 +620,7 @@ ISR(TIMER2_COMP_vect) {
   PORTD &= ~ANOD_PINS;
   PORTC &= ~DIGIT_PINS;
 }
+#endif // USE_BRIGHT_CONTROL
 
 /**
  * @brief заглушка для неиспользуемых прерываний