#include #include #include #include /* LED PB1 Servor PB4 OCR1C = TOP → Periode definieren OCR1B → Pulsbreite → Servo-PWM | Ereignis | OC1B | | ------------- | ----- | | TCNT1 = 0 | HIGH | | TCNT1 = OCR1B | LOW | | TCNT1 = OCR1C | Reset | */ #define SERVO_PIN PB4 // OC1B #define LED PB1 // Interne LED // -------- Funktionsprototyp -------- bool sending = false; volatile int zaehler = 0; void Servo_Init(){ DDRB |= (1 << SERVO_PIN); // PB1 als Ausgang // ---- Timer1 Reset ---- //Kapitel 12.3.2 Seite 90 GTCCR |= (1 << PWM1B); //Kapitel 13.3.2 S.101 GTCCR |= (1 << COM1B1); TCNT1 = 0; // Zähler für Timer1 // ---- Prescaler TCCR1 ---- TCCR1 |= (1 << CS13) | (1 << CS11); //Prescaler 512 // ---- 20 ms Periode (50 Hz) ---- OCR1C = 255; // prescaler 512 Maximalwert 255 für 8-Bit → ca. 16,32 ms ca 61.5 hz } void setup() { DDRB |= (1 << LED); // PB1 als Ausgang Servo_Init(); } // ---------- LED Blink ---------- void blink_number(uint8_t n) { for(uint8_t i=0; i