R: R: hc12,can i return from interrupt and jump elsewhere?




Tim Wescott <tim@xxxxxxxxxxxxxxxx> wrote in message
ZK6dnYnENpd3u2LbnZ2dnUVZ_hzinZ2d@xxxxxxxxxxxxxxx
On Sat, 29 Sep 2007 23:05:38 +0200, blisca wrote:

"blisca" vrote
a function myfunc() is runnin,and an external events calls an
interrupt
service routine,is it possible,once the interrupt did its job,to
avoid
to
continue with my func()
from the point where it was interruptd,and going back to main()
instead?It
is not important if i have to run another couple of line in
myfunc().Important is that i can go out from it soon;

Can anyone suggest me the most elegant way?
Once more forgive my English.




If all you want is to restart your code, i.e. re-enter main from the
start, then you can use a watchdog reset. Just stop toggleing your
watchdog when you get your event. The watchdog will trigger, and
restart your micro. If you want to resume a sepcific function on
reception of an interrupt event, then this is less trivial. Unless
you
want to write your own RTOS, the simplest is to use either one of the
many open source ones, or a commercial one.
http://www.freertos.org/ seem to have a port for your micro.

And if he is simple seeking to abort an operation setting a flag in the
interrupt routine and checking it in the routine you are interrupting
is
fairly straightforward.

It seems an odd requirement. To the original poster, what is the
effect
you are trying to achieve? Tell us what you are trying to do rather
than how you are proposing to do it. We might be able to suggest
better
approaches.

Robert



Ok,thanks again.
I kept my question generic just because i thought that what i'm doing
specifically is less interesting.
.I'm trying to implement an USB protocol using a 9s12
microcontroller,that i
call uC

http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=0162468636bJwn

and a PDIUSBD12,a parallel to USB chip

http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=0162468636bJwn

It is raccomended that anytime an USB device receives a bus reset it
has to
accomplish it,signalling by an interrupt to the uC,even at the price of
letting loose what is remaining of the current function.then it should
stay
in an idle loop waiting for another request.

Well ,being honest it should be better if any request could wake the uC
from
idle loop by an interrupt,then once the specific request is decoded it
has
to be accomplished,but in case of another interrupt(and it could happen)
if
this comes from a bus reset(and once more the uC has to discover it by
decoding)the current function has to be stopped.

I did the question in that way with the aim to keep it simpler,and to
learn
things step by step,and i'm aware that it should not be the best
approach
to the problem

Hoping that what i wrote about USB is correct and not
misleading(please,correct me in this likely case) i wish you a nice
Saturday
night.

Diego

Many thanks again to you all for your hints and for being interested.

I think you're confusing USB functions with microprocessor functions.
Unless _all_ you're doing is shuttling USB traffic around you don't want
to flush the whole micro's state -- you just want to flush the USB state.

Why do you talk about the entire micro's state?I dont want to do a total
reset,just like after a power on,i just want to return to the initial idle
loop
I figure that important data may be saved in global variabiles,having no
need to keep tracks of the "message queue",as windows does.
I say this keeping in mind that i'm a newbie compared to most of the people
in this newsgroup.


I'd look at how to do this gracefully. This is the sort of thing that
cries out for a state machine, one implemented in a big switch statement
and with a USB bus shutdown unconditionally forcing the machine's state to
a 'reset' state no matter what it was before.

--
Tim Wescott
Control systems and communications consulting
http://www.wescottdesign.com





.



Relevant Pages

  • Re: R: hc12,can i return from interrupt and jump elsewhere?
    ... then you can use a watchdog reset. ... reception of an interrupt event, ... .I'm trying to implement an USB protocol using a 9s12 microcontroller,that i ... It is raccomended that anytime an USB device receives a bus reset it has to ...
    (comp.arch.embedded)
  • USB Host controller on Davici TMS320DM6446
    ... Iam writing a standalone code for USB Host controller .... ... reset the HC ... Is anything else required to be initialized to get the interrupt?. ...
    (microsoft.public.windowsce.platbuilder)
  • USB Host controller interrupt problem on Davici TMS320DM6446
    ... Iam writing a standalone code for USB Host controller .... ... reset the HC ... Is anything else required to be initialized to get the interrupt?. ...
    (microsoft.public.windowsce.platbuilder)
  • next-20081125: crypto hard disk gets unaccessable
    ... ACPI: Local APIC address 0xfee00000 ... Generic Bluetooth USB driver ver 0.3 ... root hub lost power or was reset ...
    (Linux-Kernel)
  • Re: Once more VIA VT6212 USB Chip Problem
    ... I checked the interrupt init and I can see they are all set. ... I tried my image on this board and USB works fine!! ... Bus 0, Device 1, Function 0 ... is found for following PCI Device ...
    (microsoft.public.windowsce.platbuilder)