ich werds versuchen:
Pseudocode:
Ich hoffe ich hab nix vergessenCode:#define SERVO1_LOW PORTA&=~(1<<0) ... #define SERVO8_LOW PORTA&=~(1<<7) servozeiten[anzahlServos]; servozahl[anzahlServos]; servo_count = 9; init(){ for(/*alle servos*/){ servozeiten[i] = 1,5ms; //natürlich musst du das in taktzyklen umrechnen servozahl[i] = i; } } main(){ init(); for(;;){/*tu was (zb Servos setzen)*/} } ISR(){ switch(servo_count){ case 0: SERVO1_LOW;break; case 1: SERVO2_LOW;break; .... case 9: //sortieren von servozeiten und servozahl (dafür hast du 2^16 zyklen zeit, da der timer max 16bit hat) //differenz zwischen servozeiten brechnen //warten bis 20ms vorbei sind (bitte nicht mit delay_ms() sondern den timer so oft setzen und nichts tun bis die 20ms vorbei sind) //Pins auf high setzen } //timer auf nächsten IR setzen }
LG







Zitieren

Lesezeichen