Show Posts
Pages: 1 ... 3 4 [5] 6 7 ... 230
61  International / Français / Re: stockage SD (SPI) + HorlogeDs3234(SPI) on: July 11, 2014, 07:33:21 am
Code:
#define BUFF_MAX 256
....
   char buff[BUFF_MAX];
....
  // display current time
  snprintf(buff, BUFF_MAX, " %02d:%02d:%02d",t.hour, t.min, t.sec);
Mauvaise pratique sur un micro avec 2k de RAM.
Tu n'as normalement besoin que de 9 octets pourquoi en allouer plus. Si la pile est bien remplie tu vas écrire n'importe où et tu vas tout planter.
Pendant la mise au point tu peux éventuellement laisser une marge mais évite d'en demander trop cela peut avoir des conséquences sur l'allocation dynamique des variables.
62  International / Français / Re: [QST] traitement de chaîne de caractère on: July 11, 2014, 06:11:01 am
strtok fait ça très bien.
Petit exemple ci-dessous
Code:
char * s={"Ma chaine de caracteres;avec.des delimiteurs"};
char * delim={"= ;,."};

void setup(void){
  Serial.begin(9600);
  char *tmp;
  tmp = strdup(s);
 
  char *toto =strtok(tmp,delim);
  Serial.println(toto);
  while(toto){
    toto =strtok(NULL,delim);
    Serial.println(toto);
  }
}

void loop(void){}
63  International / Français / Re: UNO-R3 -- Carte µSD, Vitesses d'escargot dans le transfert des données !? on: July 11, 2014, 05:47:52 am
Je pense qu'il y a une mauvaise connaissance du système à la base.

Les échanges de données entre la carte SD et son hôte se font comme pour n'importe quel disque par lecture/écriture de secteurs. Sur la SD un secteur c'est 512 octets. Donc à chaque fermeture du fichier ou lorsque le tampon d'échange est plein la librairie écrit 512 octets dans la carte.
Avec une horloge à 8MHz, il faut 1µs pour envoyer un octet par le SPI. Pour transférer le tampon complet il faut donc, au mieux, 512µs. Comme il y a une boucle avec des tests pour gérer tout ça on comprend un peu mieux que tu trouves dans les 550µs.

Moralité, pour optimiser les transferts entre l'Arduino et la carte mémoire, je pense qu'il serait préférable de travailler par bloc de 512 octets.
64  International / Français / Re: pointeurs structure union, lequel choisir on: July 10, 2014, 05:43:27 pm
Quote
Je devrais passer le tampon de reception par pointeur aux méthodes de classe mais du coup, je vais devoir faire un cast a chaque passage en fonction de qui il est destiné ou alors, il y a une astuce que je ne connais pas?
Le programme principal passe un pointeur à la méthode de décodage associé à la classe. Le plus simple étant de passer un pointeur non typé. Celle-ci fait un cast pour manipuler sa structure.

65  International / Français / Re: stockage SD (SPI) + HorlogeDs3234(SPI) on: July 10, 2014, 11:32:39 am
Ça:
http://playground.arduino.cc/Code/AvailableMemory

ou ça:
http://forum.arduino.cc/index.php?topic=246650.0
66  International / Français / Re: stockage SD (SPI) + HorlogeDs3234(SPI) on: July 10, 2014, 11:01:58 am
Je me rends compte que les deux modules SPI (horloge et SD) n'arrivent pas à être indépendant ?! vu que les broches MISO, MOSI, CLK sont les même cela veut dire, que la SD perturbe l'horloge par ces broches communes ..
Ne mélangeons pas tout.
Les périphériques SPI lorsque leur broche SS ou CS n'est pas active ignorent MOSI et CLK et leur broche MISO est en haute impédance.

Avant de tout casser:
  • s'assurer qu'une des librairies n'oublierait pas de désactiver son composant en omettant de remonter le CS à la fin d'un accès
  • s'assurer qu'il n'y a pas un pataquès avec les IT car la librairie SD les utilisent aussi il me semble
  • s'assurer que toute la RAM n'est pas utilisée (à dire vrai il faudrait peut être faire ça en premier)
67  International / Français / Re: Déclencher une action a partir de l'horloge on: July 10, 2014, 04:03:38 am
Je pense motoriser avec un PAP,  vis sans fin et fin de course, mais pas sur de mon choix, ?
A mon sens pour ce genre de besoin le moteur pas-à-pas n'importe rien si ce n'est une augmentation du coût.
68  International / Français / Re: Plusieurs arduino en standalone on: July 10, 2014, 04:00:42 am
et voici le pcb
Le reset sur le micro écran ne va pas sur le bon point du shield. Il devrait être sur le premier point, là il est sur le 3,3V. Et il n'y a pas de tirage au plus de la ligne de reset.
Mis à part MIC-ECRAN et MIC2 tous les signaux pourraient passer sur une seule face ce qui permettrait de remplir la face composant avec un plan de masse. Cela impose de passer quelques pistes entre les broches des ATmega.
Faire tourner 6 quartz à la même fréquence (à epsilon près) sur la même carte c'est pas recommandé. On risque souvent de rencontrer des problèmes liés à l'accrochage d'un oscillateur sur son voisin. Il serait sans doute moins hasardeux de faire générer l'horloge sur l'un des micros (ou d'utiliser un oscillateur extérieur mais c'est plus cher). De reprendre cette horloge avec une porte CMOS à la sortie de l'oscillateur et de la distribuer vers les autres micros (en utilisant un buffer sur chaque horloge).
69  International / Français / Re: Plusieurs arduino en standalone on: July 09, 2014, 05:31:34 pm
Il est bien possible de mettre la même alim pour alimenter 5 Atmega?
Oui mais attention à la qualité de l'alimentation et aux découplages sur chacun des circuits.
70  International / Français / Re: pointeurs structure union, lequel choisir on: July 09, 2014, 02:38:06 pm
Il n'y a pas à choisir entre structure et union. Ce sont deux concepts complètement différents.
Une structure définit un ensemble de variables hétérogènes qui forment un bloc contiguës de données en mémoires. La structure permet de manipuler le bloc de variables en passant simplement le pointeur sur la dite structure.
Une union définit une zone de données hétérogènes qui partagent un même espace mémoire. L'union permet par exemple de manipuler un long sous forme d'octets en créant une union entre un long et un tableau de 4 byte.

Dans ton cas l'union est effectivement un bon choix puisqu'il permet de partager un espace mémoire commun pour y placer des données de type différents.
Maintenant, intellectuellement, la solution n'est pas très élégante. Si tu ajoutes ou supprimes des senseurs ou bien si tu modifies le format des données tu vas devoir changer cette union. Je pense que la solution permettant le plus de souplesse et d'évolutivité serait que:
  • tu écrives une classe pour chacun des senseurs.
  • que ta routine de réception se contente de recevoir des byte
  • qu'en fonction du type de senseur identifié la routine de réception passe la main à la méthode de décodage associée à la classe du senseur en lui transmettant les données reçues.


Par rapport à l'union :
  • on utilise toujours qu'un tampon de réception.
  • Le programme principal ne connait pas et n'a pas à connaitre les types manipulés
  • les évolutions des senseurs sont complètement transparentes pour le programme principal
71  International / Français / Re: Mon projet on: June 26, 2014, 01:32:21 am
j'ai récupéré sur un réveil HS un écran et je voudrais faire en sorte d'afficher dessus des lettres chiffres... via un PC.
Il faudrait en savoir un peu plus sur l'afficheur en question. Parce que là c'est un peu trop succinct pour pouvoir se prononcer.
72  International / Français / Re: Mon projet on: June 26, 2014, 01:22:04 am
Merde aux intégristes.
Il pose une question ponctuelle sur un problème de traduction on répond c'est tout.

@raschemmel
HS = hors service
73  International / Français / Re: probleme de compilation on: June 26, 2014, 01:16:41 am
Tu ne donnes pas l'erreur et tu ne mets qu'une portion du code. C'est pas facile de t'aider dans ces conditions. On ne sait pas ce qu'il faut chercher comme erreur et on ne peut même pas reproduire l'erreur.
74  International / Français / Re: Mon projet on: June 25, 2014, 03:22:47 pm
The screen display of a broken alarm clock
75  International / Français / Re: Boucle "if" boiteuse... [non résolu] on: June 25, 2014, 09:31:16 am
Le code est touffu et difficile à lire. Tu aurais gagné à découper en fonctions pour améliorer la lisibilité.
Une fonction manuel, une fonction automatique pour commencer.
Sans connaitre la logique de fonctionnement du système on ne peut pas beaucoup t'aider. Tout au plus te donner des règles de bonne pratique pour mettre au point.

Il faut placer quelques Serial.print un peu partout dans le code pour voir où il passe. Il faut quand même rester raisonnable car si on sort beaucoup d'informations, on peut ralentir un peu l'exécution du programme et tomber en marche sans comprendre pourquoi.
Faire afficher l'état des variables pour comprendre pourquoi il ne suit pas la logique voulu.
Ne pas perdre de vue que loop est exécuté plusieurs milliers de fois par secondes et que cela peut jouer des tours lorsqu'on est connecté à des systèmes qui sont lents par rapport au temps de réaction du programme.
Pages: 1 ... 3 4 [5] 6 7 ... 230