summaryrefslogtreecommitdiff
path: root/src/main.cpp
blob: 07726458bc2150a85185209bb5705450d8d575ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <avr/io.h>
#include <util/delay.h>

#define F_CPU 9600000UL
#define PIN_OUTPUT PB0
#define TIME_WORK 15  // минут
#define TIME_PAUSE 25 // минут

// Макрос для задержки на указанное количество минут
#define DELAY_MINUTES(min)               \
  do                                     \
  {                                      \
    for (uint16_t m = 0; m < (min); m++) \
    {                                    \
      for (uint16_t s = 0; s < 60; s++)  \
      {                                  \
        _delay_ms(1000); /* 1 секунда */ \
      }                                  \
    }                                    \
  } while (0)

int main(void)
{
  // Отключаем АЦП и компаратор
  ADCSRA &= ~(1 << ADEN);
  ACSR |= (1 << ACD);

  // Настройка пинов
  DDRB |= (1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB3) | (1 << PB4);
  PORTB &= ~((1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB3) | (1 << PB4));

  while (1)
  {
    PORTB |= (1 << PIN_OUTPUT); // LED ON
    DELAY_MINUTES(TIME_WORK);   // 15 минут

    PORTB &= ~(1 << PIN_OUTPUT); // LED OFF
    DELAY_MINUTES(TIME_PAUSE);   // 25 минут
  }
}