Arduino DUE et librairie DmxSimple

Bonjour,

Souhaitant utiliser le DMX sur mon Arduino DUE, je réalise exactement ce qu'il y a sur ce lien :

https://code.google.com/p/tinkerit/wiki/DmxSimple

Après avoir extrais tous les fichiers en /hardware/libraries/DmxSimple, je lance Arduino ; problème, lorsque j'essaye de compiler ce simple code :

#include <DmxSimple.h>

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

Message d'erreur :
Arduino : 1.5.7 (Windows 8), Carte : "Arduino Due (Programming Port)"

C:\Users\Flo\Documents\Arduino\libraries\DmxSimple\DmxSimple.cpp:6:20: fatal error: avr/io.h: No such file or directory
#include <avr/io.h>
^
compilation terminated.

Savez vous d'où peut venir le problème?

Merci d'avance.

L'arduino DUE n'est pas basée sur ATMega, et le code ne passera pas.
L'article date de 2009, avant la sortie du DUE, ce qui fait qu'il ne mentionne pas l'incompatibilité avec les Arduino basées sur ARM.

Bonjour XavierMiller,

Comment utiliser alors le DMX avec mon Arduino Due?
Existe t'il une librairie compatible?

aucune idée, je te laisse chercher :wink:

http://playground.arduino.cc/Learning/DMX

Le problème est que j'ai déjà fouillé à peu près partout, en vain :~

J'ai essayé avec un Arduino Uno, La librairie fonctionne ; je ne sais toujours pas pourquoi ça ne fonctionne pas avec mon Arduino Due, si vous avez des réponses. (ou du moins une autre librairie).

Bref sinon, j'aurais voulu savoir comment augmenter le nombre de channels à 512 (avec DmxSimple, on peut seulement jusqu'à 10, non?).

Merci de vos réponses.

Le problème c'est que la DUE est un ARM, donc pas la même architecture donc le code bas niveau n'a rien à voir. Et ici particulièrement puisqu'il y a gestion des timers directement.

Donc en solution tel quel visiblement il n'y a rien (en tout dmxsimple c'est sûr c'est pas prévu pour la DUE).

N'y a t-il pas moyen de porter le code pour un ARM comme sur la DUE?

Bin si tout est possible, mais faut le faire ...

Je débute sous Arduino, je ne vois pas trop le chemin à suivre. Il faut modifier le .h?

Et le .cpp

Merci de tes réponses, cela me semble bien compliqué ; débutant en Arduino, je ne vois pas quelles infos je vais devoir modifier ; je pense que je vais devoir trouver une autre solution. :~

La solution la plus simple c'est d'utiliser un atmega328, si tu débutes je ne vois pas ce que tu pourrais faire qui nécessite l'usage d'une DUE

A l'origine, j'avais choisit la Due pour les nombreuses possibilités qu'elle offre, sans m'apercevoir de l'incompatibilité avec le DMX.

Je dispose d'une Arduino Uno également, avec laquelle j'ai pu essayer le DMX en mode émission, mais pas encore en mode réception.

J'ai regardé vite fait la librairie DMX et si j'ai bien compris le principe du DMX, pour moi cette librairie est inutile en l'état pour la DUE.
Elle utilise un timer parce qu'elle fait une UART soft. La DUE possédant 4 ports série il n'y a aucun intérêt à utiliser une UART soft. Il suffirait d'utiliser l'un des ports série en le configurant à 250kbauds, 8bits, 2 bits de stop, pas de parité pour établir une communication sur le bus DMX. Le seul truc à faire "à la main" serait la gestion du début de trame DMX soit un break + un petit délai.

S'il y a des pro du DMX pour me corriger ?

le DMX c'est du RS 485, donc en soit il faut en effet juste gérer la couche soft.

L'utilisation du soft n'est pas anodine à mon avis (d'ailleurs écris en asm) : le DMX c'est du 250 kbits/s, je ne sais plus combien le 328 peut tenir en série, mais je crois que c'est déjà trop

Il existe déjà une librairie qui s'appuie sur l'UART matérielle des ATmega: A Arduino Library for sending and receiving DMX