1: /* Arlotto 2004 : pgm test robot chenille */ 2: /* RC1 : direction */ 3: /* RC2 : vitesse */ 4: /* le Timer 1 est utilisé pour générer les signaux de commandes des servos */ 5: /* per 20ms thaut : repos 1.5ms mini 1ms maxi 2ms */ 6: /* le Timer 0 est utilisé pour l'it temps réel toutes les 32.768 ms : Prescaler = 128 (128*256) */ 7: #include 8: #include "hardware.h" 9: #include "move.h" 10: volatile unsigned int CCPR1 @0x15 ; 11: volatile unsigned int CCPR2 @0x1B ; 12: volatile unsigned int direction,vitesse ; // modifiable n'importe où dans le programme 13: volatile signed char angle,speed ; 14: volatile unsigned char move_state,turn_state; 15: const unsigned int per=20000; // pas de raison de modifier la période 16: void init_move (void) 17: { 18: angle = 0; // -180 à 180 19: speed = 0 ; // -100 à +100 20: direction=1550; // offset servo 0° = 1550 et pas 1500 ! 21: vitesse=1500; // stop 22: TRISC1=0; 23: TRISC2=0; 24: CCPR1 = 0; 25: CCP1IF = 0 ; 26: CCP1IE = 1 ; 27: CCPR2 = 0 ; 28: CCP2IF = 0 ; 29: CCP2IE = 1 ; 30: CCP1CON = 0x0A ; // Compare mode 31: CCP2CON = 0x0A ; // interrupt on match 32: T1CON = 1 ; 33: 34: TMR0=0; 35: T0CS=0; 36: PSA=0; 37: PS2=1; 38: PS1=1; 39: PS0=0; // IT toutes les 128 * 256 µs 40: T0IF=0; 41: TMR0IE=1; 42: } 43: