#include #include "mystd.h" #include "utils.h" #define D1 PORTB0 #define D2 PORTB1 #define D3 PORTB2 #define D4 PORTB4 #define PRESCALER 256 #define TIMER_FREQ (F_CPU / PRESCALER) // at a high level: // Set the OC1B (PB2) pin as output // set the TIMER1 mode to COMPARE (CTC) // say to compare against OC1A // set the value to be compated at X count // say the presacler for the timer is 512 // // all these information are on page ~140 void timer1_init(void) { // Set PB1 (OC1A) as output DDRB |= _BV(PB1); // CTC mode (WGM12 = 1) TCCR1B |= _BV(WGM12); // Toggle OC1B on compare match (COM1B0 = 1) TCCR1A |= _BV(COM1A0); // Set compare values OCR1A = TIMER_FREQ / 2; // Start timer with prescaler 256 (CS12) TCCR1B |= _BV(CS12); } int main(void) { timer1_init(); while (1) { } }