Pages: 1 2 [3] 4   Go Down
Author Topic: Multitâches DuinOS  (Read 6412 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut skywodd!

Dis moi, je test un peu le matos que je vais utiliser pour mon montage avec DuinOS, pour l'instant j'utilise le shield LCD+keypad que tu as présenté sur ton blog.
Celui-ci n'est pas fonctionnel avec DuinOS, en tout cas avec DuinOS+mega2560.

J'ai un peu regardé le code de la librairie LiquidCrystal, j'ai pas trouvé pourquoi ça ne fonctionnerai pas avec DuinOS. Mais c'est un excellent aprentissage du c++ pour arduino (je connais bien le python, pour le reste je balbutie!)
Aurais-tu une idée??

Je sens que je risque d'avoir le même genre de problème pour les autres shields... (je compte utiliser un shield ethernet+carte SD)
Merci beaucoup
a+
Logged

Thomas

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

Dis moi, je test un peu le matos que je vais utiliser pour mon montage avec DuinOS, pour l'instant j'utilise le shield LCD+keypad que tu as présenté sur ton blog.
Celui-ci n'est pas fonctionnel avec DuinOS, en tout cas avec DuinOS+mega2560.
Tu as testé la shield sans duinOS avant pour être sure de son bon fonctionnement ?

J'ai un peu regardé le code de la librairie LiquidCrystal, j'ai pas trouvé pourquoi ça ne fonctionnerai pas avec DuinOS. Mais c'est un excellent aprentissage du c++ pour arduino (je connais bien le python, pour le reste je balbutie!)
Aurais-tu une idée??
Si tu ne spécifie pas la broche RW la librairie LiquidCrystal se base sur une série de timings prédéfini pour les transfert de données.
Comme duinOS altère plus ou moins ces timings ça peu être la cause du probléme.

Essaye de placer les morceaux de codes utilisant le lcd en section critique (morceau de code devant être exécuté en une seul fois) :
Code:
portENTER_CRITICAL();
lcd.xxxx();
portEXIT_CRITICAL();
Ils seront exécuté comme dans un programme normal et les autres taches seront mis en pause jusqu'à la fin de la section critique.

Je sens que je risque d'avoir le même genre de problème pour les autres shields... (je compte utiliser un shield ethernet+carte SD)
Tu devra gérer toi même tout cela, duinOS est basé sur FreeRTOS, il faut avoir une vu d'ensemble du programme et gérer les accès aux ressources.
Logged

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

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dis moi, je test un peu le matos que je vais utiliser pour mon montage avec DuinOS, pour l'instant j'utilise le shield LCD+keypad que tu as présenté sur ton blog.
Celui-ci n'est pas fonctionnel avec DuinOS, en tout cas avec DuinOS+mega2560.
Tu as testé la shield sans duinOS avant pour être sure de son bon fonctionnement ?
Oui, pour l'instant, j'apprend à m'en servir, alors je ne fais que des petits bout de code, que je test avec DuinOS et sans.

J'ai un peu regardé le code de la librairie LiquidCrystal, j'ai pas trouvé pourquoi ça ne fonctionnerai pas avec DuinOS. Mais c'est un excellent aprentissage du c++ pour arduino (je connais bien le python, pour le reste je balbutie!)
Aurais-tu une idée??
Si tu ne spécifie pas la broche RW la librairie LiquidCrystal se base sur une série de timings prédéfini pour les transfert de données.
Comme duinOS altère plus ou moins ces timings ça peu être la cause du probléme.

Essaye de placer les morceaux de codes utilisant le lcd en section critique (morceau de code devant être exécuté en une seul fois) :
Code:
portENTER_CRITICAL();
lcd.xxxx();
portEXIT_CRITICAL();
Ils seront exécuté comme dans un programme normal et les autres taches seront mis en pause jusqu'à la fin de la section critique.
Cool, merci, la broche RW n'est pas utilisable avec le shield en question (ou alors faudrait désouder/resouder)!
Par contre, j'ai modifié la librairie LiquidCrystal en utilisant portENTER_CRITICAL();/portEXIT_CRITICAL(); dans les fonctions bas niveaux gérant la communication avec l'écran. Et ça marche sans problème!

Merci beaucoup
Logged

Thomas

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Je débute avec les Arduino et je souhaiterais utiliser DuinOS. Quelqu'un l'utilise-t-il avec cette board??

Merci d'avance pour vos réponses.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je débute avec les Arduino et je souhaiterais utiliser DuinOS. Quelqu'un l'utilise-t-il avec cette board??
Salut!
Avec quelle board compte tu l'utiliser? pour ma part, je l'utilise avec un arduino mega2560 rev2!
Logged

Thomas

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

Bonjour,

Je débute avec les Arduino et je souhaiterais utiliser DuinOS. Quelqu'un l'utilise-t-il avec cette board??
Ton topic a été fusionné avec celui déja existant portant sur le même sujet, relie le topic en entier et tu auras ta réponse smiley-wink
Logged

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

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci bien, je vais étudier la chose...
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon, j'ai tout essayé, pas moyen de compiler quoi que ce soit... smiley-red
Quelqu'un pourrait-il zipper son dossier arduino qui fonctionne avec la 2560 MEGA et la mettre en ligne??
Merci d'avance.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Personne pour m'aider? smiley-red
Logged

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

Zipper tout le dossier arduino ça prend un pas mal de place smiley-wink

Tu as suivis la procédure d'installation à la lettre et ça marche pas ?
Qu'est qu'il te sort comme erreurs quand tu compile ?
Logged

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

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui c'est vrai que c'est un peu gros comme dossier. C'est bien dommage. J'ai fait plusieurs fois l'installation à la lettre, avec plusieurs versions de l'IDE et toujours la même erreur à la compil. Même avec des exemples trouvés sur le net. Le même problème que Telson avait. Voici l'erreur :


In file included from E:\arduino-0021\hardware\arduino\cores\arduino.DuinOS/DuinOS.h:14,
                 from E:\arduino-0021\hardware\arduino\cores\arduino.DuinOS/WProgram.h:13,
                 from E:\arduino-0021\hardware\arduino\cores\arduino.DuinOS\main.cpp:1:
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h: In function 'void eeprom_read_block(void*, const void*, size_t)':
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:290: error: ISO C++ forbids incrementing a pointer of type 'void*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:290: error: ISO C++ forbids incrementing a pointer of type 'const void*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:290: error: invalid conversion from 'const void*' to 'const uint8_t*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:290: error:   initializing argument 1 of 'uint8_t eeprom_read_byte(const uint8_t*)'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h: In function 'void eeprom_write_block(const void*, void*, size_t)':
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:398: error: ISO C++ forbids incrementing a pointer of type 'void*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:398: error: ISO C++ forbids incrementing a pointer of type 'const void*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:398: error: invalid conversion from 'void*' to 'uint8_t*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:398: error:   initializing argument 1 of 'void eeprom_write_byte(uint8_t*, uint8_t)'

Merci beaucoup pour ton aide.
Logged

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

Oui c'est vrai que c'est un peu gros comme dossier. C'est bien dommage. J'ai fait plusieurs fois l'installation à la lettre, avec plusieurs versions de l'IDE et toujours la même erreur à la compil. Même avec des exemples trouvés sur le net. Le même problème que Telson avait. Voici l'erreur :
Ok ! Je vois ou est le probléme smiley-wink

L'erreur de compilation est du à un conflit entre la version de avr-gcc fourni avec l'ide et la version utilisé pour coder DuinOS.
Il y avait justement un probléme avec le fichier eeprom.h par le passé (toujours pas réglé apparemment).

Deux solutions :
- pas trés propre mais 100% fonctionnelle :
Dans duinos.h ligne ~14 :
Mettre en commentaire l'include de eeprom.h:
Code:
//#include <avr/eeprom.h>

- mettre à jour la chaine win-avr :
http://skyduino.wordpress.com/2012/07/07/hack-utiliser-teensyduino-avec-une-carte-arduino-leonardo-ou-compatible-leonardo/
(étapes 1, 2 et 3 uniquement)
Logged

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

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je vais essayer ça! Merci.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon, il y a du mieux. Mais ça ne veut toujours pas compiler. smiley-mad
J'ai cette erreur maintenant :

core.a(port.c.o): In function `vPortYieldFromTick':
C:\Arduino DuinOS\arduino-0021\hardware\arduino\cores\arduino.DuinOS\DuinOS/port.c:430: undefined reference to `arduino_increment_millis'

Une idée?

EDIT : J'ai trouvé la solution, j'ai appliqué l'astuce de cette page :
http://code.google.com/p/duinos/issues/detail?id=4

Merci pour votre aide précieuse!
« Last Edit: July 23, 2012, 03:43:03 am by Thibthib02 » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut Skywood!

J'avais laissé le projet arduino de côté, je m'y remet maintenant.

J'ai aujourd'hui un problème avec la librairie mprintf fournie avec DuinOS. (safe printf).

Pour info je suis sous ubuntu 12.04 avec arduino 1.0.1 et DuinOS 0.4 (voir plus haut).

Avec une board arduino Mega2560 + DuinOS, quand je fait un (initialisation de mprintf)
Code:
mprintf_init();
j'ai le message d'erreur suivant:
Quote
mprintf/mprintf.cpp.o: In function `mprintf_init()':
/usr/share/arduino/libraries/mprintf/mprintf.cpp:38: undefined reference to `xQueueCreateMutex'
collect2: ld returned 1 exit status

En compilant pour une board arduino uno + DuinOS, je n'ai pas de pb. J'ai essayé de fouiller un peu, mais je ne comprend pas l'origine du pb et je crains que mes maigres capacités ne suffisent pas pour trouver...
Aurais-tu une idée?

Merci, bonne soirée

Logged

Thomas

Pages: 1 2 [3] 4   Go Up
Jump to: