Page 1 sur 1

Compatibilité autres kit au niveau du timer d'interruption

Message non luPosté: Mer 12 Oct 2011 15:26
de jbayard
Tout d'abord bravo pour ce rotoshield, pratique (4 moteurs DC) et bien documenté.

Je suis débutant et j'accompagne mon fils dans la découverte de la robotique.
Nous avons monté ce shield sur une plateforme DFRobot 4 roues (4WD).
Jusque là, pas de problème et tout fonctionne bien (en appliquant la modif indiquée sur le forum (http://forum.snootlab.com/viewtopic.php?f=31&t=155#p536) sur l'initialisation des moteurs pour que ceux-ci tournent au même rythme).

Nous avons ensuite ajouté un kit télécommande IR ce qui a conduit a un fonctionnement erratique.
En analysant le code, nous sommes remonté jusqu'à un conflit d'interruption car les librairies du rotoshield et de pilotage IR (librairie IRremote basée sur NECIRrc) utilisent toutes les deux le timer 2 !

En bibouillant (cf. TCCR ...) les sources de la libraires IR (plus simple que celle du rotoshield), on arrive à contourner le problème.

Ensuite, en cherchant sur le web (merci google), nous avons trouvé une librairie modifiée permettant de choisir le timer à utiliser. Je vous donne l'adresse car celle-ci est très pratique : http://www.pjrc.com/teensy/arduino_libraries/IRremote.zip (et le site de présentation : http://www.pjrc.com/teensy/td_libs_IRremote.html)
Attention : le timer 2 utilise les pins 3 ou 11 alors que le timer 1 utilise les PIN 9 ou 10.

Re: Compatibilité autres kit au niveau du timer d'interrupti

Message non luPosté: Lun 7 Nov 2011 16:12
de Lionel
Bonjour,

merci pour cette information que j'avais manqué !!!

Lionel

Re: Compatibilité autres kit au niveau du timer d'interrupti

Message non luPosté: Jeu 6 Juin 2013 00:41
de Copernic
Bonsoir,
Pourriez-vous me venir en aide??? svp :-)
Pourriez-vous me dire ce que vous avez modifié pour faire cohabiter le lib IRremote et les signaux PWM pour un rotoshield?

Je tourne sous Arduino 1.04 & 1.5.2 afin de faire mes tests.
Mais dans les 2 cas j'ai un conflits.

Quand je met la libraire IR venant de: https://github.com/shirriff/Arduino-IRremote
Si j'importe les deux libs:
#include <IRremote.h> & #include <IRremoteInt.h>, j'ai une erreur de compilation:

Arduino_IRremote_master/IRremote.cpp.o: In function `MATCH(int, int)':
/Users/Copernic/Downloads/Arduino.app/Contents/Resources/Java/libraries/Arduino_IRremote_master/IRremoteInt.h:176: multiple definition of `MATCH(int, int)'

Si je supprime #include <IRremoteInt.h>, ca compile mais ca ne fonctionne pas.
Enfin, si ca fonctionne tant que j'envoie 255 sur mes pins de sorties (pour le rotoshield).

Si je modifie le fichier IRremoteInt.h comme suit pour selectionner un autre Timer, ca ne change rien...
// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
#else
#define IR_USE_TIMER1 // tx = pin 9
//#define IR_USE_TIMER2 // tx = pin 3
#endif

Si je n'active pas la IRremote: //irrecv.enableIRIn(); Je peux sans probleme faire tourner les moteurs
avec un PWM quelconque...
Pour infos, mon dernier montage utilise un Arduino Uno avec:
le capteur IR sur A0
et les com PWM pour les moteurs suivants:
com 1 = 11
com 2 = 10
com 3 = 6
com 4 = 5

Habituellement, je me débrouilles plus tôt bien avec mes montages mais je ne suis pas un expert surtout avec les libs... Et là je deviens fou...
Un petit coup de main serait bienvenu...

Un grand merci :-)