#include <avr/io.h>
#include <avr/delay.h>
int main(void)
{
uint16_t milisec=0;
/*
// Nustatome Normal timer rezima WGM00 ir WGM01 ir WGM02 MANUAL 108psl.
TCCR0A &= ~((1 << WGM01)|(1 << WGM00)); //Data Direction Register
TCCR0B &= ~(1 << WGM02); //Data Direction Register
//prescaler 64 MANUAL 110 psl.
TCCR0B &= ~(1 << CS02);
TCCR0B |= (1 << CS01)|(1 << CS00);
*/
TCCR1B |= (1 << WGM12)|(1 << CS12); //Data Direction Register ijungiam CTC rezima PSL109
//Prescaler naudojam pagal AVR TImer calculator ir naudojam 256 https://eleccelerator.com/avr-timer-calculator/ ir reiks 62500ticks
OCR1A = 62500; // uzrasom ticks
//Output
DDRB |= (1 << DDB1); // nes OC1A yra PB1
//PSL108 padarom rezima kaip suveikinetu toole
TCCR1A |= (1 << COM1A0);
while(1)
{
if(TCNT0>=250) // TCNT0 counteris periodu kas 250 periodu padaris milisec +1;
{
milisec++;
TCNT0=0;
}
//CTC pasinadojus galima pasidaryti su tusciu mainm tai (79psl.)
if(milisec ==2000)
{
PORTB |= (1 << PORTB5);
milisec = 0;
}
if(milisec ==1000)
{
PORTB &=~(1 << PORTB5);
}
}
return 0;
}