??? 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. |
Topic | Author | Date |
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 |