Autor Tema: StackOverflow al usar interrupciones de TIMER en PIC18F452  (Leído 1509 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado asriel506

  • PIC10
  • *
  • Mensajes: 1
StackOverflow al usar interrupciones de TIMER en PIC18F452
« en: 09 de Julio de 2011, 16:45:28 »
Estoy programando una aplicación simple para la que necesito contadores que me hagan interrupciones a los siguientes intervalos:
-1s
-1ms
-1us

El programa debe alternar el estado de un pin cada vez que se da una interrupción del contador, pero desgraciadamente no me sale porque me está dando un overflow stack al simularlo en el Proteus.

Estoy trabajando con un cristal de 10MHz y tengo activado el PLLx4 para alcanzar una frecuencia de 40MHz.

Aquí adjunto el código, en este caso sólo estoy usando un timer por simplicidad.
Estoy trabajando en CCS

Código: [Seleccionar]
#include "main2.h"
#include <LCD.C>
#define Bobina_apertura PIN_E0

#int_TIMER0
void TIMER0_isr(){//tiempo de pulso de la bobina en us
   disable_interrupts(GLOBAL);
   if(input(Bobina_apertura))output_low(Bobina_apertura);
   else if(~input(Bobina_apertura))output_high(Bobina_apertura);
   enable_interrupts(GLOBAL);
   set_timer0(26473);
//   set_timer1(65536);
   return;
}

void main(){
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);//configuración para contar 1s
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);//configuración para contar 1us
   setup_timer_2(T2_DIV_BY_4,250,1);//configuración para contar 1ms
   setup_timer_3(T3_INTERNAL|T3_DIV_BY_8);//configuración para contar hasta 40ms
   setup_low_volt_detect(FALSE);
   setup_oscillator(OSC_NORMAL);
   set_tris_e(0x00);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   set_timer0(26473);
   //set_timer1(65536);
   output_high(Bobina_apertura);
   while(1);
}

Gracias de antemano


Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: StackOverflow al usar interrupciones de TIMER en PIC18F452
« Respuesta #1 en: 09 de Julio de 2011, 16:50:14 »
Seguro es un problema del simulador... Lo único raro que se ve es setup_oscillator(OSC_NORMAL), no debería estar si estas usando oscilador externo.


Saludos!

No contesto mensajes privados, las consultas en el foro

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: StackOverflow al usar interrupciones de TIMER en PIC18F452
« Respuesta #2 en: 11 de Julio de 2011, 12:37:44 »
En la interrupción no debes colocar el
Código: [Seleccionar]
return; el compilador lo hace solo.




 

anything