/* Arlotto 2004 : pgm test robot chenille */ /* RC1 : direction */ /* RC2 : vitesse */ /* le Timer 1 est utilisé pour générer les signaux de commandes des servos */ /* per 20ms thaut : repos 1.5ms mini 1ms maxi 2ms */ /* le Timer 0 est utilisé pour l'it temps réel toutes les 32.768 ms : Prescaler = 128 (128*256) */ #include #include "hardware.h" #include "move.h" volatile unsigned int CCPR1 @0x15 ; volatile unsigned int CCPR2 @0x1B ; volatile unsigned int direction,vitesse ; // modifiable n'importe où dans le programme volatile signed char angle,speed ; volatile unsigned char move_state,turn_state; const unsigned int per=20000; // pas de raison de modifier la période void init_move (void) { angle = 0; // -180 à 180 speed = 0 ; // -100 à +100 direction=1550; // offset servo 0° = 1550 et pas 1500 ! vitesse=1500; // stop TRISC1=0; TRISC2=0; CCPR1 = 0; CCP1IF = 0 ; CCP1IE = 1 ; CCPR2 = 0 ; CCP2IF = 0 ; CCP2IE = 1 ; CCP1CON = 0x0A ; // Compare mode CCP2CON = 0x0A ; // interrupt on match T1CON = 1 ; TMR0=0; T0CS=0; PSA=0; PS2=1; PS1=1; PS0=0; // IT toutes les 128 * 256 µs T0IF=0; TMR0IE=1; }