summaryrefslogtreecommitdiff
path: root/2004/n/asserv/src/main.c
diff options
context:
space:
mode:
authorschodet2004-03-11 17:07:07 +0000
committerschodet2004-03-11 17:07:07 +0000
commitfe0e298c5b84e6b051fbc61fb826514f3da01c94 (patch)
tree4b1f08c77635e4c334f2534241a3e3e9ac7b3ce8 /2004/n/asserv/src/main.c
parentc5655844e7e52f83c00fbfe9f717e007e2b532fc (diff)
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).
Diffstat (limited to '2004/n/asserv/src/main.c')
-rw-r--r--2004/n/asserv/src/main.c51
1 files changed, 23 insertions, 28 deletions
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> // Dfinition des registres du PIC18
-#include <stdlib.h> // Dfinition de la librairie standard
+#include <18f442.h>
+#include <stdlib.h>
-// 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 gnrale. */
+#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 utilise. */
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 avanant
- 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 arrire 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 arrire du moteur droit. */
setup_timer_3 (T3_EXTERNAL | T3_DIV_BY_1);
- // Configuration de l'ADC
+ /* Dsactivation 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 actives. */
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 ();
}