16f88 problems


Closed Thread
Results 1 to 18 of 18

Thread: 16f88 problems

Hybrid View

  1. #1
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mikey11 View Post
    I'm curious if there are any events during startup which could influence my code to jump past the first loop that is waiting for the buttonpress.
    Hi Mikey11,
    The buttonpress . . . does it go high or low when pressed? What is its power off status? Any chance your PIC is seeing a buttonpress condition there ? Can you accept a delay at startup before initialising your TRIS registers ?
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  2. #2
    Join Date
    Jul 2003
    Location
    USA - Arizona
    Posts
    156


    Did you find this post helpful? Yes | No

    Default

    You still need to post the code. It truly sounds like you have something not properly initialized. If nothing else the code will show which pins are in use and what functions those pins share.

    Make sure you have CMCON = 7, as well as ANSEL = 0.

  3. #3
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    As I say, I don't actually think it's the code that is the problem. I feel it's more of an odd hardware issue with the 16f88.
    So why should the OP post the code? We were told that is not the problem.
    Dave
    Always wear safety glasses while programming.

  4. #4
    Join Date
    Jul 2003
    Location
    USA - Arizona
    Posts
    156


    Did you find this post helpful? Yes | No

    Default

    Oh let's see...

    If the code does not properly initialize the HW, the HW does not behave as expected. Such is the lifecycle of embedded programming. But I see, that was you point from the beginning ...
    I do not have the data sheet in front of me but I do not think ansel=0 is the way to go.Check the data sheet and read this. http://www.picbasic.co.uk/forum/showthread.php?t=561


    Oh well, hopefully he takes the advice. Its all given in good faith (and free).

  5. #5
    Join Date
    Nov 2007
    Posts
    7


    Did you find this post helpful? Yes | No

    Default code portion

    hi guys, sorry about the wait. I work over 1000km away from my home, and don't get many opportunities to be there at the moment.

    Here is the code up to and including the first loop where it waits for a button press.

    <code>

    Include "modedefs.bas"
    CMCON=7 'allows you to use pins as digital rather than analog
    ADCON1 = %00000111 ' Disable A/D converter
    ANSEL=0 'allows you to use pins as digital rather than analog
    @ DEVICE PIC16F88, INTRC_OSC_NOCLKOUT, MCLR_OFF, WDT_OFF, LVP_OFF, PWRT_ON, PROTECT_OFF, BOD_OFF
    DEFINE OSC 8
    OSCCON = %01110000 ' INTRC = 8MHz



    'declare inputs and outputs appropriately
    TRISA = %00111100 ' a.5 is INPUT only
    TRISB = %11100100


    'define variables
    mscounter var word
    secondcounter var word
    minutecounter var word
    loopvar var word

    'INPUTS First Name them by pin
    rwire var portb.2
    bwire var portb.1
    mswitch var portb.0
    playmode var porta.2
    testmode var porta.3
    startbutton var portb.5
    'eventually the mode switch it will be a three position switch, and a.4 will be another input.

    'OUTPUTS, Name them
    solenoid var portb.3
    modeled var porta.1
    flashingled var porta.0
    buzzer var portb.4



    'Now perform the initial wait until the start switch is pressed
    modeled = 1
    solenoid = 0
    pause 2000
    startloop:
    flashingled = 1
    pause 50
    if startbutton = 1 then goto checkvalues
    flashingled = 0
    pause 50
    if startbutton = 1 then goto checkvalues
    goto startloop

    </code>

    As I've indicated before, the rest of the code works fine, and it eventually leads back to this first loop. On the first execution, it skips this loop, and proceeds to the next section of code. When the program completes it comes back to startloop and then everything runs fine. I just need it to engage this first loop the first time.

    I do not have an absolutely clear understanding of the ANSEL and CMCON commands. I've read about them and think I'm using them right.

    It's possible I shouldn't even be using the ADCON command. I don't know though.

    If anyone has great ideas I'm still very much interested in sorting this out.

    Cheers, Mike

  6. #6
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    ADCON1 is not used that way on this chip so get rid of that. If that does not solve the problem I would look at your hardware setup. Something giving a false signal . How is the solenoid connected ?
    Dave
    Always wear safety glasses while programming.

  7. #7
    Join Date
    Nov 2007
    Posts
    7


    Did you find this post helpful? Yes | No

    Default I'll try a few things out.

    I had thrown a 2 second pause in to allow for things to stabilize, then I read the post where the pause should be before the tris statement is made. I'll try that.

    I will try removing adcon as well.

    The solenoid is hooked up via an output from a digital pin. When the pin goes high it trips a 2N3904 which completes a circuit for a 12V relay which then fires the solenoid itself.

    Both the solenoid and the relay have protection diodes in place.

    The solenoid is running a regulated air system.

    I did have this system working with a 16f819, but my computer crashed and I didn't have a backup (silly me). I can confirm that the general scheme I used components wise has worked completely in the past. The only thing that is substantially different is the pic, and I put more of the components on the circuit board.

    removing adcon had no effect, and the pause prior to the tris statements didn't seem to do anything either.

    Unfortunately I leave again, and won't have a chance to work on it again for a while. I think these initial statements are where the problem resides. Something transient to do with the interplay between configuration, and hardware just as power is applied.

    Can anyone tell me about the difference between ADSEL and ANSEL? I have seen references to ADSEL and the 16f88 by people using other compilers than pbp.

    -Mike

Similar Threads

  1. Code works on 16F84A but not on 16F88?
    By pharaohamps in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 6th November 2009, 19:29
  2. Can't get a 16F88 to do anything.
    By ccowley in forum General
    Replies: 14
    Last Post: - 26th August 2008, 00:42
  3. 16F88 RA6 and RA7 troubles
    By gandora in forum mel PIC BASIC Pro
    Replies: 8
    Last Post: - 3rd August 2007, 03:57
  4. 16f88 help
    By ccsparky in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 3rd July 2004, 18:50
  5. 4 line LCD with 16F88
    By anj in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 7th February 2004, 10:06

Members who have read this thread : 0

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