Merci et bravo à vous qui n'utilisez pas IE !

Votre navigateur est :

Votre adresse IP est 54.81.139.56

Programmation des µC ATMEL

Exemple

Interruption externe: Test de INT0 en mode front montant

#include <mega16.h>
interrupt [EXT_INT0] void ext_int0_isr(void)
{
  // Code d'interruption ici
  PORTA.0=!PORT A.0; //inverse l'état de PA0
}

void main(void)
{
  DDRA=0x01; // configuration de PORTA.0 en sortie
  MCUCR=0x03; //initialisation de INT0 en mode front montant
  MCUCSR=0x00; //sert uniquement pour INT2
  GICR|=0x40; //active INT0
  GIFR=0x40; //active l'interruption INT0
  #asm("sei") //active les interruptions

  while (1);
}
Pour tester ou simuler cet exemple, il faut appliquer un signal sur la patte n°16 (PD2) et visualiser le résultat sur la patte n°40 (PA0) du µC.

Un changement d'état de PA0 se produira à chaque front montant de INT0. On remarquera également que même si la patte correspondant à INT0 (c'est-à-dire PD2) était configurée en sortie l'interruption se produirait aussi, il est donc possible de forcer une interruption en provoquant logiciellement un changement d'état de la sortie.

L'instruction #asm permet d'introduire du code en assembleur dans le programme.
#asm("sei") permet d'activer l'ensemble des interruptions.
#asm("cli") permet de désactiver l'ensemble des interruptions.

A noter qu'il est nécessaire d'introduire une boucle infinie (while(1);) pour que le programme puisse fonctionner.


Compteur/timer: Configuration du Timer2 en mode PWM, Phase correct

#include <mega16.h>

void main(void)
{
  DDRD=0x80; //on configure PIND.7 en sortie
  ASSR=0x00;
  TCCR2=0x64;
  TCNT2=0x00;
  OCR2=200; //valeur de la PWM, ici 200/255=78.5%
  
  while (1);
}
Ce programme permet par exemple de gérer la vitesse des moteurs. On récupère le signal PWM sur la sortie prévue à cet effet, c'est-à-dire OC2 (PD7, pin 21).

On peut également utiliser les interruptions en mode comparaison entre TCNTx et OCRx (compare match mode) ou en mode débordement (overflow)
foufa
02-10-2013 à 17h48
Abouelmajde BOUAYAD
30-12-2012 à 21h26
Reda
07-10-2012 à 14h23
Reda
07-10-2012 à 14h23
Différent
02-05-2011 à 11h32
Pseudo :


Email : facultatif, n'apparaît pas sur le site


Votre site web : facultatif
http://

Liste de correspondance des smileys
:) ^^ :,
:S ;) :-o
:( :@ (!)
Votre commentaire ici:

Anti-spam: merci de calculer cette petite addition facile avant de valider
votre commentaire! (Ecrire la réponse en chiffres svp)

dix plus dix est égal à
Balises HTML autorisées : <b></b> (gras)
<u></u> (souligné)
<i></i> (italique)