#include <Arduino.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define F_CPU 16000000UL
const int prescalar=1024;
void T0Delay (double delay);
int main (){
double delay;
DDRB |= (1<<PB0); // PORTB output port
while(1){ //repeat forever
T0Delay(0.5);
PORTB |= (1<<PB0);
T0Delay(1.0);
PORTB ^= (1<<PB0);
}
}
void T0Delay(double delay){
double period = 1/(F_CPU/prescalar);
TCNT1 = 2^16 - (int) (delay*F_CPU/prescalar); // load TCNT1 (RUN AGAIN FOR TCCR1=2)
TCCR1A = 0x00; // Run Timer1, Normal mode
TCCR1B |= (1<<CS12)|(1<<CS10); // Prescalar = 1024
while ((TIFR1 & (1<<TOV1))==0);
TIFR1 |= (1<<TOV1); //wait for TF0 to roll over
TCCR1B = 0; // Stop Timer
}