PSoC timer interrupt

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
SuomyNonaPatri
Level 1
Level 1
10 sign-ins 5 questions asked 5 sign-ins

It seems to me that my timer interrupt does not work correctly. Problem is that counter inside interrupt function increments only once. Here is my code from main and timer settings.

#include <m8c.h>
#include "PSoCAPI.h"
#include <stdio.h>
#include <stdlib.h>

char theStr[] = "PSoC LCD";
static char tmp[3];
static int counter = 0;

void main(void){

    LCD_Start();
    LCD_Position(0,5);
    LCD_PrString(theStr);
    M8C_EnableGInt;
    Timer8_EnableInt();
    Timer8_Start();
    while (1);
}

#pragma interrupt_handler myTimerInt
void myTimerInt(void){
    counter ++;
    LCD_Position(1,0);
    itoa(tmp, counter, 10);
    LCD_PrString(tmp);
}
0 Likes
1 Solution
SampathS_11
Moderator
Moderator
Moderator
250 sign-ins 250 solutions authored 5 questions asked

Hello @SuomyNonaPatri ,

Your code is correct for most part, except for calling functions from inside the ISR. PSoC1 has a very small stack, and it is not recommended to call functions from inside an ISR. Moving lines 2 to 4 to the main loop would solve the issue. You can use an additional variable for a flag indicating that myTimerInt has been invoked.

I request you to refer to PSoC1 Interrupts, section "Tips and Tricks" / "Avoiding function calls in the ISR" on page 18.

Best regards,

Sampath Selvaraj

View solution in original post

0 Likes
1 Reply
SampathS_11
Moderator
Moderator
Moderator
250 sign-ins 250 solutions authored 5 questions asked

Hello @SuomyNonaPatri ,

Your code is correct for most part, except for calling functions from inside the ISR. PSoC1 has a very small stack, and it is not recommended to call functions from inside an ISR. Moving lines 2 to 4 to the main loop would solve the issue. You can use an additional variable for a flag indicating that myTimerInt has been invoked.

I request you to refer to PSoC1 Interrupts, section "Tips and Tricks" / "Avoiding function calls in the ISR" on page 18.

Best regards,

Sampath Selvaraj

0 Likes