View previous topic :: View next topic |
Author |
Message |
mcr1981
Joined: 27 Oct 2010 Posts: 28
|
A little advice on what not to do with internal oscillator |
Posted: Thu Apr 24, 2014 6:39 pm |
|
|
Hello.
Just telling you a little advice on what not to do with the internal oscillator of a PIC24FV32KA302:
do not use the preprocesor #use delay(internal = 31250), it will brick your micro.
At least it's what I think happen to three of my micros. Could program them with 32MHz internal and all the way down to 1MHz, but when I tried to use 31250, they are not recognized by the PICKIT3.
That's so strange since I can't even erase them. I've been looking around the microchip forum and the web for a possible solution and apparently when you use the Internal Oscillator with a frequency not known to the microcontroller and don't use the MCLR pin as a MCLR (normal digital instead) you get yourself a nice little brick.
Here's the sample code I use:
Code: |
#include <24FV32KA302.h>
#DEVICE ADC = 12
#FUSES ICSP1
#FUSES NOWRTB
#FUSES NOBSS
#FUSES NOWRT
#FUSES NOPROTECT
#FUSES NOWDT
#FUSES NODSBOR
#FUSES NOLVR
#FUSES NODEBUG
#FUSES NOBROWNOUT
#FUSES NOIESO
#FUSES SOSC_DIGITAL
#FUSES NOOSCIO
#FUSES NOMCLR
#use delay(internal=31250)
|
Code: |
void main(void)
{
while(1)
{
output_low(PIN_B5);
delay_ms(1000);
output_high(PIN_B5);
delay_ms(1000);
}
}
|
I use PCD 5.023 and MPLAB X 2.05
Actually, PICKIT3 can read the device (although it tells me it does not recognize it) and the configuration bits are as follows:
Code: |
// PIC24FV32KA302 Configuration Bit Settings
// 'C' source line config statements
#include <htc.h>
__CONFIG(BWRP_ON & BSS_HI5K);
__CONFIG(GWRP_ON & GSS0_ON);
__CONFIG(FNOSC_FRC & SOSCSRC_DIG & LPRCSEL_LP & IESO_OFF);
__CONFIG(POSCMOD_EC & OSCIOFNC_OFF & // POSCFREQ = No Setting
& SOSCSEL_SOSCLP & FCKSM_CSECME);
__CONFIG(WDTPS_PS1 & FWPSA_PR32 & FWDTEN_OFF & WINDIS_ON);
__CONFIG(BOREN_BOR0 & LVRCFG_ON & PWRTEN_OFF & I2C1SEL_SEC & BORV_LPBOR & MCLRE_OFF);
__CONFIG(// ICS = No Setting
);
__CONFIG(DSWDTPS_DSWDTPS0 & DSWDTOSC_SOSC & DSBOREN_OFF & DSWDTEN_OFF);
|
One can import the configuration bits from MPLAB X.
That's very strange since all the PIC is protected.
The only thing I did was to change the #use delay(internal=32MHz) to #use delay(internal=31250).
Hope this is useful for someone, don't fiddle with the wrong Oscillator Frequency and the MCLR configuration bit.
Will still try to program those micros, but don't know if I'll succeed. Will tell you if I can. |
|
|
asmboy
Joined: 20 Nov 2007 Posts: 2128 Location: albany ny
|
|
Posted: Thu Apr 24, 2014 7:23 pm |
|
|
bad fuse being written?
what does the end of the offending .LST file show ??
tried a readback of PIC program and fuses area ??
i've done that with PICs,
using the Micro engineering labs USB pic programmers
when situations like this arise, comparing fuses as written
vs what i wanted . |
|
|
jeremiah
Joined: 20 Jul 2010 Posts: 1349
|
|
Posted: Thu Apr 24, 2014 9:18 pm |
|
|
Your fuses would default to the FRC, which is much higher frequency than the LPRC. You should really set your fuses to reflect your LPRC. There are two to set:
#fuses NOPR //tells the pic to not use an external clock circuit
#fuses LPRC //tells the pic that the clock select mux should select the LPRC
EDIT: also note, these chips (both the 304 and the 302) sometimes have trouble running at frequencies near or above 25MHz. The datasheet says they can go up to 25MHz, but I have had trouble in the past with gliching at those speeds. Simple hello world programs would fail sometimes until I dropped the speed down.
I've never tried using the LPRC as the system clock (I use it for timer1 wakeup from sleep a lot of times) nor do I have a picket3 to test with. I typically go with the FRC or a 3-11Mhz external crystal. Even with those, the PIC24F32KA30x will drop to nano amps in regular sleep, so I haven't needed to run off the LPRC. Also note that the LPRC has a 15% tolerance, so you have to be careful what you run on your PIC. |
|
|
mcr1981
Joined: 27 Oct 2010 Posts: 28
|
Thanks for the replies but.... |
Posted: Fri Apr 25, 2014 1:27 am |
|
|
Thanks for the replies.....but:
I tried reading the PIC and it returns just NOP in every line (in HEX they are all 0x00).
When I read the configuration bits it always returns code protection to the max (can't read or write).
Can't erase them. Not even with a Xeltek SUPERPRO 5000E (same error, can't read the device).
Even tried with MPLAB 8.92 (trusty MPLAB). I remember several times I just went into the configuration bits area and forced MPLAB to program new configuration words.
To Jeremiah:
That's odd, the high frequency issue. I've been using these micros with some PWM, RS232, LCD and other stuff at 32MHz (8M FRC+PLL) and haven't had any problems.... well, having problems now at low frequencies.
Will order new PICs and see what happens. Will not give up on those three little bricks that I now possess.
12:26 AM now.... need to sleep. |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9229 Location: Greensville,Ontario
|
|
Posted: Fri Apr 25, 2014 9:00 am |
|
|
sounds like you should contact Microchip and ask for help...at least they should replace the 'bricks' for free....
jay |
|
|
mcr1981
Joined: 27 Oct 2010 Posts: 28
|
Contacted Microchip now. |
Posted: Fri Apr 25, 2014 12:26 pm |
|
|
temtronic wrote: | sounds like you should contact Microchip and ask for help...at least they should replace the 'bricks' for free....
jay |
That's news to me. Hopefully they will resolve this issue.
Will contact them and wait for a solution.
It's interesting that the Low Power RC configuration bits don't change. Looks like it's always working with the nominal internal frequency (8MHz).
EDIT:
Ticket has been created, now to wait.
270265 04/25/2014 05:33 PM |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19520
|
|
Posted: Sat Apr 26, 2014 1:18 am |
|
|
I remember before, finding on these chips that the 'internal=' usage, does not switch to the LP oscillator. You have to explicitly select this in the fuses. So LPRC.
Just compiled with this selected, and imported to MPLAB, and the FNOSC fuses then change from the 8MHz with postscaler, to the LPRC oscillator.
On your ability to read the fuses, this sounds suspiciously like the old MPLAB switching to DEBUG mode problem. So several of the actual fuses are being overridden, including the ones that prevent the fuses from being read. |
|
|
mcr1981
Joined: 27 Oct 2010 Posts: 28
|
Update.... |
Posted: Sun Dec 28, 2014 5:28 pm |
|
|
I have not tried this code with the faulty oscillator since the last time.
I'm surprised to see that the new version (5.035) does provide an error if one tries to assign an invalid internal oscillator with MPLAB X 2.26
CCS with the help of the ICD-U64 and tech support helped me a lot too.
Microchip reproduced my setup and they too bricked their chips. |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9229 Location: Greensville,Ontario
|
|
Posted: Mon Dec 29, 2014 2:24 pm |
|
|
hmm.. the fact that uC bricked their own devices says to me, they should send you new ones !!
It should NOT be possible to do. There should always be a way to 'reset' the PIC to a 'factory configuration'.
jay |
|
|
mcr1981
Joined: 27 Oct 2010 Posts: 28
|
I hear you... |
Posted: Mon Dec 29, 2014 2:47 pm |
|
|
Already told them that back in April 2014. Well, not that exactly like that.
Those chips were revision 4. Got new ones and now they are revision 6.
I'm just happy it works now and the CCS guys now have implemented that feature for the internal oscillator calculation.
If there's a way to destroy something, someone will find it..... I always say that, now I'm part of my own statistics
EDIT:
was not April 2013, it's 2014.
Last edited by mcr1981 on Tue Dec 30, 2014 12:45 am; edited 2 times in total |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9229 Location: Greensville,Ontario
|
|
Posted: Mon Dec 29, 2014 5:07 pm |
|
|
hmm.. when I told them 'something' was wrong with my PicstartPlus (failed to update the new PIC internals), they sent me a new one, next day from Toronto, kinda supriseed they didn't send you a 'tube' full of new PICs. Glad to hear you're 'up and running' though !!
jay |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
|
|