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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
09/07/06 22:32
Read: times


 
#123886 - I try to explain.
Responding to: ???'s previous message
(*(void (*)())( (U8 code *)0x0000 ))(); // JMP 0x0000

0x0000 is casted to a U8 (maybe unsigned char) pointer
to code memory, then casted again to a pointer to a
function returning void. The most left * takes the
content, which is 0x0000 and the () most right is
the function call. This explanation might not be
perfect.

The example seems to be too complex, the same can
be done with

((void (code*) (void)) 0x0000)();

which I used in the past in two parts

#define RESET ((void (code*) (void)) 0x0000)

somewhere in a header file and then use it like

RESET();

which just looks nice in a C source code.

But now, something completly different. Make sure
this code it not used from inside an interrupt
function or nested interrupt function. Because this
is no real reset, from inside interrupts you must so
some RETI instructions (as many as the current nesting
level) to 'unlock' the interrupt logic.

Which is I prefer a real watchdog to do the reset.





List of 26 messages in thread
TopicAuthorDate
Soft reset in C            01/01/70 00:00      
   you can't do it with a jump anyhow            01/01/70 00:00      
      No dog            01/01/70 00:00      
      Very soft            01/01/70 00:00      
         That was for Keil            01/01/70 00:00      
         Explanation            01/01/70 00:00      
            I try to explain.            01/01/70 00:00      
         Incorrect comment            01/01/70 00:00      
            Is it a call?            01/01/70 00:00      
         Yuk            01/01/70 00:00      
            the good thing about C is...            01/01/70 00:00      
               LOL, made my day - thanks            01/01/70 00:00      
               and that's how            01/01/70 00:00      
   _asm ljmp 0x0000 _endasm;            01/01/70 00:00      
   goto in C            01/01/70 00:00      
      goto scope            01/01/70 00:00      
   slow???            01/01/70 00:00      
      Re: Slow?            01/01/70 00:00      
   The simple way to do reset in C            01/01/70 00:00      
      I don't think so...            01/01/70 00:00      
      that is NOT a \'reset\'            01/01/70 00:00      
   C wizard: Dan Saks            01/01/70 00:00      
      that is not what's tricky            01/01/70 00:00      
         Bad karma            01/01/70 00:00      
            nothing wrong with that after a hard reset            01/01/70 00:00      
   Mix Asysmbly            01/01/70 00:00      

Back to Subject List