Bonjour,

J'ai fais un petit programme qui fait clignoter une LED sur la PIND.5 d'un ATmega.

La LED clignote mais à chaque démarrage il lui faut au moins 10 secondes pour démarrer !!
Quand je parle de démarrage c'est soit une mise sous tension soit un reset.

Donc pour moi cela vient de l'initialisation.

Si vous pouvez me dire ce que j'ai fais comme erreur ...

Dans la boucle du Timer on peu aussi mettre OCR1A = OCR1A + 1000 et en virant le TCNT1 = 0. J'ai juste voulu essayer cette méthode et de toute façon les 2 mettent du temps é se lancer.

Voici mon code :

Code:
/*******************************************************
CLIGNOTTANT LED sur le PORTD.5 avec le TIMER 1
*******************************************************/

#include <mega8535.h>




// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
TCNT1 = 0;
OCR1A = 1000;
}




void main(void)
{
//Initialisation des PORTS en entrées / sorties

PORTA=0xFF;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0xFF;





// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 7,813 kHz
// Mode: Normal top=FFFFh
// OC1A output: Toggle
// OC1B output: Discon.
// Noise Canceler: On
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x40;
TCCR1B=0x05;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;


// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x10;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here

      };
}
MERCI !