Hallo
In Anlehnung an den Servo-Code aus dem RN-Wissen steuert mein 8MHz-ATMega32 meine bis zu 5 Servos mit einem Timer im CTC-Mode mit ca. 100kHz:
Warum meine Servos bei Werten von ca. 100 in der Mitte stehen, weiß ich nicht, ist aber nicht wirklich störend.Code:... DDRA |= 16; DDRC |= 3; TCCR0 = (0 << WGM00) | (1 << WGM01); // CTC-Mode TCCR0 |= (0 << COM00) | (0 << COM01); // ohne OCR-Pin TCCR0 |= (0 << CS02) | (1 << CS01) | (0 << CS00); // prescaler /8 TIMSK = (1 << OCIE0); // Interrupt ein OCR0 = 9; // 100kHz? sei(); } ISR(TIMER0_COMP_vect) { static uint16_t count=0; if(count>x) PORTA &= ~16; else PORTA |= 16; if(count>y) PORTC &= ~1; else PORTC |= 1; if(count>z) PORTC &= ~2; else PORTC |= 2; if(count<1000)count++; else count=0; };
Entscheidend ist die Pulslänge. Ja schneller die Wiederholung, umso "agressiver" bewegen sich die Servos.Wichtig ist das Verhältnis von positivem Signal zur "Pause".
Gruß
mic







Zitieren

Lesezeichen