Show Posts
Pages: [1]
1  Products / Arduino Due / Re: Octave/Matlab Vector Programming in Due on: January 20, 2013, 04:58:22 am
Don't put too much hope in those two library especially Eigen. They are big packages not written for micro-controller.

I don't know much of the other but Eigen in is a very big library with complex inside dependency and even if you use only a very small subset of its functionality it will be very difficult to remove enough things to make it fit in the Due memory.
Better to look for math library specialized for micro controller where algorithm are chosen for their size.
2  International / Français / Commentaires sur montage AVR+ENC28J60 on: January 05, 2013, 03:06:36 pm
Bonjour,

je suis en train de préparer un système de télécomande réseau pour mon système HiFi et home cinéma. L'objectif est d'avoir une application Android qui envoie les commandes via le réseau à un Atmega qui envoie les commandes infra-rouge aux différents appareils.

Pour minimiser les coûts, je pars sur un montage standalone avec un ENC28J60 pour la partie réseau. Il y aura juste quelques paquets UDP à circuler donc ce sera largement suffisant.

Dans un permier temps mon objectif est de réaliser une carte avec le microcontrolleur et l'ENC28J60 pour déjà bien mettre au point la partie réseau. (j'ai déjà mis-au-point la partie IR avec une UNO)

Le truc c'est que pour le code c'est mon domaine mais pour ce qui est de la partie électronique, je maîtrise beaucoup moins. Je voudrais donc votre avis sur le montage que je prépare, je met l'image du schéma ici et vous pourrez trouver un pdf de meilleur qualité là : http://oniros.org/hardos.pdf

Je suis ouvert à toutes vos critiques et conseils, j'ai essayé de découper le montage en blocs logiques pour faciliter la lecture:
 - un bloc avec l'AVR ;
 - un avec l'ENC28J60 ;
 - un pour l'alimentation ;
 - un pour le connecteur ethernet ;
 - un pour le connecteur FTDI.
Tout le montage est en 3.3V par simplicité et l'AVR tournera à 8MHz et les pin inutilisées des port C et D serviront pour les aspects IR.
J'ai ajouté une LED sur la pin B1 pour que l'AVR puisse signaler si tout va bien.

Merci d'avance.
3  Products / Arduino Due / Re: Compare with other Arduino Boards on: November 02, 2012, 06:18:41 am
The Cortex-M3 doesn't have an MMU so don't hope to have Linux running on it.

(except if you want to do crazy things like this : http://dmitry.co/index.php?p=./04.Thoughts/07.%20Linux%20on%208bit)
4  International / Français / Re: 1+1=11... et ça c'est beau ! on: October 26, 2012, 03:37:22 pm
Tentative d'explication du problème...

Il y a bien un problème de précision, la fonction 'pow' consiste en gros à calculer x*x*x...x*x avec le bon nombre de x (la fonction pow le fait de manière plus intelligente mais mathématiquement c'est ça).
Dans le cas de ta boucle, à chaque itération le calcul ce fait avec juste un x de plus, donc il est possible de garder la valeur de la boucle précédente et de juste la multiplier par x à chaque fois. Ce qui donne une simple multiplication à chaque itérations au lieu d'un appel à fonction très couteuse. Ce qui donne comme boucle :

Code:
  float temp = 1;
  for(byte i=1; i<3 ; i++)
  {
    temp *= 2.0;
    int resultat = temp;
    Serial.println(resultat);
  }

Ok, et le rapport avec la choucroute ? C'est tout simple, les multiplications ne forment plus une seule opération comme dans le cas de pow et donc les garanties de précision ne sont plus les même. Dans le cadre du standard IEEE 754, pour de petites boucles il n'y a pas de problèmes. Les arrondis sont fais de telle manière que ça marche.

Le problème est donc double (ici c'est une supposition)
  - l'optimiseur de GCC fais la transformation car il doit penser être dans le cadre du standard (c'est le cas de la grande majorité des plateformes classiques)
  - la lib math software de l'AVR ne doit pas respecter complètement le standard car les règle d'arrondis sont complexe et donc coûteuse en instructions.
Donc à chaque tour de boucle tu accumule un peu plus d'erreur et donc avec une seule itération sa va, mais avec deux ça ne marche plus...

PS: je précise que c'est une supposition. J'ai vu des compilateur faire cette optimisation sur UltraSPARC notamment, je ne sais pas si GCC en est capable, et je ne connais pas le comportement de la lib math software.
Ça explique bien ce que tu observe mais il faudrais regarder le code assembleur généré pour être sur.
Pages: [1]