//
// Created by User on 018 18.05.20.
//

#include "Timer.h"

void Timer1::setup(TimerPrescaler prescaler, uint16_t OCR) {
    TCCR1B |= (1 << WGM12); //режим сброса по свпадению

    switch (prescaler) {
        case PRESCALER_NO:
            TCCR1B |= (1 << CS10);
            break;
        case PRESCALER_8:
            TCCR1B |= (1 << CS11);
            break;
        case PRESCALER_64:
            TCCR1B |= (1 << CS10) | (1 << CS10);
            break;
        case PRESCALER_256:
            TCCR1B |= (1 << CS12);
            break;
        case PRESCALER_1024:
            TCCR1B |= (1 << CS12) | (1 << CS10);
            break;
    }

    TIMSK1 |= (1 << OCIE1A); //устанавливаем бит разрешения прерывания 1ого счетчика по совпадению с OCR1A(H и L)

    OCR1AH = (OCR & 0xFF00) >> 8;
    OCR1AL = (OCR & 0x00FF);
}