2
« en: Miércoles 5 de Diciembre de 2007, 09:14 »
Hola a todos,
Estoy intentando desarrollar una aplicacion con un micro de atmel (AT90S8515) y lo primero que queria hacer es implementar un programa tonto en C para el control de la interrupciones externas en este caso la INT0, para saber como se manejan.Pero no hay manera de que funcione.
Escribo el codigo a ver si alguno de vosotros me puede decir que no es correcto por que yo ya no lo veo.El compilador que utilizo es el ICCAVR
#include <io8515.h>
#include <macros.h>
#pragma interrupt_handler int0_externa:2 // la interrupcion 2 corresponde a la int0
//********** Delay *************************************************
void Delay(unsigned long a);
//**********Configuracion********************************************
void setup_system(void);
//-------------------------------------------------------------------------------------------
unsigned char counter=0; // variable global
void main(void)
{
setup_system(); // Configuro la interrupcion int0 y puerto C
Delay(1000);
while(1){
PORTC=(0X55+counter); // Bucle infinito
Delay(1000);
}
}
void int0_externa (void) //funcion de la interrupcion
{
counter++;
}
//------------------------------------------------------------------
void Delay (unsigned long a)
{
unsigned long b;
for(b=0;b<a;b++){}
}
//--------------------------------------------------------------------
void setup_system()
{
CLI(); // Desactivo deteccion de interruption global SREG
DDRC=0xFF;
GIMSK|=0xc0; // habilita la deteccion de la INT0
MCUCR|=0x02; // selecciona la INT0 para flanco de bajada
SEI(); //Activo deteccion de interrupcion global en SREG
}
No se si me esta fallando el software o el hardware.Por favor una mano ya me estoy volviendo un poco loco.
Gracias por adelantado