Pages: [1]   Go Down
Author Topic: [Résolu] Lib "VirtualWire.h" incompatible avec Lib "Servo.h" !!?  (Read 890 times)
0 Members and 1 Guest are viewing this topic.
Sud-Ouest
Offline Offline
Full Member
***
Karma: 0
Posts: 117
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour a tous, mon projet avance mais je me trouve confronté à un problème de lib!!!
"VirtualWire" et "Servo" utilisent toute les deux le Timer1 et donc lors de la compilation ca bloque!!  smiley-mad

VirtualWire =>
Code:
// This is the interrupt service routine called when timer1 overflows
// Its job is to output the next bit from the transmitter (every 8 calls)
// and to call the PLL code if the receiver is enabled
//ISR(SIG_OUTPUT_COMPARE1A)
SIGNAL(TIMER1_COMPA_vect)
{
    vw_rx_sample = digitalRead(vw_rx_pin);

    // Do transmitter stuff first to reduce transmitter bit jitter due
    // to variable receiver processing
    if (vw_tx_enabled && vw_tx_sample++ == 0)
    {
        // Send next bit
// Symbols are sent LSB first
        // Finished sending the whole message? (after waiting one bit period
// since the last bit)
        if (vw_tx_index >= vw_tx_len)
{
   vw_tx_stop();
   vw_tx_msg_count++;
}
        else
        {
   digitalWrite(vw_tx_pin, vw_tx_buf[vw_tx_index] & (1 << vw_tx_bit++));
   if (vw_tx_bit >= 6)
   {
       vw_tx_bit = 0;
                vw_tx_index++;
   }
        }
    }
    if (vw_tx_sample > 7)
vw_tx_sample = 0;

    if (vw_rx_enabled && !vw_tx_enabled)
vw_pll();
}

Servo =>
Code:
#ifndef WIRING // Wiring pre-defines signal handlers so don't define any if compiling for the Wiring platform
// Interrupt handlers for Arduino
#if defined(_useTimer1)
SIGNAL (TIMER1_COMPA_vect)
{
  handle_interrupts(_timer1, &TCNT1, &OCR1A);
}
#endif
et plus loin...

Que faire ?  smiley-slim
Dites moi qu'il y a une solution!! Mon projet de tourelle radioguidé (module 433Mhz) monté sur un 4*4 géant  lui aussi radioguidé ...le tout piloté avec un joystick PS2 ne peut pas s’arrêter la  smiley-cry
« Last Edit: February 29, 2012, 03:07:47 pm by cutprod » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Tu ne peut pas utiliser deux fois le même timer.

ServoTimer2 devrait te sauver la vie smiley-wink
http://code.google.com/p/duinos/source/browse/trunk/libraries/ServoTimer2/
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu as eu la bonne réaction de fouiller dans les libs pour identifier ton problème. As-tu vraiment besoin de virtualwire? ne peux-tu pas le contourner? J'y connais rien dans virtualWire, je ne sais pas à quoi il sert. je n'utilise jamais les #include à cause de ces incompatibilités et les ressources limitées de l'arduino, je code tout en dur, comme ça, je sais ce qui est utilisé et où j'en suis...
Logged

Sud-Ouest
Offline Offline
Full Member
***
Karma: 0
Posts: 117
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour vos réponses!!
@skywodd =
T'es un magicien je teste ça et je post le résultat.(j' étais prêt a commander 2 modules "nRF24L01+" dont les lib sont apparament compatible avec Servo.h ... mon porte monnaie te dit merci aussi smiley-money)
@Super_Cinci=
Ouhaaa, je t'envie de savoir coder a ce niveau!! Moi j'en suis bien loin  smiley-sad je dois m'appuyer sur ce que de vrais pros ont fais ou m'aide a faire...
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@skywodd =
T'es un magicien je teste ça et je post le résultat.(j' étais prêt a commander 2 modules "nRF24L01+" dont les lib sont apparament compatible avec Servo.h ... mon porte monnaie te dit merci aussi smiley-money)
nRF24L01+ x2, ebay smiley-wink

Si tu n'as pas une autre lib qui utilise le timer2 tu ne devrais plus avoir de soucis.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Super_Cinci=
Ouhaaa, je t'envie de savoir coder a ce niveau!! Moi j'en suis bien loin  smiley-sad je dois m'appuyer sur ce que de vrais pros ont fais ou m'aide a faire...
C'est l'avantage d'avoir fait un peu de prog à l'école en 1995, l'époque où on codait en assembleur sur des AIM (ça ressemblait à des minitels...) où le Ctrl+C/Ctrl+V n'existait pas, et on n'a vu arriver les premiers compilateurs C sur PC arriver en deuxième année de BTS, mais toujours sans librairies.

Mais je trouve dommage qu'il n'y ait toujours pas une sorte de "norme" qui impose de lister les ressources utilisées par une lib, histoire que l'on sache d'entrée de jeu si une lib est compatible avec une autre, et c'est un peu ce que j'attendais de la version 1.0 de l'IDE. quand on importe une lib, l'IDE devrait vérifier que les ressources utilisées par la lib importée soient encore libre...
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mais je trouve dommage qu'il n'y ait toujours pas une sorte de "norme" qui impose de lister les ressources utilisées par une lib, histoire que l'on sache d'entrée de jeu si une lib est compatible avec une autre, et c'est un peu ce que j'attendais de la version 1.0 de l'IDE. quand on importe une lib, l'IDE devrait vérifier que les ressources utilisées par la lib importée soient encore libre...
Déja ce qui serai un minimum, ce serait d'avoir un repository (svn ou git) avec TOUTES les librairies dispo.
Au moins ça aurait l'avantage de permettre une mise à jour centralisé et facile (ça aurait même pu être intégré à l'ide).
La team arduino a tenté un truc dans le genre, mais vu comment c'est géré personne veut l'utiliser ...
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Sud-Ouest
Offline Offline
Full Member
***
Karma: 0
Posts: 117
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai eu des soucis avec ServoTimer2.h l'IDE 023 me donner ces erreurs =
Code:
In file included from E:\#ARDUINO#\#IDE_ARDUINO#\arduino-0023\hardware\arduino\cores\arduino/WProgram.h:6,
                 from sketch_feb29a.cpp:8:
e:/#arduino#/#ide_arduino#/arduino-0023/hardware/tools/avr/lib/gcc/../../avr/include/math.h:439: error: expected unqualified-id before 'double'
e:/#arduino#/#ide_arduino#/arduino-0023/hardware/tools/avr/lib/gcc/../../avr/include/math.h:439: error: expected `)' before 'double'
e:/#arduino#/#ide_arduino#/arduino-0023/hardware/tools/avr/lib/gcc/../../avr/include/math.h:439: error: expected `)' before 'double'
Mais dans les commentaires de la lib j'ai trouvé ce lien =  http://www.arduino.cc/playground/ComponentLib/Servo
et la miracle la lib SoftwareServo.h est pile ce qu'il me faut.
Je vous remercie bien tous les deux, à bientôt.
« Last Edit: February 29, 2012, 03:11:39 pm by cutprod » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour ceux qui auraient un probléme de compilation à cause de math.h
Code:
#undef int
#undef abs
#undef double
#undef float
#undef round
La derniére ligne suffit en général, sinon il faut faire des test pour savoir quel undef garder ou non.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: [1]   Go Up
Jump to: