iA37o

          Скоро время назад пойдет, Элвис новые песни споет..

          https://reproduktor.net/piknik/azbuka-morze/

## МНОГОПОТОЧНОСТЬ -- УПРАЖНЕНИЯ

Пример 1. Работа с таймером (Timer1)

  #include <avr/interrupt.h>
  #include <avr/io.h>

  void setup()
  {
      // set pin13 to output without affecting other pins
      // identical to pinMode(LEDPIN, OUTPUT);
      // using Direct Port Manipulation

      DDRB |= B00100000;
      cli();
      TCCR1A = 0;
      TCCR1B = 0;

      // target time / timer resolution) - 1
      // 1 / 6.4e-5 - 1 = 15624

      OCR1A = 300;

      // By setting TCCR1B |= (1 << WGM12) , you operate the timer
      // in CTC mode counting from 0 up to the value assigned to OCR1A
      // and back to zero again.

      TCCR1B |= (1 << WGM12);

      // Set CS10 and CS12 bits for 1024 prescaler:

      TCCR1B |= (1 << CS10);
      TCCR1B |= (1 << CS12);

      // timer compare interrupt

      TIMSK1 |= (1 << OCIE1A);
      sei();
  }

  void loop()
  {
      // ..
  }

  void onoff11() {
    static int x = 0;
    x++;
    if (x > 16) {
        PORTB ^= B00001000;
        x = 0;
    }
  }

  void onoff12() {
    static int x = 0;
    x++;
    if (x > 10) {
        PORTB ^= B00010000;
        x = 0;
    }
  }

  ISR(TIMER1_COMPA_vect)
  {
    static int f = 0;
    f = f ? 0 : 1;
    if (f)
      onoff11();
    else
      onoff12();
  }

Варианты по номеру N компьютера в классе:

  Задач: 1 + N % 3.
  Лампочки на D8..D10.
  Частота мерцания 1, 2, 3 Гц.
  Таймер каждые 20+N ms


## Ссылки:

  1. Timer1 example
     https://forum.arduino.cc/index.php?topic=276106.0

  2. CTC mode explained:
     https://electronics.stackexchange.com/questions/168933
     /avr-timer1-ocr1a-controls-timer1-compb-vect-interrupt

  3. Timer resolution explained:
     https://arduinodiy.wordpress.com/2012/02/28/timer-interrupts/
