#include "scheduler.h"
#include <avr/io.h>

scheduler::scheduler()  //Initialisierung aller Timer
{

    //Timer 0 : Initialisierung für die Sservosteuerung (ppm-Generator)
    TCCR0A = 2;             //Mode 2 : Clear timer on Compare
    TCCR0B = 4;             //Prescaler 256, 1 Periode = 16 Mikrosekunden
    TIMSK0 = 2;             //Interrupt bei Compare Match A

    //Timer 1 : Scheduler
    TCCR1A = 0;
    TCCR1C = 0;
    OCR1A = 1563;                                     //1563 * 64us = 10ms
    TCCR1B |= ((1<<WGM12) | ( 1<<CS12) | (1<<CS10));  //CTC-Mode, Prescaler 1024 (64 us)
    TIMSK1 |= (1<<OCIE1A);                            //Interrupt bei Compare A


    //Timer 2 : PWM für Maschine und Fallwinden,
    TCCR2A = 163;   //WGM20, WGM21, COM2A1 und COM2B1 = 1
    TCCR2B = 2;     //TCCR2B = 4;     //Prescaler 64, Mode 3 (WGM22=0)****test
    TIMSK2 = 0;     //kein Interrupt
    OCR2A = 0;      //Eingang 0..255, Compare A ist Maschine
    OCR2B = 0;

    //Timer 3 : zum Zählen der Summensignal-Impulslängen
    TCCR3A = 0;
    TCCR3B = 3;
    TCCR3C = 0;
    TIMSK3 = 0;

    //externer Interrupt INT4
    EICRB = 3;
    EIMSK = 16;

    //Timer 4 : PWM für drei unabhängige PWM (drei Windengruppen)
    TCCR4A = 169;   // 10101001
    TCCR4B = 3;     // Prescaler 64


    //Timer 5 : Interrupt-Entprellung PCINT
    TCCR5A = 0;
    TCCR5C = 0;
    TCCR5B |= ( ( 1<<CS12) | (1<<CS10));  //normal-Mode, Prescaler 1024 (64 us)
    TIMSK5 = 0;



}
