Sorry for wrong information. This should be Pic16F684 not 685. Must be getting tired. HOWEVER it still doesn't work!!
Sorry for wrong information. This should be Pic16F684 not 685. Must be getting tired. HOWEVER it still doesn't work!!
Hi Bruce
Working through the errors!
OSCCON is typo in my post - OK in programme
MCLRE ditto
underscore in INTOSCIO ditto
Can't see anything wrong with CMCON0Apologise for wrong PIC reference in post and typos
Still stuck
Adrian
Hi Bruce
My programme is exactly the same as yours (I removed the 1 from OSCCON bit 0). It is just the same as before. I have a 1 Mhz square wave on pin 4 and a sawtooth waveform on pin 5. I have removed everything else in the programme now apart from a LED flashing on RA1. If I try to do that on RA4/RA5 - zilch. The relevant config line was commented out in the PBP pic inc file but I had also tried programming both ways with no luck.
Copy/paste your whole code and inc file so we can see everything.
Dave
Always wear safety glasses while programming.
Hi mackrackit
Here it is.
To be clear I have removed the PIC from it's PCB and stuck it on a breadboard and just programmed it with these 10 lines of code. I have programmed it both with MPASM and PM with line in inc file restored.
None of the pins are connected apart from LED on PORTA.0 which flashes. Do that on RA4 or RA% and nothing. I get a nice square wave at 1Mhz on RA4 and a sawtooth on RA5. Logic tells me I am not programming an I/O on RA4/RA5 but can't see why. Maybe there is something obvious that I keep overlooking - just too tired or too stupid. Hope you find it!!
Code cut & pasted
INC FileCode:@__CONFIG _INTOSCIO & _WDT_ON & _MCLRE_OFF & _CP_OFF ANSEL = $00 CMCON0 = 7 OSCCON = $60 TRISA = $00 TRISC = $00 Start: TOGGLE PORTA.0 PAUSE 250 goto start
regardsCode:NOLIST ifdef PM_USED LIST include 'M16F684.INC' ; PM header device pic16F684, intrc_osc_noclkout, wdt_on, mclr_on, protect_off XALL NOLIST else LIST LIST p = 16F684, r = dec, w = -302 INCLUDE "P16F684.INC" ; MPASM Header ;__config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_ON & _CP_OFF NOLIST endif LIST
Adrian
Wow that is strange. I don't have a 16F684, but this works as expected on a 16F688.
Try the attached .hex file. It's the same code - but compiled for your 684.Code:@ __CONFIG _INTOSCIO & _WDT_ON & _MCLRE_OFF & _CP_OFF ANSEL = $00 OSCCON = %01100000 CMCON0 = 7 TRISA = 0 TRISC = 0 Main: PORTA = %00010000 PAUSE 500 PORTA = %00100000 PAUSE 500 GOTO Main END
If it doesn't work, try reading it back from the chip and verifying the config settings.
Sounds to me like your programmer isn't using the config settings embedded in the .hex.
Note: If your device programmer isn't programming the config regs, then that would explain
what you're seeing. The default clock would be external RC with clock out on OSC2.
The funky signal you're seeing on OSC1 is the internal clock drive assuming an RC oscillator
circuit is on OSC1.
The 1MHz signal on OSC2 is the internal oscillator output. It defaults to internal osc since
your external RC oscillator circuit isn't there. Controller thinks it has failed, defaults to
internal 4MHz, and still outputs clock/4 on OSC2.
Last edited by Bruce; - 8th November 2008 at 18:20.
Thanks Bruce
I'll try that tomorrow morning. Just jumping into a bath for a night on the town..!! Well not quite on the town.... at my age its more sedate but I'll have a go tomorrow and let you know. Thanks to you all
Adrian
Hi Bruce
Problem solved!
Your download produced the same symptoms as my programme, but when I read it back it certainly didn't show INTOSCIO - from memory it might have been INTRC also MCLR was ON. Obviously not picking up the correct config settings as you suspected.
I had a lucky flash of inspiration and in Microcode went to Options||More Options and pressed Set Options to Defaults.
Immediately all came good and the PIC programmed perfectly.
So thank you (and thanks to the others) for your help and I can get back to my PCB testing.
I have no idea why my Microcode would not be locked solid onto its defaults. Maybe I hit something by mistake. Also would you know what parameter stopped this from programming correctly?
Useful to remember to check in future and would save 24 hours of hair tearing......
Regards
Adrian
Bookmarks