Searching \ for '[PIC] Strange issue with writing to SFR (18F45K22)' in subject line. ()
Make payments with PayPal - it's fast, free and secure! Help us get a faster server
FAQ page: www.piclist.com/techref/microchip/devices.htm?key=18F
Search entire site for: 'Strange issue with writing to SFR (18F45K22)'.

Exact match. Not showing close matches.
PICList Thread
'[PIC] Strange issue with writing to SFR (18F45K22)'
2012\05\04@115130 by Harrison Cooper

flavicon
face


I have a new board, that updated the processor from an 16F877 to a 18F45K22, porting the code over.
However I ran across something that I haven't been able to really identify whats going on here.  
This is a standard piece of code I use all the time with the 18F parts, and up to  now I haven't seen any problems.

I'm using a ICD3 but not the latest version of MPLAB...its new enough to know what this part is of course, and builds
Without any issues.  However I found that when I write to the EEPROM, data isn't getting in there so I put up a watch
Window and single stepped thru the code.

First off, the EEADR and EEDATA are not getting written to.

Next, the sequence of clearing and setting bits in the EECON1 register ..this works.  The WREN bit gets set.

Then the magic sequence...doesnt get written to the EECON2 register

IF I push the values into the registers thru the watch window, indeed I can get the values written to the
Desired address.

What I find interesting is setting an individual bit works, but moving a byte in..doesnt.

This routine works...Ive used it on several 18F parts, and verified in the data sheet..ie...the example code, Is the same as well.  
Any thoughts...why these SFR's are not being written to?  Has to be something simple but after looking at it and Not seeing anything, just wonder if I am overlooking something ?



EEPROM_WRITE
       BANKSEL EEADR
       movf        EEPROMaddr,w
       movwf        EEADR
       movf        EEPROMdata,w
       movwf        EEDATA
       bcf        EECON1, EEPGD
       bcf        EECON1, CFGS
       bsf        EECON1, WREN
       bcf        INTCON,GIE                ;disable interrupt
       movlw        0x55
       movwf        EECON2
       movlw        0xAA
       movwf        EECON2
       bsf        EECON1, WR
       bsf        INTCON,GIE                ;re-enable interrupt - if interrupt is being used
eewait
       btfsc        EECON1,WR                ;are we done? wait here till we are
       goto        eewait
       bcf        EECON1,WREN
       return

Confidentiality Notice: This e-mail message, its contents and any attachments to it are confidential to the intended recipient, and may contain information that is privileged and/or exempt from disclosure under applicable law.. If you are not the intended recipient, please immediately notify the sender and destroy the original e-mail message and any attachments (and any copies that may have been made) from your system or otherwise. Any unauthorized use, copying, disclosure or distribution of this information is strictly prohibited.  Email addresses that end with a ?-c? identify the sender as a Fusion-io contractor.

2012\05\04@153753 by Josh Koffman

face picon face
On Fri, May 4, 2012 at 11:51 AM, Harrison Cooper <spam_OUTHCooperTakeThisOuTspamfusionio.com> wrote:
> Then the magic sequence...doesnt get written to the EECON2 register
>
> IF I push the values into the registers thru the watch window, indeed I can get the values written to the
> Desired address.
>
> What I find interesting is setting an individual bit works, but moving a byte in..doesnt.
>
> This routine works...Ive used it on several 18F parts, and verified in the data sheet..ie...the example code,
> Is the same as well.
>
> Any thoughts...why these SFR's are not being written to?  Has to be something simple but after looking at it and
> Not seeing anything, just wonder if I am overlooking something ?

I haven't used the EEPROM on that chip, so I haven't checked the
datasheet. But...I was once bit with a "K" part as some SFRs (USB ones
in this case) that used to be in access RAM suddenly weren't.
Modifying them through MPLAB worked fine, but I couldn't write
directly to them. Any chance you've got a banking issue?

Josh
-- A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete
fools.
        -Douglas Adams

More... (looser matching)
- Last day of these posts
- In 2012 , 2013 only
- Today
- New search...