_XT_OSC
should be
_HS_OSC
with a resonator.
LCD_DBIT 0
change to
LCD_DBIT 4
Maybe...
Why AnyPin worked? I have no idea.
_XT_OSC
should be
_HS_OSC
with a resonator.
LCD_DBIT 0
change to
LCD_DBIT 4
Maybe...
Why AnyPin worked? I have no idea.
Dave
Always wear safety glasses while programming.
Thanks for the reply Mackrackit,
Based on the datasheet _HS_OSC would be for 8 and 16 MHz but in my case I have 4 MHz.
But I gave it a try and also setting LCD_DBIT 4 but I get no timing difference with the "AnyPin" and still zilch with other setup!
I also tried FLAGS = 0 but still nothing
![]()
The following works for me using an EasyPIC5 board with the LCD on PORTB, 18F4550 with 20Mhz xtal (mainly as that's what I'm using for a current project and couldn't be bothered to change the PIC !)
Using DEFINE OSC 20 I had erroneous results on the LCD, so it's obviously a timing issue with your 4MHz resonator.Code:ASM ; 18F2550/4550, 20mhz crystal __CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L __CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H __CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_OFF_2L & _VREGEN_ON_2L __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H __CONFIG _CONFIG3H, _PBADEN_OFF_3H __CONFIG _CONFIG4L, _LVP_OFF_4L & _XINST_OFF_4L ENDASM DEFINE OSC 48 TRISB = 0 ' Make PORTB all outputs CMCON = 7 ' Disable comparator ;----[LCD definitions]------------------------------------------------------ DEFINE LCD_DREG PORTB ' LCD Data port DEFINE LCD_DBIT 0 ' starting Data bit (0 or 4) DEFINE LCD_EREG PORTB ' LCD Enable port DEFINE LCD_EBIT 5 ' Enable bit (on EasyPIC 5 LCD) DEFINE LCD_RSREG PORTB ' LCD Register Select port DEFINE LCD_RSBIT 4 ' Register Select bit (on EasyPIC 5 LCD) DEFINE LCD_BITS 4 ' LCD bus size (4 or 8 bits) DEFINE LCD_LINES 2 ' number of lines on LCD DEFINE LCD_COMMANDUS 2000 ' Command delay time in us DEFINE LCD_DATAUS 50 ' Data delay time in us LCDOUT $FE,1 ' clear screen LCDOUT $FE,$80,"LCD Prototype MJ" ' Use $Fe,$C0 to address the second line LCDOUT $FE,$C0,"Timer testing" pause 5000 LCDOUT $FE,$C0," " Start: ' Program starts here goto start end
When you say resonator I think of a three pin thing with built in caps, HS works for that.
If you are using a crystal then you may want to check the caps.
Forget the LCD for a bit and figure out the timing problem by blinking an LED once per second.
Dave
Always wear safety glasses while programming.
Thanks Malc-C for the reply but I am not exactly trying to make it work...
Well yes I am trying to make it work but first I am trying to understand what is happening and what is my issue.
Mackrackit,
I am using a resonator (3 pins with caps incorporated) and double checked the datasheet and it does suggest _XT_OSC for a 4 MHz resonator.
I followed your suggestion and I put a LED with puse 1000 and also it is taking 2 secs to blink. Now, I set DEFINE OSC 4 instead of 8 which brought down to 1 sec as I expected so I know that if i am using a 4 MHz crystal, I should be having DEFINE OSC 4. I could be wrong but I think this part is clear to me.
So my questions are changing a bit and now I end up with:
1 - Why does LCD_AnyPin only works with DEFINE OSC 8 although I have a 4 MHz crystal ?
2 - Why the standard way for LCD is not working whisle LCD_AnyPin did even at 8 ?
When I find out, I will never forget it!
Mike
after reading over the thread I just saw this:
I took out my resonator and used the chips' internal oscillator but I get the same results so this rules out the resonator I was using.Using DEFINE OSC 20 I had erroneous results on the LCD, so it's obviously a timing issue with your 4MHz resonator
When using LCD_AnyPin it works with 8 MHz but the timing is doubled, if I set to 4 MHz the timing is is ok and LCD is blank.
Furthermore using standard settings for LCD does not work at all settings for OSC.
Help!
The only suggestion I have now is to play with these lines.
Use the 4 MHZ OSCCode:DEFINE LCD_COMMANDUS 2000 ' Command delay time in us DEFINE LCD_DATAUS 50 ' Data delay time in us
DEFINE OSC 4
Dave
Always wear safety glasses while programming.
Mike,
That's why I included the statement. With a 20Mhz xtal and setting the define to 20 I got random parts of the text displayed. When I set the define to 48 it worked - why I don't know (I'm still a newb to a degreeMy guess is that the value is divided internally somewhere to set the timing, which is why in your case setting it to 8 works with a 4Mhz xtal
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
Dave,
I have tried
DEFINE LCD_COMMANDUS 1000 and 4000
DEFINE LCD_DATAUS 25 and 100
with no aparent changes.
Malcom,
The display does work at 8 MHz with a 4 MHz resonator but the chip's timing is doubled and that is what I am trying to figure out. so a PAUSE 1000 will last 2 seconds instead of 1 second. The timing for this project is important because I want to build an ultrasound distance mesurement and so I have to time the echo received after sending an output burst of 40 KHz. I think I am far from my goal but I can't get started with the fun part untill I have figured out my issue with the timing problem.
Alain,
What did you mean by this?
For the record this is my hardware configuration and with an oscilloscope I see the 5V as pure DC 5.12Vmay be the missing LCD Settling time @beginning of the program ???
Ok so here is a positive update...
I had removed my resonator last night to rule it out and got the same issue with the chip's internal oscilator. Today I just put back the resonator and set _XT_OSC again and now it is working fine at 4 MHz.
Furthermore...! if I remove the LCD_Anypin, it is now still working with the standard version.
So please correct me if I am wrong but I am working with a breadboard and I suspect when I had the resonator at first, there was a bad contact with one of its pin!
Thanks to all for your responses, it kept me going.
Mike
Yup
A bad connection will make all kinds of strange things happen.
Dave
Always wear safety glasses while programming.
Bookmarks