Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
06/14/12 13:52
Read: times


 
#187704 - Some comments
Responding to: ???'s previous message
Hi Bert,

When you say "it seems to cause a reset", where exactly in the code is this reset generated and what kind of reset is it? (I *do* assume you have stepped through your code with the debugger)

Some comments:
WriteFlashByte:				;Write the byte in accumulator to flash address in dptr
		push	acc
-->		mov	RSTSRC,#00h	;Disable VDD monitor as a reset source      <-- Why, if you are going to enable it again in the very next line?
		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       <-- Superfluous, this has been done already
		mov	FLKEY,#0A5h	;Key sequence 1                             
		mov	FLKEY,#0F1h	;Key sequence 2                              > This is in the wrong order as compared to the datasheet procedure
      		mov	PSCTL,#1                                                    /
-->		mov	VDM0CN,#0A0h	;Enable VDD monitor and high threshold      <-- Superfluous, this has been done already
-->		mov	RSTSRC,#02h     ;Enable VDD Monitor as a reset source       <-- That's the third time!
      		pop	acc
		movx	@dptr,a
		mov	PSCTL,#0
		inc	dptr
		ret
 


Personally, I would do it something like this:

WriteFlashByte:				;Write the byte in accumulator to flash address in dptr
		push	acc
		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
      		pop	acc
      		mov	PSCTL,#1
		mov	FLKEY,#0A5h	;Key sequence 1
		mov	FLKEY,#0F1h	;Key sequence 2
		movx	@dptr,a
		mov	PSCTL,#0
		inc	dptr
		ret


 



Kind regards,
Rob.

List of 8 messages in thread
TopicAuthorDate
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      

Back to Subject List