Bonjour tout le monde
Voila je vous expose mon soucis :
Je doit tout d'abord généré un signal avec un nombre d'impulsion de 12. Et ensuite tenir un temps de pause de 18. La période du signal est a la fréquence de 30Hz. (pour la photo les valeur sont fausse, mais la forme du signal est bonne)
Je vous montre pour commencé mon programme qui ne constitue seulement un signal carré.
Je ne sais pas comme faire pour marqué ce temps d’arrêt :
Le programme :
Ha oui, je suis sous language C et utilise le µc ATTINY2313.Code:***************************************************** This program was produced by the CodeWizardAVR V2.05.9 Evaluation Automatic Program Generator © Copyright 1998-2012 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 02/04/2015 Author : Company : Comments: Chip type : ATtiny2313 AVR Core Clock frequency: 8,000000 MHz Memory model : Tiny External RAM size : 0 Data Stack size : 32 *****************************************************/ #include <tiny2313.h> // La variable periode représente la période du signal produit // en nombre de cycles de l'horloge du timer 0 (fréquence 1kHz) unsigned int periode = 124; // pour 1ms // Réponse à l'interruption provoquée par une comparaison réussie entre // le timer0 TCNT0 et le registre de comparaison OCR0A // Ce programme prépare l'instant de la prochaine inaerruption interrupt [TIM0_COMPA] void timer0_compa_isr(void) { OCR0A = OCR0A+ (periode / 2) ; // prochaine interruption dans 500µs } void main(void) { // Declare your local variables here // Configuration de PB2 en sortie DDRB=0x04; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 125,000 kHz // Mode: Normal top=0xFF // OC0A output: Toggle on compare match // OC0B output: Disconnected TCCR0A=(0<<COM0A1) | (1<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x3E; OCR0B=0x00; // Autoriser l'interruption par OCF0A TIMSK=(0<<TOIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<ICIE1) | (0<<OCIE0B) | (0<<TOIE0) | (1<<OCIE0A); // Autoriser les interruptions #asm("sei") while (1) { // Place your code here } }
Si vous avez la moindre question je suis la !
Et merci d'avance pour votre aide.
-----