Llll
Action à réaliser : effectuer l'allumage puis l'extinction de 8 led toutes les secondes. Utilisation du codewizardAVR
Code source :Le timer va évoluer à partir de l'horloge interne
Clock value : La fréquence de l'horloge interne sera de 7,813 Khz (c'est une fraction de la fréquence du quartz obtenue par division , d'autres valeurs sont possibles)
Mode : Normaltop=FFFFh la valeur du timer évoluera jusqu'à la valeur maximum de FFFF en hexadécimal (65535 en décimal)
Value : la valeur de départ du timer sera E17A. Donc le timer évoluera de E17A à FFFF soit de 1E85 car 1E85= FFFF-E17A
Puisque 1E85h = 7813 en décimal le temps mis pour évoluer sera de 7813 période d'horloge à 7813 Hz donc 1 s.
Interrupt on : timer1 Overflow/ chaque fois que la valeur du timer sera dépassée ( valeur max+1 c'est-à-dire FFF+1) le microcontroleur générera une interruption (un signal particulier pour signaler le dépassement). Ce signal pourra être utilisé pour activé une procédure ( ou sous programme particulier appelé procédure d'interruption.
Très important : cette procédure d'interruption est prioritaire ("elle prendra la main") et sera activée indépendamment de la procédure principale. Une fois exécutée la procédure d'interruption
Cocher interrupt on
//Chip type : ATmega8535
//AVR Core Clock frequency: 8,000000 MHz
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 7,813 kHz // Mode: Normal top=FFFFh
#include char compte=0;
// Timer1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer1 value TCNT1H=0xE1; //ou TCNT1H= 0xE17A >> 8; TCNT1L=0x7A; //ou TCNT1L= 0xE17A & 0xff;
compte=compte+1;
}
void main(void)
{
#asm("sei")//langage assembleur autorisant les interruptions SEI=Set global Interrupt Enable while (1) {