Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

seperate Software Stack in ISR with C18

Status
Not open for further replies.

fatihvelid

Newbie level 4
Newbie level 4
Joined
Sep 18, 2006
Messages
5
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,318
Hi,
How can I can seperate ISR Software Stack from Main software stack? I must call a lot of function. But system is crashing. And it run wrong.

I have used to directive of #pragma interrupt HighISR and #pragma interruptlow LowISR. But so it's still wrong.

Device is 18F8722
compiler: C18

Urgently, Please help me

Added after 3 hours 6 minutes:

I am trying multitasking. Firmware have very growed. so I cannot redesign firmware.

But If I solve seperating software stack problem, Firmware developing will completed.

I saw methods in some applications note. It suggest using pragma directive.

But I dont understand thing that when I use nested functions, How can I it?

must I use "#pragma tmpdata shared_tmpdata" for nested functions.

For Example;

int foo1(int a, int b)
{
return a+b;
}

int foo2(int a, int b)
{
return a*b;
}

int foo3(int a, int b)
{
return foo2(a,b)*(a/b);
}


#pragma tmpdata shared_tmpdata
int foo (int a, int b, int c, int d)
{
int x = (a * b) + (c * d);

foo3(foo1(a,b),x);
return x;
}
#pragma tmpdata
#pragma interruptlow low_isr nosave=section (“.tmpdata”)
void low_isr (void)
{
b = foo (z, y, x, w);
}


is that wrong?
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top