« SE4Binome2024-7 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
(Page vide créée)
 
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
<nowiki>#</nowiki>include <avr/io.h>


<nowiki>#</nowiki>include <avr/interrupt.h>
<nowiki>#</nowiki>define CTC1            WGM12           // Meilleur nom pour le bit
<nowiki>#</nowiki>define PERIODE         1000
void init_minuteur(int diviseur,long periode){
TCCR1A=0;               // Le mode choisi n'utilise pas ce registre
TCCR1B=(1<<CTC1);       // Réinitialisation du minuteur sur expiration
switch(diviseur){
  case    8: TCCR1B |= (1<<CS11); break;
  case   64: TCCR1B |= (1<<CS11 | 11<<CS10); break;
  case  256: TCCR1B |= (1<<CS12); break;
  case 1024: TCCR1B |= (1<<CS12 | 1<<CS10); break;
  }
OCR1A=F_CPU/1000*periode/diviseur;
TCNT1=0;
TIMSK1=(1<<OCIE1A);
}
ISR(TIMER1_COMPA_vect){
}
int main(void){
DDRC &= 0b000000001;              // Chenillard sur 4 LED
PORTB ^= ~0b00000001;            // LED éteintes
init_minuteur(256,PERIODE);
sei();
while(1);
}

Version du 2 octobre 2024 à 13:31

#include <avr/io.h>

#include <avr/interrupt.h>

#define CTC1            WGM12           // Meilleur nom pour le bit

#define PERIODE         1000

void init_minuteur(int diviseur,long periode){

TCCR1A=0;               // Le mode choisi n'utilise pas ce registre

TCCR1B=(1<<CTC1);       // Réinitialisation du minuteur sur expiration

switch(diviseur){

  case    8: TCCR1B |= (1<<CS11); break;

  case   64: TCCR1B |= (1<<CS11 | 11<<CS10); break;

  case  256: TCCR1B |= (1<<CS12); break;

  case 1024: TCCR1B |= (1<<CS12 | 1<<CS10); break;

  }

OCR1A=F_CPU/1000*periode/diviseur;

TCNT1=0;

TIMSK1=(1<<OCIE1A);

}

ISR(TIMER1_COMPA_vect){

}

int main(void){

DDRC &= 0b000000001;              // Chenillard sur 4 LED

PORTB ^= ~0b00000001;            // LED éteintes

init_minuteur(256,PERIODE);

sei();

while(1);

}