Bonsoir à tous,
Je suis débutant et souhaite programmer une interruption sur front descendant via INT0 (PD2) pour faire fonctionner une maquette mais je ne sais pas du tout comment m'y prendre malgrès avoir longuement cherché des exemples détaillés sur internet.
Il me semble qu'il faut utliser un vecteur d'interruption ainsi que des fonctions spécifiques afin d'activer l'interruption et la définir sur front descendant ; malheureusement je n'y comprends pas grand chose un exemple (très) détaillé serait donc le bienvenu.
En vous remerciant d'avance
PS : J'utilise un µC atmega 8535
Interruptions sur code vision avr
Modérateur : Modérateur
tu peu utilser le wizard de code vision cela aide pas mal pour ce type de fonction
ensuite il faut determiner le type de declenchement sur un état ou sur un front
voici un exemple de code pour l ATmega 8535 (INT0 sur front descendant)
#include <mega8535.h>
#define LED1 PORTB.0
#include <delay.h>
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
LED1=!LED1;
}
// Declare your global variables here
void main(void)
{
PORTB=0x00;
DDRB=0xFF;
PORTD=0x00;
DDRD=0x00;
// External Interrupt(s) initialization
GICR|=0xE0;
MCUCR=0x0A;
MCUCSR=0x00;
GIFR=0xE0;
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
};
}
ensuite il faut determiner le type de declenchement sur un état ou sur un front
voici un exemple de code pour l ATmega 8535 (INT0 sur front descendant)
#include <mega8535.h>
#define LED1 PORTB.0
#include <delay.h>
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
LED1=!LED1;
}
// Declare your global variables here
void main(void)
{
PORTB=0x00;
DDRB=0xFF;
PORTD=0x00;
DDRD=0x00;
// External Interrupt(s) initialization
GICR|=0xE0;
MCUCR=0x0A;
MCUCSR=0x00;
GIFR=0xE0;
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
};
}