From fe0e298c5b84e6b051fbc61fb826514f3da01c94 Mon Sep 17 00:00:00 2001 From: schodet Date: Thu, 11 Mar 2004 17:07:07 +0000 Subject: Passage à 40MHz. Utilisation du troisième compteur (non ! ils utilisent la même source !). Calcul du PID dans la boucle principale. Correction d'un bug dans le transfert serie (enable_interrupt trops tôt). --- 2004/n/asserv/src/main.c | 51 ++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 28 deletions(-) (limited to '2004/n/asserv/src/main.c') diff --git a/2004/n/asserv/src/main.c b/2004/n/asserv/src/main.c index 7f3732c..e729ce4 100644 --- a/2004/n/asserv/src/main.c +++ b/2004/n/asserv/src/main.c @@ -22,11 +22,10 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * }}} */ -#include <18f442.h> // Définition des registres du PIC18 -#include // Définition de la librairie standard +#include <18f442.h> +#include -// Pattes libres. -/* +/* Pattes libres. 40 rb7 (coupee) 39 rb6 : D3 38 rb5 : D2 @@ -53,11 +52,11 @@ A1-5 B2-7 C4-5 D2-6 E0-2 */ -// General configuration -#fuses HS,WDT,WDT128,PUT,NOBROWNOUT,NOLVP -#use delay(clock=20000000) -#use rs232(baud=115200,xmit=PIN_C6,parity=N,rcv=PIN_C7,bits=8) -#priority EXT,EXT1,RDA,TBE,TIMER2 +/* Configuration générale. */ +#fuses H4,WDT,WDT128,PUT,NOBROWNOUT,NOLVP +#use delay(clock=39321600) +#use rs232(baud=9600,xmit=PIN_C6,parity=N,rcv=PIN_C7,bits=8) +#priority EXT,RDA,TBE,TIMER2 #include "motor.c" #include "serial.c" @@ -70,31 +69,29 @@ main_init (void) setup_psp (PSP_DISABLED); /* Configuration de l'interface SPI : non utilisée. */ setup_spi (FALSE); - // Configuration du chien de garde - //setup_wdt (WDT_OFF); - // Configuration du TIMER 0 pour lire le nombre de pas faits en reculant + /* Le timer0 est utilisé pour les pas en avant du moteur droit. */ setup_timer_0 (RTCC_EXT_L_TO_H | RTCC_8_BIT | RTCC_DIV_1); - // Confguration du TIMER 1 pour lire le nombre de pas faits en avançant - setup_timer_1 (T1_DISABLED); - // Configuration du TIMER 2. - // Tpwm = (PR2 + 1) * 4 * Tosc * TMR2_prescale - // Fpwm = 20kHz - // Tint2 = TMR2_postscale * Tpwm - // Tint2 = 0,5ms - setup_timer_2 (T2_DIV_BY_1, 249, 10); - // Configuration du TIMER 3 : non utilisé + /* Le timer 1 est utilisé pour les pas en arrière du moteur gauche. */ + setup_timer_1 (T1_EXTERNAL | T1_DIV_BY_1); + /* Configuration du TIMER 2. + * Tpwm = (PR2 + 1) * 4 * Tosc * TMR2_prescale + * Fpwm = 20kHz + * Tint2 = TMR2_postscale * Tpwm + * Tint2 = 0,5ms + */ + setup_timer_2 (T2_DIV_BY_4, 121, 10); + /* Le timer3 est utilisé pour les pas en arrière du moteur droit. */ setup_timer_3 (T3_EXTERNAL | T3_DIV_BY_1); - // Configuration de l'ADC + /* Désactivation de l'ADC. */ setup_adc_ports (NO_ANALOGS); setup_adc (ADC_CLOCK_DIV_2); - // Configuration des registres pour un fonctionnement en PWM + /* Configuration des registres pour un fonctionnement en PWM. */ setup_ccp1 (CCP_PWM); setup_ccp2 (CCP_PWM); set_pwm1_duty (0); set_pwm2_duty (0); - // Configuration pour l'autorisation des interruptions. + /* Configuration des interruptions activées. */ enable_interrupts (INT_EXT); - enable_interrupts (INT_EXT1); enable_interrupts (INT_TIMER2); enable_interrupts (INT_RDA); enable_interrupts (GLOBAL); @@ -107,7 +104,5 @@ main (void) motor_init (); serial_init (); main_init (); - while (1) - { - } + motor_main (); } -- cgit v1.2.3