Hello Picusers
Now I use an optical coder with 1000 pulses per turn,but the final result is not good,the PIC does not count all the pulses (~ -200 pulses)
For you it's a problem of time with the routine of the LCD?
DEFINE OSC 20 'Fréquence du quartz utilisé
ADCON1=7 'PortA et PortE en numérique
'-----------------------------------------------------------------
'Configuration LCD
DEFINE LCD_DREG PORTB ' LCD o/p on port B
DEFINE LCD_DBIT 4 ' LCD on lower 4 bits of port B
DEFINE LCD_RSREG PORTB ' LCD reset on port B
DEFINE LCD_RSBIT 3 ' LCD reset portB.3
DEFINE LCD_EREG PORTB ' LCD enable on port B
DEFINE LCD_EBIT 2 ' LCD output on PortB.2
DEFINE LCD_BITS 4 ' LCD o/p is 4 bit data
DEFINE LCD_LINES 2 ' Number of lines on LCD = 2
DEFINE LCD_COMMANDUS 1500
'-------------------------------------------------------------------
'Configuration des registres
TRISB = %00000011 ' Port B en sortie sauf B1 et B0
OPTION_REG = %01000000 ' Config registre
INTCON = %10010000 ' Config registre
'----------------------------------------------------------------------
'Déclarations des variables
Pulse_Rev VAR WORD ' Pulses par Rev
Pulse_Rev = 0
'-----------------------------------------------------------------------------
On Interrupt Goto ISR ' Si appui sur le BP saut en "ISR"
Main:
Lcdout$fe,1
Lcdout #Pulse_Rev," pulses" 'Affiche valeur variable incrément
pause 1
goto Main
Disable 'interdit toute interruption
'-------------------------------------------------------------------------------
'Routine d'interruption + comptage
ISR:
Pulse_Rev = Pulse_Rev +1 'Incrémente de 1 la valeur de la variable
INTCON.1 = 0 'Remet le flag d'interruptio à 0
Resume 'fin de l'interruption
Enable 'Autorise à nouveau une interruption
End
Bookmarks