Quote Originally Posted by BillTodd View Post
It sounds to me like the vernier is not being set to fast mode correctly my the PIC. and it is mis-reading the vernier as a binary version rather than a BCD type.

Fire up a serial comms package or hyperterminal, if ALL else fails :)

Set baud to 115,200, 8, n,1

Send 'i0' and the PIC (in position X) should respond with something.

;command line interpretor
;Commands: (case insensitive)
;rx - Read - reads and transmits abs position (x=x,y,z,w)
;sn - Sets sample rate (n=0,1,2) 0 =poll mode, 1 = 300mS (normal), 2 = 20mS (fast mode)
;zx - zero vernier display (x=x,y,z,w)
;vn - set vernier type (n=0,1) 0 = old, 1=decimal


send V1 to set decimal vernier, then S0 to set poll mode, then RX and the pic should respond with X00.000: (inches) or X000.00:
(mm). If it returns XH000000: then it is not reading the vernier as a decimal type.

I have one vernier here that has a similar problem , so if I can fine the time I'll look into it. In the mean time, you could try inserting an extra pulse clk in the setfast routine

Code:
setFaut        bsf    Mode,Auto
setFast        bsf    Mode,Fast
        clrwdt
        call    zeronorm
        clrwdt            ;pulse clk again if decimal type
        call    Dly200
        call    Plsdata
        btfss    Mode,Vtype 
        return
        clrwdt            ;pulse clk again if decimal type
        call    Dly200
        call    Plsclk
        call    Dly200   ;exta pulse clk *******
        call    Plsclk
        call    txZero        ;send zero message
        return
A quick PIC to PC test:

disconnect serial lead from PC , disconnect vernier from PIC

Run VB application, select correct comm port

Connect serial lead, connect vernier to PIC - you should see a new frame appear for X, Y, Z or W - if this happens the serial port is working OK.

you should see the vernier be reset to zero then depending on type H (for hold) and F (for fast)

Press ZERO (and hold) on the vernier, this will stop the clock signal, after a second or less the PIC will signal the PC to remove the frame .

Releasing the zero will start the clock, the PIC will signal the PC and the PC will issue a reset to the Vernier.


If all of the above works the serial comm must be working fine.

Bill, I have not tried the Hyperterminal test yet or tried adding another pulse to the code. I have not had time yet to try another vernier type either but i did try the simple comms port diagnostic test you describe. When you hold the zero button it stops the clock and the VB app clears the vernier off the display window, Y in my case. On releasing the zero button the Y display returns. The clock and data line LEDs to the vernier flash in a sequence, the vernier display zeroes but in general it leaves it in th H (hold) mode, never in the F.T Fast Read mode. Sometimes the clock and data pulsing sequence repeats a few times till it settles down to the Hold mode. Sometimes it leaves the vernier in the slow mode but this is rare.

I must try and test the other Vernier I have and give an update before trying the other tests.

Cheers.