PIC 16f628A refusing to work


Closed Thread
Results 1 to 3 of 3
  1. #1
    Join Date
    Dec 2009
    Posts
    21

    Default PIC 16f628A refusing to work

    I think I'm doing something daft again ! I have built a circuit by Bill Sherman which operates a "perpetual" pendulum. The circuit specifies the 16 F 628. I have used the 16f628A the circuit should be run at 20 mhz. Since it shows no Capacitors withe crystal I have installed 33 pf. I have also modified the code to 16F628A and the chip seems to be programming Ok but does not appear to run ! Comments or help would be appreciated. I attach the circuit and the asm
    ['************************************************* ***************
    '* Name : picpend.BAS *
    '* Author : Bill Sherman *
    '* Notice : Copyright (c) 2004 Bill Sherman *
    '* : All Rights Reserved *
    '* Date : 6/06/04 *
    '* Version : 1.0 *
    '* Notes : *
    '* : *
    '************************************************* ***************

    'single coil design
    'move pulse to pin 17, change A0 to output
    'adjustable pulse time
    'mode button to read pulse lenght in millisec
    'up down button for millisec on time 1 to 20 msec
    @ device pic16f628a, hs_osc, wdt_off, mclr_on, protect_off ,pwrt_on, bod_on, lvp_off, cpd_off


    define osc 20

    CMCON=%00100101
    VRCON=%11110001

    sense var CMCON.7 'pin 18
    pulse var porta.0 'pin 17
    kick var byte
    n var byte
    up var porta.3
    dn var porta.5
    mode var porta.4

    output porta.0
    input porta.3
    input porta.5
    input porta.4

    setup:
    pause 1000
    read 0,kick
    if kick > 20 then
    kick = 20
    endif

    if kick < 1 then
    kick = 1
    endif

    main:
    if up = 0 then kickup
    if dn = 0 then kickdn
    if mode = 0 then modedetect
    if sense = 1 then kickcoil
    goto main

    kickup:
    kick = kick + 1
    if kick > 20 then
    kick = 20
    endif

    output porta.4
    low porta.4
    pause 200
    high porta.4

    waitup:
    if up = 0 then waitup
    input porta.4
    goto main

    kickdn:
    kick = kick - 1
    if kick < 1 then
    kick = 1
    endif

    output porta.4
    low porta.4
    pause 200
    high porta.4

    waitdn:
    if dn = 0 then waitdn
    input porta.4
    goto main

    modedetect:
    gosub countkick
    pause 1000
    write 0,kick
    output porta.4
    low porta.4
    pause 1000
    high porta.4
    input porta.4
    goto main

    kickcoil:
    low pulse
    pause kick
    high pulse
    pause 100
    goto main

    countkick:
    pause 1000
    for n= 1 to kick
    output porta.4
    low porta.4
    pause 100
    high porta.4
    pause 300
    next n
    input porta.4
    return

    goto main

    end


    ]
    Attached Images Attached Images

  2. #2
    Join Date
    Nov 2005
    Location
    Bombay, India
    Posts
    947


    Did you find this post helpful? Yes | No

    Default Re: PIC 16f628A refusing to work

    Try this

    Code:
    @ device  pic16f628a, hs_osc, wdt_off, mclr_off, protect_off ,pwrt_on, bod_on, lvp_off, cpd_off
    This is needed since MCLR is used as an input. You may also change HS_OSC to XT_OSC since HS is used for resonators and XT for a crystal.

  3. #3
    Join Date
    Dec 2009
    Posts
    21


    Did you find this post helpful? Yes | No

    Default Re: PIC 16f628A refusing to work

    Hi, Thanks for quick reply ! I have tried the changes you suggest but still no signs of life. I should perhaps have mentioned that I am using a Pickit 2 to proram the 16f628a and have it directly connected to pins 12,13,14 and 4. Having prorammed it ( and there is a hex file in there if I read it) I remove the Pic Kit and connect and external supply as the coil would draw more current than the pic Kit would be happy with. Can't help thinking I am doing something seriously dumb here (not for the first time !

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts