- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello Everyone,
I hav configured two gpio pins from Psoc3 one for Reset and another for Power On likewise in the below attached i wrote my simple main inorder to reset the logic actually my device will turn on only if the Reset pin held low for few seconds and then go back to high so inorder to achieve this logic i have intially set the high for RESET pin and then it will be high for few seconds then it should go (RESET pin) to logic low for 2 seconds after that it should go again logic high
so finally which brings hte logic of reset the device and it will restart again but my problem is above logic is not working as expected coudl anyone please suggest me what mistake did i made in the below code or please suggest me some alternative ways to implement the logic in PSOC3
int main()
{
Switch_int_Start();
isr_100ms_Start();
CyGlobalIntEnable;
RESET_Write(1);
PWR_ON_Write(0);
Enable_3V8_Write(0);
CyDelay(5000);
RESET_Write(0);
CyDelay(2000);
RESET_Write(1);
}
Any help would be greatly aprreciated
Thank you
prabhu
Solved! Go to Solution.
- Labels:
-
PSoC 3
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Revise your interrupt handlers. Have a look into the "System Reference Guide" (from Creeator -> Help) concerning CY_ISR snd CY_ISR_PROTO. Additionally use the StartEx() API for your interrupts, This prevents loss of code in the case when the generated files get corrupted, you can now put the interrupt handlers into your own code.
PSoC3 is a bit old-fashioned and so there is a warning you get. Reduce the code to just set a flag (declared as volatile uint8) in your main() check for the flag, when set act accordingly and reset the flag again.
Again: your program runs 7 seconds until it reaches the line
GSM_RESET_Write(1);
and then? main() ends here and the program returns. Returns to where??? Like a hardware reset the PSoC gets initialized anew and starts over. Every PSoC example (have a look at some) has got an infinite loop usually written as for(;;) where in between the job is performed.
Bob
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The infinite loop is missing that repeats the core of your project. Instead you return from main which will initialize the project over and over again. Next time please post your complete project, so that we all can have a look at all of your settings. To do so, use
Creator->File->Create Workspace Bundle (minimal)
and attach the resulting file.
Bob
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Revise your interrupt handlers. Have a look into the "System Reference Guide" (from Creeator -> Help) concerning CY_ISR snd CY_ISR_PROTO. Additionally use the StartEx() API for your interrupts, This prevents loss of code in the case when the generated files get corrupted, you can now put the interrupt handlers into your own code.
PSoC3 is a bit old-fashioned and so there is a warning you get. Reduce the code to just set a flag (declared as volatile uint8) in your main() check for the flag, when set act accordingly and reset the flag again.
Again: your program runs 7 seconds until it reaches the line
GSM_RESET_Write(1);
and then? main() ends here and the program returns. Returns to where??? Like a hardware reset the PSoC gets initialized anew and starts over. Every PSoC example (have a look at some) has got an infinite loop usually written as for(;;) where in between the job is performed.
Bob