Bonjour,
voilà je me suis mis petit à petit à l'arduino mais je bute déjà sur un truc normalement simple.
Je teste un petit code qui utilise un timer pour faire un signal à fréquence variable
Voilà le code:
(les commentaires sont pas forcement correct, vu que j'ai changer souvent pour tester)Code:void setup() { // put your setup code here, to run once: pinMode(11, OUTPUT); init_timer1();//compte l'intervalle entre 2 pulses //init_timer2();//compte le nombre de pulse interrupts(); // enable all interrupts } void loop() { // put your main code here, to run repeatedly: } ISR (TIMER1_COMPA_vect) { digitalWrite(11, ! digitalRead(11)); } void init_timer1() { OCR1A = 2500; // ~10ms TCCR1A = 0; TCCR1B = 0; TCCR1B |= (1 << WGM12); TCCR1B |= (1 << CS11) | (1 << CS10); //clock div par 64 TIMSK1 |= (1 << OCIE1A); //interrupt sur OCR0A }
J'ai bien un signal carré mais j'ai beau changer OCR1A le signal change absolument pas, toujours à la même fréquence!
Bon comme je bloquais comme un con et trouvait pas ce qui foirait, j'ai essayé le même code avec avr-studio que je connais bcp mieux!
Ce code là ,très équivalent fais bien ce que je pensais,la fréquence change quand je change OCR1A.Code:#include <avr/io.h> #include <avr/pgmspace.h> #include <util/delay.h> #include <avr/interrupt.h> #define BIT_SET(a,b) ((a) |= (1<<(b))) #define BIT_CLEAR(a,b) ((a) &= ~(1<<(b))) #define BIT_FLIP(a,b) ((a) ^= (1<<(b))) #define BIT_CHECK(a,b) ((a) & (1<<(b))) void main(void) { init_timer1(); DDRB=0b0000001; sei(); while (1){ } } ISR (TIMER1_COMPA_vect){ BIT_FLIP(PORTB,0); } void init_timer1(){ OCR1A=20; // ~10ms TCCR1A = 0; TCCR1B = 0; TCCR1B|=(1<<WGM12); TCCR1B|=(1<<CS11)|(1<<CS10);//clock div par 64 TIMSK1|=(1<<OCIE1A);//interrupt sur OCR0A }
Du coup pourquoi celui version arduino ne fonctionne pas?
Sinon pour info, code arduino chargé sur un atmega328 d'un arduino nano et l'autre code chargé sur un 88 (donc µC 'identique' à part la flash normalement), je sais pas si ca rentre en compte!
Sinon j'ai essayé de trouver comment chargé le fichier hex compilé par avr-studio sur l'arduino nano mais j'ai pas vraiment trouvé comment faire. Une idée?
Merci bien
-----