Beat
05.10.2005, 13:57
Hallo
Zuerst mal guten Tag alle zusammen - bin neu hier im Forum (aber schon einige Zeit am "herumschnüffeln").
Momentan schlage ich mich mit dem im PIC18F4331 eingebauten QEI-Modul herum, ich bringe das Ding einfach nicht zum Laufen. Hat evtl. jemand von euch schon Erfahrungen damit gemacht?
Ich möchte einen Encoder im Positions-Modus betreiben, und zwar im 2x update mode (inkrement auf jede QEA-Flanke) mit Reset auf das INDX signal). Gemäss Datenblatt sollte sich bei jeder QEA-Flanke der Positionscounter (Register POSCNT) um eine Stelle erhöhen (s. 16.2.3 ff.). Ich möchte das zuerst einfach mal im MPLAB als Simulation zu laufen kriegen, klappt aber nicht. Im folgenden der Code den ich zum Testen verwende (das QEA Signal simuliere ich mit einem asynchronen Stimulus auf RA3):
; port description of PIC 18F4331 (40-pin PDIP): PORT A
;0:
;1:
;2: INDX (input)
;3: QEA (input)
;4: QEB (input)
;5: x
;---------------------------------------------------------------------------
; microcontroller version:
list p=18f4331
;---------------------------------------------------------------------------
; include file:
include "p18f4331.inc"
;---------------------------------------------------------------------------
;suppress message 302 from list file:
errorlevel -302
;---------------------------------------------------------------------------
; configuration -> done in MPLAB
org 0x00
;setup I/O ports
clrf PORTA ; initialize PORTA by clearing output data latches
clrf ANSEL0 ; ports are digitale I/Os
clrf ANSEL1
movlw b'11111111' ; pin I/O configuration of PORTA (1 = input, 0 = output)
movwf TRISA
;---------------------------------------------------------------------------
;setup quadrature encoder and IC module
movlw b'00000000' ; IC module off -> QEI module on (?)
movwf CAP1CON
movwf CAP2CON
movwf CAP3CON
movlw b'10000100' ; Velocity mode off, 2x update with reset on INDX, no pulse reduction
movwf QEICON
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;main loop
Loop nop
goto Loop
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;end of program
end
Wie gesagt, wenn ich das ganze in MPLAB laufen lasse tut sich rein gar nichts in den POSCNT Registern - was mache ich falsch oder habe ich etwas total falsch verstanden?
Danke für jede Hilfe!
B E A T
Zuerst mal guten Tag alle zusammen - bin neu hier im Forum (aber schon einige Zeit am "herumschnüffeln").
Momentan schlage ich mich mit dem im PIC18F4331 eingebauten QEI-Modul herum, ich bringe das Ding einfach nicht zum Laufen. Hat evtl. jemand von euch schon Erfahrungen damit gemacht?
Ich möchte einen Encoder im Positions-Modus betreiben, und zwar im 2x update mode (inkrement auf jede QEA-Flanke) mit Reset auf das INDX signal). Gemäss Datenblatt sollte sich bei jeder QEA-Flanke der Positionscounter (Register POSCNT) um eine Stelle erhöhen (s. 16.2.3 ff.). Ich möchte das zuerst einfach mal im MPLAB als Simulation zu laufen kriegen, klappt aber nicht. Im folgenden der Code den ich zum Testen verwende (das QEA Signal simuliere ich mit einem asynchronen Stimulus auf RA3):
; port description of PIC 18F4331 (40-pin PDIP): PORT A
;0:
;1:
;2: INDX (input)
;3: QEA (input)
;4: QEB (input)
;5: x
;---------------------------------------------------------------------------
; microcontroller version:
list p=18f4331
;---------------------------------------------------------------------------
; include file:
include "p18f4331.inc"
;---------------------------------------------------------------------------
;suppress message 302 from list file:
errorlevel -302
;---------------------------------------------------------------------------
; configuration -> done in MPLAB
org 0x00
;setup I/O ports
clrf PORTA ; initialize PORTA by clearing output data latches
clrf ANSEL0 ; ports are digitale I/Os
clrf ANSEL1
movlw b'11111111' ; pin I/O configuration of PORTA (1 = input, 0 = output)
movwf TRISA
;---------------------------------------------------------------------------
;setup quadrature encoder and IC module
movlw b'00000000' ; IC module off -> QEI module on (?)
movwf CAP1CON
movwf CAP2CON
movwf CAP3CON
movlw b'10000100' ; Velocity mode off, 2x update with reset on INDX, no pulse reduction
movwf QEICON
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;main loop
Loop nop
goto Loop
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;end of program
end
Wie gesagt, wenn ich das ganze in MPLAB laufen lasse tut sich rein gar nichts in den POSCNT Registern - was mache ich falsch oder habe ich etwas total falsch verstanden?
Danke für jede Hilfe!
B E A T