??? 06/14/12 02:41 Read: times |
#187702 - Problem writing to C8051F504 flash from firmware |
Hi,
Can't seem to post on the Silabs Forum at the moment so asking here. The EraseFlashPage function below works but the WriteFlashByte function doesn't. It seems to cause a reset. Please check my code below and help if you can. Regards, Bert van den Berg Enter either function with dptr set to flash address. Accumulator=data byte for WriteFlashByte EraseFlashPage: mov VDM0CN,#0A0h ;ERASE Flash Page @ dptr. Enable VDD monitor and high threshold mov RSTSRC,#02h ;Enable VDD Monitor as a reset source mov FLKEY,#0A5h ;Key sequence 1 mov FLKEY,#0F1h ;Key sequence 2 mov PSCTL,#3 mov VDM0CN,#0A0h ;Enable VDD monitor and high threshold mov RSTSRC,#02h ;Enable VDD Monitor as a reset source clr a movx @dptr,a mov A,PSCTL anl a,#11111100b ;PSWE=0, PSEE=0 mov PSCTL,a ret ; WriteFlashByte: ;Write the byte in accumulator to flash address in dptr push acc mov RSTSRC,#00h ;Disable VDD monitor as a reset source mov RSTSRC,#02h ;Enable VDD Monitor as a reset source mov VDM0CN,#0A0h ;Enable VDD monitor and high threshold WFBc: mov r7,#0 ;Wait for VDD monitor to stabilize djnz r7,$ mov a,VDM0CN jnb acc.6,WFBc ;Wait for the VDD voltage to be high enough mov RSTSRC,#02h ;Enable VDD Monitor as a reset source mov FLKEY,#0A5h ;Key sequence 1 mov FLKEY,#0F1h ;Key sequence 2 mov PSCTL,#1 mov VDM0CN,#0A0h ;Enable VDD monitor and high threshold mov RSTSRC,#02h ;Enable VDD Monitor as a reset source pop acc movx @dptr,a mov PSCTL,#0 inc dptr ret |
Topic | Author | Date |
Problem writing to C8051F504 flash from firmware | 01/01/70 00:00 | |
Some comments | 01/01/70 00:00 | |
C code sample from Silab website | 01/01/70 00:00 | |
the dog bites | 01/01/70 00:00 | |
Responding to Bert's and Rob's prior messages | 01/01/70 00:00 | |
Wow | 01/01/70 00:00 | |
Wow to you! | 01/01/70 00:00 | |
Problem solved | 01/01/70 00:00 |