PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit QEI-Modul (PIC 18F4331)



Beat
05.10.2005, 12: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

Fritzli
05.10.2005, 16:06
Hallo

Könnte es sein, dass das Hardware-Modul (POSCNT etc.) vom MPLAB-Sim nicht unterstützt wird? Sollte in der Hilfe stehen, welche Module bei welchem PIC unterstützt werden.

Gruess
FRitzli

Beat
06.10.2005, 07:03
Hallo Fritzli

Danke für die Antwort, aber das hab ich gecheckt: In der "Limitations" Liste von MPSIM ist jedenfalls nichts derartiges erwähnt. Aber vielleicht sollte ich das ganze doch einfach mal hardwaremässig ausprobieren - vielleicht läuft's dann ja.

Was mich bei der ganzen Sache verwirrt ist die Verknüpfung des IC-Capture Moduls mit dem QEI-Modul: Wie schalte ich das IC-Capture Modul aus und das QEI Modul korrekt ein, und sind mit dem Einschalten des QEI Moduls die I/O pins gleich richtig konfiguriert?

Ist es richtig die Register CAPxCON und QEICON wie folgt zu setzen?:

CAPxCON = 'yyyy0000' bedeutet "Input Capture x off"
QEICON = '00000100' bedeutet "QEI enabled in 2x update mode, INDX resets the position counter"

(zudem müssen die IO pins RA2-RA4 natürlich auf input geschaltet sein)

Meiner Meinung nach sollte das reichen und das POSCNT register sollte jetzt bei jeder QEA Flanke um eins erhöht werden.

B E A T

Beat
06.10.2005, 08:56
Hallo zusammen

Habe den Fehler (auf Anregung von Fritzli) gefunden: Die ganze Sache funktioniert in Hardware wie vorgesehen, aber die Simulation wird in MPLAB nicht unterstützt (allerdings findet sich nirgends ein Hinweis darauf dass das Modul in der Simulation nicht unterstützt wird). Werde mich mal bei Microchip direkt erkundigen.

Danke

B E A T