Erratic behavior with a PIC16F88 and an custom LCD Board


Closed Thread
Results 1 to 9 of 9

Hybrid View

  1. #1
    russman613's Avatar
    russman613 Guest


    Did you find this post helpful? Yes | No

    Default

    My understanding is that setting bits 1 and 0 to 0 make the rest of the OSCCON register meaningless. The value i have set there is left over from other messing around.

    russ

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


    Did you find this post helpful? Yes | No

    Default Is somebody giving away 16F88 chips?

    Wow, so many people are using and having problems with 16F88 PICs right now I thought I might have missed out on a give away
    Point to remember about this chip is : it has ANSEL, ADCON0,ADCON1, CMCON, REGISTERS, neglect one and it's not happy. The data sheet says" On power on reset the pins PortA<4:0> are configured as analog inputs and read as 0."
    Code:
    
    ' PicBasic program to demonstrate operation of an LCD in 4-bit mode
    '
    ' LCD should be connected as follows:
    ' LCD PIC
    ' DB4 PortA.0
    ' DB5 PortA.1
    ' DB6 PortA.2
    ' DB7 PortA.3
    ' RS PortA.4 (add 4.7K pullup resistor to 5 volts)
    ' E PortB.3
    ' RW Ground
    ' Vdd 5 volts
    ' Vss Ground
    ' Vo 20K potentiometer (or ground)
    ' DB0-3 No connect
    
    
    @ DEVICE PIC16F88, HS_OSC 'HS oscillator
    @ DEVICE PIC16F88, WDT_ON 'Watchdog Time
    ' (http://www.hobbyprojects.com/pic_tut...utorial13.html)
    @ DEVICE PIC16F88, PWRT_ON '15.5 Power-Up Timer: Provides a fixed delay of
    ' 72 ms (nominal) on power-up only. It is designed to keep the
    ' part in RESET while the power supply stabilizes.
    @ DEVICE PIC16F88, BOD_ON '15.7 Brown-Out Detect
    @ DEVICE PIC16F88, MCLR_ON 'Master Clear Options set to Internal. RA5 unavail
    @ DEVICE PIC16F88, LVP_OFF '15.18 Low Voltage Programming via ICSP.
    @ DEVICE PIC16F88, CPD_OFF '15.1 bit 8 - Data EE Memory Code Protection bit
    @ DEVICE PIC16F88, WRT_OFF '15.1 bit 10-9. FLASH Program Memory Write protection off
    @ DEVICE PIC16F88, DEBUG_OFF '15.1 bit 11. DEBUG: In-Circuit Debugger Mode bit
    ' In-Circuit Debugger disabled, RB6 and RB7 are general
    ' purpose I/O pins
    @ DEVICE PIC16F88, CCPMX_OFF '15.1 bit 12. CCPMX: CCP1 Pin Selection bit
    ' 1 = CCP1 function on RB0
    ' 0 = CCP1 function on RB3
    @ DEVICE PIC16F88, PROTECT_OFF 'Code protection off
    
    'Command Operation
    '$FE, 1 Clear display
    '$FE, 2 Return home (beginning of first line)
    '$FE, $0C Cursor off
    '$FE, $0E Underline cursor on
    '$FE, $0F Blinking cursor on
    '$FE, $10 Move cursor left one position
    '$FE, $14 Move cursor right one position
    '$FE, $80 Move cursor to position 0 (+offset to precisly posn)
    '$FE, $C0 Move cursor to beginning of second line (+offset to precisly posn)
    '$FE, $94 Move cursor to beginning of third line
    '$FE, $D4 Move cursor to beginning of fourth line
    
    define OSC 20
    OSCCON=%01110000 ' pg 41. Setting bit 1-0: 00 = Oscillator mode defined by FOSC<2:0>
    TRISB=%00000000 ' all portb to output
    TRISA=%00000000 ' all porta to output
    ANSEL=%00000000 ' set all analog pins to digital
    <font color=red> CMCON=7 ' turn off comparators
    ADCON1 = 7 ' or ADCON1 = %00000111 'Disable A/D converter
    </font color=red>
    pinLED var portb.4 ' blink and stuff to know we're alive
    I var word
    
    high pinLED
    
    Pause 1500 ' Wait for LCD to startup
    
    
    loop:
    low pinLED
    
    Lcdout $FE, 1, "Russ was here ..."
    pause 1000
    lcdout $FE, $C0, " or was he ..."
    pause 4000 ' Give that some time to sink in.
    
    lcdout $FE,1 ' Clear screen
    lcdout $FE, $C0, "Second line ..."
    pause 500
    lcdout $FE, 2, "First line ..."
    pause 500
    
    
    lcdout $FE, 1 ' Clear the screen again - we love to clear screens.
    pause 500
    
    lcdout $FE, $80, "Dec:"
    lcdout $FE, $C0, "Hex:"
    for I = 0 to 199
    lcdout $FE, $80+5, dec3 I
    lcdout $FE, $C0+5, hex3 I
    toggle pinLED
    pause 200
    next I
    pause 1500 ' Alone done - take a quick breather.
    
    Goto loop ' Start all over again.
    Anyway try this and see if it helps.
    JS

  3. #3
    russman613's Avatar
    russman613 Guest


    Did you find this post helpful? Yes | No

    Default

    Thanks for the response. Properly setting those registers did not seem to help my specific problem.

    Additionally, I set the OSCCON to 0 and used HS in the HW programmer (with external 20Mhz resonator) and that did not make a difference - still seeing flakey bahaviour.

    I set:

    define OSC 8
    OSCCON=%01110110

    and it was still flakey.

    I am starting to suspect that my board is just bad. I wired it on a breadboard and it was reliable without the resonator though i had to jiggle the wires around quite a bit to get it to work.

    russ

  4. #4
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    OK.. you're using an external OSC, BUT not the MCLR pin, so just make MCLR pin as I/O OR tie it to Vdd via 10K resistor... it should work Better.

    If you're using an external OSC, the OSCCON stuff won't change anything. So i bet that..
    Code:
    @ DEVICE PIC16F88, HS_OSC 'HS oscillator
    @ DEVICE PIC16F88, WDT_ON 'Watchdog Time
    ' (http://www.hobbyprojects.com/pic_tut...utorial13.html)
    @ DEVICE PIC16F88, PWRT_ON '15.5 Power-Up Timer: Provides a fixed delay of
    ' 72 ms (nominal) on power-up only. It is designed to keep the
    ' part in RESET while the power supply stabilizes.
    @ DEVICE PIC16F88, BOD_ON '15.7 Brown-Out Detect
    @ DEVICE PIC16F88, MCLR_OFF 'Master Clear Options set to Internal. RA5 unavail
    @ DEVICE PIC16F88, LVP_OFF '15.18 Low Voltage Programming via ICSP.
    @ DEVICE PIC16F88, CPD_OFF '15.1 bit 8 - Data EE Memory Code Protection bit
    @ DEVICE PIC16F88, WRT_OFF '15.1 bit 10-9. FLASH Program Memory Write protection off
    @ DEVICE PIC16F88, DEBUG_OFF '15.1 bit 11. DEBUG: In-Circuit Debugger Mode bit
    ' In-Circuit Debugger disabled, RB6 and RB7 are general
    ' purpose I/O pins
    @ DEVICE PIC16F88, CCPMX_OFF '15.1 bit 12. CCPMX: CCP1 Pin Selection bit
    ' 1 = CCP1 function on RB0
    ' 0 = CCP1 function on RB3
    @ DEVICE PIC16F88, PROTECT_OFF 'Code protection off
    could help
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  5. #5
    russman613's Avatar
    russman613 Guest


    Did you find this post helpful? Yes | No

    Default

    Whose the stud?? Steve aka mister_e, that's who!

    Thx much for noticing my problem with the MCLR fuse setting.

    I changed it to the correct value (MCLR_OFF since i don't have reset wired in my schematic) and voila - flowers and discount surplus parts rained from the sky to bring happiness to the masses - even though they were sober and balding ...

    Very much appreciate the attention to detail. Thanks again for your assistance.

    Russ

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


    Did you find this post helpful? Yes | No

    Default Hurray !

    CONGRATULATIONS russman613 and
    <font color=red><h1> Hurray for mister_e !</h1></font color> the devil is always in the details! Nice catch Steve!

  7. #7
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

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