EmbeddedRelated.com
Forums

How to do a real reset ?

Started by crandel_z October 27, 2009
Hi, I write a program that allow to update the flash program. After that I need to do a reset.

I try to use watchdog and to call to 0x3100 to do the reset. But they not do a real reset, they do like a restart. Some registers are not initialized.

There are another way to do a reset ?

Thanks

Crandel

pd: I use MSP430F2618

Beginning Microcontrollers with the MSP430

I'm familiar with the older parts in the line, but I think you are expecting too much from a reset. The registers are not supposed to be initialized by a reset. They may come up in a certain way after a powerup, but it's not guaranteed. They are random.

Lloyd

--- In m..., "crandel_z" wrote:
>
> Hi, I write a program that allow to update the flash program. After that I need to do a reset.
>
> I try to use watchdog and to call to 0x3100 to do the reset. But they not do a real reset, they do like a restart. Some registers are not initialized.
>
> There are another way to do a reset ?
>
> Thanks
>
> Crandel
>
> pd: I use MSP430F2618
>

not necessarily true.. a POR sets many registers to s specific value.. there are different types of restes.. You have to look at the family guides to see what type of reset causes what action to be taken..

--- On Tue, 10/27/09, lslonim2 wrote:
From: lslonim2
Subject: [msp430] Re: How to do a real reset ?
To: m...
Date: Tuesday, October 27, 2009, 7:26 AM


I'm familiar with the older parts in the line, but I think you are expecting too much from a reset. The registers are not supposed to be initialized by a reset. They may come up in a certain way after a powerup, but it's not guaranteed. They are random.

Lloyd

--- In msp430@yahoogroups. com, "crandel_z" wrote:
>
> Hi, I write a program that allow to update the flash program. After that I need to do a reset.
>
> I try to use watchdog and to call to 0x3100 to do the reset. But they not do a real reset, they do like a restart. Some registers are not initialized.
>
> There are another way to do a reset ?
>
> Thanks
>
> Crandel
>
> pd: I use MSP430F2618
>



My problem is that a update the firmware included the interrupt vector.
When I do reset. The interrupts keep jumping to the old values, until I unplug/plug the my card.

Crandel

--- In m..., "lslonim2" wrote:
>
> I'm familiar with the older parts in the line, but I think you are expecting too much from a reset. The registers are not supposed to be initialized by a reset. They may come up in a certain way after a powerup, but it's not guaranteed. They are random.
>
> Lloyd
>
> --- In m..., "crandel_z" wrote:
> >
> > Hi, I write a program that allow to update the flash program. After that I need to do a reset.
> >
> > I try to use watchdog and to call to 0x3100 to do the reset. But they not do a real reset, they do like a restart. Some registers are not initialized.
> >
> > There are another way to do a reset ?
> >
> > Thanks
> >
> > Crandel
> >
> > pd: I use MSP430F2618
>

That should not be.. the vectors are fetched from flash memory... I have done this myself on several projects and have never had an issue with the vectors.. if you are vectoring the flash vectors to RAM through a routine that checks the validity, then thats anotehr issue

--- On Tue, 10/27/09, crandel_z wrote:
From: crandel_z
Subject: [msp430] Re: How to do a real reset ?
To: m...
Date: Tuesday, October 27, 2009, 7:56 AM


My problem is that a update the firmware included the interrupt vector.
When I do reset. The interrupts keep jumping to the old values, until I unplug/plug the my card.

Crandel

--- In msp430@yahoogroups. com, "lslonim2" wrote:
>
> I'm familiar with the older parts in the line, but I think you are expecting too much from a reset. The registers are not supposed to be initialized by a reset. They may come up in a certain way after a powerup, but it's not guaranteed. They are random.
>
> Lloyd
>
> --- In msp430@yahoogroups. com, "crandel_z" wrote:
> >
> > Hi, I write a program that allow to update the flash program. After that I need to do a reset.
> >
> > I try to use watchdog and to call to 0x3100 to do the reset. But they not do a real reset, they do like a restart. Some registers are not initialized.
> >
> > There are another way to do a reset ?
> >
> > Thanks
> >
> > Crandel
> >
> > pd: I use MSP430F2618
>



I think I understood the problem.

When I re-enable the interrupts are not jumping to old addresses. The not used interrupts (in the new firmware) are jumping to 0xFFFF.

Crandel

--- In m..., Joe Radomski wrote:
>
> That should not be.. the vectors are fetched from flash memory... I have done this myself on several projects and have never had an issue with the vectors.. if you are vectoring the flash vectors to RAM through a routine that checks the validity, then thats anotehr issue
>
>
>
> --- On Tue, 10/27/09, crandel_z wrote:
>
>
> From: crandel_z
> Subject: [msp430] Re: How to do a real reset ?
> To: m...
> Date: Tuesday, October 27, 2009, 7:56 AM
>
>
>
>
>
>
> My problem is that a update the firmware included the interrupt vector.
> When I do reset. The interrupts keep jumping to the old values, until I unplug/plug the my card.
>
> Crandel
>
> --- In msp430@yahoogroups. com, "lslonim2" wrote:
> >
> > I'm familiar with the older parts in the line, but I think you are expecting too much from a reset. The registers are not supposed to be initialized by a reset. They may come up in a certain way after a powerup, but it's not guaranteed. They are random.
> >
> > Lloyd
> >
> > --- In msp430@yahoogroups. com, "crandel_z" wrote:
> > >
> > > Hi, I write a program that allow to update the flash program. After that I need to do a reset.
> > >
> > > I try to use watchdog and to call to 0x3100 to do the reset. But they not do a real reset, they do like a restart. Some registers are not initialized.
> > >
> > > There are another way to do a reset ?
> > >
> > > Thanks
> > >
> > > Crandel
> > >
> > > pd: I use MSP430F2618
> > >
> >
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

Lloyd,
> The registers are not supposed to be initialized by a reset. They
> may come up in a certain way after a powerup, but it's not
> guaranteed. They are random.
Where do you get that information from? You coudn't be any wronger. Registers are initialized by a POR; what is not initialized is the contents of RAM.

> > I try to use watchdog and to call to 0x3100 to do the reset. But
> > they not do a real reset, they do like a restart. Some registers
> > are not initialized.
There are 2 type of signals that cause registers to set to a predefined value: POR (Power On Reset) and PUC (Power Up Clear).
A POR causes a PUC, but not the other way around. As far as I know, the only thing you can force by software is a PUC, by writing an invalid password to the Flash controler or the watchdog (there is a 3rd that I don't remember). But a PUC doesn't reset many things, like for example the interrupt enable flags. So if you plan to force a PUC, be sure that your initialization routines don't assume some bits of the registers are 0s or 1's (like interrupt enable bits), but specifically set them to the value you need them to be.

Regards,
Michael K.

--- In m..., "lslonim2" wrote:
>
> I'm familiar with the older parts in the line, but I think you are expecting too much from a reset. The registers are not supposed to be initialized by a reset. They may come up in a certain way after a powerup, but it's not guaranteed. They are random.
>
> Lloyd
>
> --- In m..., "crandel_z" wrote:
> >
> > Hi, I write a program that allow to update the flash program. After that I need to do a reset.
> >
> > I try to use watchdog and to call to 0x3100 to do the reset. But they not do a real reset, they do like a restart. Some registers are not initialized.
> >
> > There are another way to do a reset ?
> >
> > Thanks
> >
> > Crandel
> >
> > pd: I use MSP430F2618
>

any interrupt bits that were set prior to the "reset" remain untouched so if you enable global interrupts it will jump to FFFF if an interrupt routine is no longer there..

not having a vector is BAD practice.. you should make a spurious interrupt handler and point all non used interrupts to this routine so you can determine the soource of the trouble.

--- On Tue, 10/27/09, crandel_z wrote:
From: crandel_z
Subject: [msp430] Re: How to do a real reset ?
To: m...
Date: Tuesday, October 27, 2009, 9:44 AM


I think I understood the problem.

When I re-enable the interrupts are not jumping to old addresses. The not used interrupts (in the new firmware) are jumping to 0xFFFF.

Crandel

--- In msp430@yahoogroups. com, Joe Radomski wrote:
>
> That should not be.. the vectors are fetched from flash memory... I have done this myself on several projects and have never had an issue with the vectors.. if you are vectoring the flash vectors to RAM through a routine that checks the validity, then thats anotehr issue
>
>
>
> --- On Tue, 10/27/09, crandel_z wrote:
>
>
> From: crandel_z
> Subject: [msp430] Re: How to do a real reset ?
> To: msp430@yahoogroups. com
> Date: Tuesday, October 27, 2009, 7:56 AM
>
>
>
>
>
>
> My problem is that a update the firmware included the interrupt vector.
> When I do reset. The interrupts keep jumping to the old values, until I unplug/plug the my card.
>
> Crandel
>
> --- In msp430@yahoogroups. com, "lslonim2" wrote:
> >
> > I'm familiar with the older parts in the line, but I think you are expecting too much from a reset. The registers are not supposed to be initialized by a reset. They may come up in a certain way after a powerup, but it's not guaranteed. They are random.
> >
> > Lloyd
> >
> > --- In msp430@yahoogroups. com, "crandel_z" wrote:
> > >
> > > Hi, I write a program that allow to update the flash program. After that I need to do a reset.
> > >
> > > I try to use watchdog and to call to 0x3100 to do the reset. But they not do a real reset, they do like a restart. Some registers are not initialized.
> > >
> > > There are another way to do a reset ?
> > >
> > > Thanks
> > >
> > > Crandel
> > >
> > > pd: I use MSP430F2618
> > >
> >
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>



To All:

Isn't this akin to the classic WDOG problem?

You need external circuitry - such as an external WDOG - that fully asserts
/RST - this is the only way to fully guarantee the part is reset correctly -
basically the same as the classic WDOG problem.

Regards,
John W.

On Tue, Oct 27, 2009 at 9:09 AM, Joe Radomski wrote:

> any interrupt bits that were set prior to the "reset" remain untouched so
> if you enable global interrupts it will jump to FFFF if an interrupt routine
> is no longer there..
>
> not having a vector is BAD practice.. you should make a spurious interrupt
> handler and point all non used interrupts to this routine so you can
> determine the soource of the trouble.
> --- On Tue, 10/27/09, crandel_z >
> wrote:
>
> From: crandel_z > Subject: [msp430] Re: How to do a real reset ?
> To: m...
> Date: Tuesday, October 27, 2009, 9:44 AM
> I think I understood the problem.
>
> When I re-enable the interrupts are not jumping to old addresses. The not
> used interrupts (in the new firmware) are jumping to 0xFFFF.
>
> Crandel
>
> --- In msp430@yahoogroups. com, Joe Radomski wrote:
> >
> > That should not be.. the vectors are fetched from flash memory... I have
> done this myself on several projects and have never had an issue with the
> vectors.. if you are vectoring the flash vectors to RAM through a routine
> that checks the validity, then thats anotehr issue
> >
> >
> >
> > --- On Tue, 10/27/09, crandel_z wrote:
> >
> >
> > From: crandel_z
> > Subject: [msp430] Re: How to do a real reset ?
> > To: msp430@yahoogroups. com
> > Date: Tuesday, October 27, 2009, 7:56 AM
> >
> >
> >
> >
> >
> >
> > My problem is that a update the firmware included the interrupt vector.
> > When I do reset. The interrupts keep jumping to the old values, until I
> unplug/plug the my card.
> >
> > Crandel
> >
> > --- In msp430@yahoogroups. com, "lslonim2" wrote:
> > >
> > > I'm familiar with the older parts in the line, but I think you are
> expecting too much from a reset. The registers are not supposed to be
> initialized by a reset. They may come up in a certain way after a powerup,
> but it's not guaranteed. They are random.
> > >
> > > Lloyd
> > >
> > > --- In msp430@yahoogroups. com, "crandel_z" wrote:
> > > >
> > > > Hi, I write a program that allow to update the flash program. After
> that I need to do a reset.
> > > >
> > > > I try to use watchdog and to call to 0x3100 to do the reset. But they
> not do a real reset, they do like a restart. Some registers are not
> initialized.
> > > >
> > > > There are another way to do a reset ?
> > > >
> > > > Thanks
> > > >
> > > > Crandel
> > > >
> > > > pd: I use MSP430F2618
> > > >
> > >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
>
>


What is a "real reset"?
What reset is not real?

--- In m..., John Westmoreland wrote:
>
> To All:
>
> Isn't this akin to the classic WDOG problem?
>
> You need external circuitry - such as an external WDOG - that fully asserts
> /RST - this is the only way to fully guarantee the part is reset correctly -
> basically the same as the classic WDOG problem.
>
> Regards,
> John W.
>
> On Tue, Oct 27, 2009 at 9:09 AM, Joe Radomski wrote:
>
> >
> >
> > any interrupt bits that were set prior to the "reset" remain untouched so
> > if you enable global interrupts it will jump to FFFF if an interrupt routine
> > is no longer there..
> >
> > not having a vector is BAD practice.. you should make a spurious interrupt
> > handler and point all non used interrupts to this routine so you can
> > determine the soource of the trouble.
> >
> >
> > --- On Tue, 10/27/09, crandel_z >
> > wrote:
> >
> > From: crandel_z >
> >
> > Subject: [msp430] Re: How to do a real reset ?
> > To: m...
> > Date: Tuesday, October 27, 2009, 9:44 AM
> >
> >
> >
> >
> > I think I understood the problem.
> >
> > When I re-enable the interrupts are not jumping to old addresses. The not
> > used interrupts (in the new firmware) are jumping to 0xFFFF.
> >
> > Crandel
> >
> > --- In msp430@yahoogroups. com, Joe Radomski wrote:
> > >
> > > That should not be.. the vectors are fetched from flash memory... I have
> > done this myself on several projects and have never had an issue with the
> > vectors.. if you are vectoring the flash vectors to RAM through a routine
> > that checks the validity, then thats anotehr issue
> > >
> > >
> > >
> > > --- On Tue, 10/27/09, crandel_z wrote:
> > >
> > >
> > > From: crandel_z
> > > Subject: [msp430] Re: How to do a real reset ?
> > > To: msp430@yahoogroups. com
> > > Date: Tuesday, October 27, 2009, 7:56 AM
> > >
> > >
> > >
> > >
> > >
> > >
> > > My problem is that a update the firmware included the interrupt vector.
> > > When I do reset. The interrupts keep jumping to the old values, until I
> > unplug/plug the my card.
> > >
> > > Crandel
> > >
> > > --- In msp430@yahoogroups. com, "lslonim2" wrote:
> > > >
> > > > I'm familiar with the older parts in the line, but I think you are
> > expecting too much from a reset. The registers are not supposed to be
> > initialized by a reset. They may come up in a certain way after a powerup,
> > but it's not guaranteed. They are random.
> > > >
> > > > Lloyd
> > > >
> > > > --- In msp430@yahoogroups. com, "crandel_z" wrote:
> > > > >
> > > > > Hi, I write a program that allow to update the flash program. After
> > that I need to do a reset.
> > > > >
> > > > > I try to use watchdog and to call to 0x3100 to do the reset. But they
> > not do a real reset, they do like a restart. Some registers are not
> > initialized.
> > > > >
> > > > > There are another way to do a reset ?
> > > > >
> > > > > Thanks
> > > > >
> > > > > Crandel
> > > > >
> > > > > pd: I use MSP430F2618
> > > > >
> > > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
> >
> >
>
>