Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: [lpc2000] Problem with watchdog

2005-12-06 by Tom Walsh

Bill Knight wrote:

>Actually it is writing 0xAA then 0x55.  The second line of the
>disassembly is mvn (move negative).  It loads the inverted value
>of 85=0x55 (0xFFFFFFAA) into r3.  The next line stores the low
>order byte WFEED (-536870904=0xE0000008).
>
>  
>
Ah!  Didn't notice that, you are correct.  Reading ARM asm still makes 
my head hurt!

TomW


>Regards
>-Bill Knight
>R O SoftWare &
>http://www.theARMPatch.com
>
>
>On Tue, 06 Dec 2005 21:22:21 +0100, Ake Hedman, eurosource wrote:
>
>  
>
>>I have found part of this problem. The GNU compiler translates
>>    
>>
>
>  
>
>>WDFEED = 0xAA; WDFEED = 0x55;
>>    
>>
>
>  
>
>>to
>>    
>>
>
>  
>
>>710 04c4 8E22A0E3         mov    r2, #-536870904
>>711 04c8 5530E0E3         mvn    r3, #85
>>712 04cc 0030C2E5         strb    r3, [r2, #0]
>>713 04d0 8E22A0E3         mov    r2, #-536870904
>>714 04d4 5530A0E3         mov    r3, #85
>>715 04d8 0030C2E5         strb    r3, [r2, #0]
>>    
>>
>
>
>  
>
>>i.e. just writing 0x55.    This is done even if compiled with 
>>optimization of.
>>    
>>
>
>  
>
>>Anyone know how to work around this?
>>    
>>
>
>  
>
>>Watchdog registers are currently defined as
>>    
>>
>
>  
>
>>// Watchdog
>>#define WDMOD          (*((volatile unsigned char *) 0xE0000000))
>>#define WDTC           (*((volatile unsigned long *) 0xE0000004))
>>#define WDFEED         (*((volatile unsigned char *) 0xE0000008))
>>#define WDTV           (*((volatile unsigned long *) 0xE000000C))
>>    
>>
>
>
>
>  
>
>>/Ake
>>    
>>
>
>
>  
>
>>Ake Hedman, eurosource wrote:
>>    
>>
>
>  
>
>>>Jim Parziale wrote:
>>>
>>>      
>>>
>>>>Assuming you have the correct definitions for your symbols, the only
>>>>thing I
>>>>can think of is setting the timeout to the largest integer like that. 
>>>>Maybe
>>>>you could try a different large integer?
>>>>
>>>>These are what you should be using:
>>>>WDEN = BIT(0) = 0x00000001
>>>>WDRESET = BIT(1) = 0x00000002
>>>>WDMOD  = (uint8_t *)(0xE0000000)
>>>>WDTC      = (uint32_t *)(0xE0000004)
>>>>WDFEED = (uint8_t *)(0xE0000008)
>>>>        
>>>>
>>>Jim,
>>>
>>>yes my defines are the same and yes I have tested with other values for
>>>the watchdog period. According to the manual the watchdog timer should
>>>start when the 0xaa, 0x55 sequence is written but my problems are occurs
>>>as soon as I write to the WDMOD register.
>>>
>>>What situations can prevent the bootloader from working after a reset?
>>>
>>>/Ake
>>>
>>>      
>>>
>>>>----------------------------------------------------------
>>>>Jim Parziale
>>>>Email: nuncio.bitis@...
>>>>Malden, MA
>>>>----------------------------------------------------------
>>>>
>>>>On 12/6/05, Ake Hedman, eurosource <akhe@...> wrote:
>>>>        
>>>>
>>>>> Hi all.
>>>>>
>>>>>I am trying to enable the watchdog but the result is a total hang 
>>>>>          
>>>>>
>>>of the
>>>      
>>>
>>>>>board. Not even the bootloader is possible to reach after the 
>>>>>          
>>>>>
>>>crash and
>>>      
>>>
>>>>>I have to reapply power with P0.14 low to get access to the botloader
>>>>>again. Reset is not enough.
>>>>>
>>>>>The code to initialize the watchdog is
>>>>>
>>>>>    // initialize the watchdog timer
>>>>>    WDTC = 0xffffffff; // 15000000;                        // One 
>>>>>          
>>>>>
>>>second
>>>      
>>>
>>>>>= 15000000
>>>>>    WDMOD = WDEN | WDRESET;                    // Activate watchdog
>>>>>    WDFEED = 0xAA; WDFEED = 0x55;
>>>>>
>>>>>I must have misunderstood the WD functionality. What am I doing wrong?
>>>>>In the above code the watchdog should not trigger until 5 minutes
>>>>>elapsed so even if a vector should be wrong the code that follow 
>>>>>          
>>>>>
>>>should
>>>      
>>>
>>>>>run for a while but as soon as I write to the WDMOD register I get a
>>>>>          
>>>>>
>>>>hang.
>>>>        
>>>>
>>>>>/Ake
>>>>>
>>>>>--
>>>>>---
>>>>>Ake Hedman (YAP - Yet Another Programmer)
>>>>>eurosource, Brattbergav\ufffdgen 17, 820 50 LOS, Sweden
>>>>>Phone: (46) 657 413430 Cellular: (46) 73 84 84 102
>>>>>Company home: http://www.eurosource.se
>>>>>Kryddor/Te/Kaffe: http://www.brattberg.com
>>>>>Personal homepage: http://www.eurosource.se/akhe
>>>>>Automated home: http://www.vscp.org
>>>>>
>>>>>
>>>>>          
>>>>>
>>>>[Non-text portions of this message have been removed]
>>>>
>>>>
>>>>------------------------------------------------------------------------
>>>>YAHOO! GROUPS LINKS
>>>>
>>>>    *  Visit your group "lpc2000
>>>>      <http://groups.yahoo.com/group/lpc2000>" on the web.
>>>>      
>>>>    *  To unsubscribe from this group, send an email to:
>>>>       lpc2000-unsubscribe@yahoogroups.com
>>>>      <mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
>>>>      
>>>>    *  Your use of Yahoo! Groups is subject to the Yahoo! Terms of
>>>>      Service <http://docs.yahoo.com/info/terms/>.
>>>>
>>>>
>>>>------------------------------------------------------------------------
>>>>
>>>>        
>>>>
>>>-- 
>>>---
>>>Ake Hedman (YAP - Yet Another Programmer)
>>>eurosource, Brattbergavägen 17, 820 50 LOS, Sweden
>>>Phone: (46) 657 413430 Cellular: (46) 73 84 84 102
>>>Company home: http://www.eurosource.se     
>>>Kryddor/Te/Kaffe: http://www.brattberg.com
>>>Personal homepage: http://www.eurosource.se/akhe
>>>Automated home: http://www.vscp.org
>>>
>>>
>>>
>>>[Non-text portions of this message have been removed]
>>>
>>>
>>>
>>>SPONSORED LINKS
>>>Microprocessor 
>>><http://groups.yahoo.com/gads?t=ms&k=Microprocessor&w1=Microprocessor&w2=Microcontrollers&w3=Pic+microcontrollers&w4=8051+microprocessor&c=4&s=93&.sig=tsVC-J9hJ5qyXg0WPR0l6g> 
>>>	Microcontrollers 
>>><http://groups.yahoo.com/gads?t=ms&k=Microcontrollers&w1=Microprocessor&w2=Microcontrollers&w3=Pic+microcontrollers&w4=8051+microprocessor&c=4&s=93&.sig=DvJVNqC_pqRTm8Xq01nxwg> 
>>>	Pic microcontrollers 
>>><http://groups.yahoo.com/gads?t=ms&k=Pic+microcontrollers&w1=Microprocessor&w2=Microcontrollers&w3=Pic+microcontrollers&w4=8051+microprocessor&c=4&s=93&.sig=TpkoX4KofDJ7c6LyBvUqVQ> 
>>>
>>>8051 microprocessor 
>>><http://groups.yahoo.com/gads?t=ms&k=8051+microprocessor&w1=Microprocessor&w2=Microcontrollers&w3=Pic+microcontrollers&w4=8051+microprocessor&c=4&s=93&.sig=1Ipf1Fjfbd_HVIlekkDP-A> 
>>>
>>>
>>>
>>>------------------------------------------------------------------------
>>>YAHOO! GROUPS LINKS
>>>
>>>    *  Visit your group "lpc2000
>>>      <http://groups.yahoo.com/group/lpc2000>" on the web.
>>>       
>>>    *  To unsubscribe from this group, send an email to:
>>>       lpc2000-unsubscribe@yahoogroups.com
>>>      <mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
>>>       
>>>    *  Your use of Yahoo! Groups is subject to the Yahoo! Terms of
>>>      Service <http://docs.yahoo.com/info/terms/>.
>>>
>>>
>>>------------------------------------------------------------------------
>>>
>>>      
>>>
>
>
>  
>
>>-- 
>>---
>>Ake Hedman (YAP - Yet Another Programmer)
>>eurosource, Brattbergavägen 17, 820 50 LOS, Sweden
>>Phone: (46) 657 413430 Cellular: (46) 73 84 84 102
>>Company home: http://www.eurosource.se      
>>Kryddor/Te/Kaffe: http://www.brattberg.com
>>Personal homepage: http://www.eurosource.se/akhe
>>Automated home: http://www.vscp.org
>>    
>>
>
>
>
>  
>
>>[Non-text portions of this message have been removed]
>>    
>>
>
>
>
>
>  
>
>>Yahoo! Groups Links
>>    
>>
>
>
>
>  
>
>
>
>
>
>
>
>
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>  
>


-- 
Tom Walsh - WN3L - Embedded Systems Consultant
http://openhardware.net, http://cyberiansoftware.com
"Windows? No thanks, I have work to do..."
----------------------------------------------------

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.