Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Question sur les tableaux ?
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous,
Voila je pose une question sur les tableaux de char que l'on met dans nos PICS . En règle générale, que convient-il de faire quand on veut stockée différentes informations dans des cases de tableaux ?
Disons que j'ai 80 cases à stockées contenant des infos différentes par paquet de 10 . ( de 0 - 9 , de 10 à 19 etc ..... de 70 à 79) .
Existe-t-il des différences de créer 8 tableaux de 10 cases , plutôt que un seul tableaux de 80 cases ? en terme de rapidité , espace mémoire , d'adressage etc ....
Merci à vous !
Voila je pose une question sur les tableaux de char que l'on met dans nos PICS . En règle générale, que convient-il de faire quand on veut stockée différentes informations dans des cases de tableaux ?
Disons que j'ai 80 cases à stockées contenant des infos différentes par paquet de 10 . ( de 0 - 9 , de 10 à 19 etc ..... de 70 à 79) .
Existe-t-il des différences de créer 8 tableaux de 10 cases , plutôt que un seul tableaux de 80 cases ? en terme de rapidité , espace mémoire , d'adressage etc ....
Merci à vous !
Question sur les tableaux ?
- paulfjujo
Expert- Messages : 2589
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
Au premier abord,
Je pense que gerer un seul pointeur pour parcourir 80 cases devrait etre plus efficace que d'en gerer 2
pour un tableau à 2 dimensions ..
apres qu'en fait-on ?
comment gerer les segment de 10 unites ..
Le compilo peut optimiser,
le programmeur peut compliquer ..
dilemme..
il faudrait comparer les 2 facons de coder et voir le nb d'instructions génerées.
et un tableau modulo 16 au lieu de 10 .. plus facile de gerer un pas binaire (modulo <<4 )
Au premier abord,
Je pense que gerer un seul pointeur pour parcourir 80 cases devrait etre plus efficace que d'en gerer 2
pour un tableau à 2 dimensions ..
apres qu'en fait-on ?
comment gerer les segment de 10 unites ..
Le compilo peut optimiser,
le programmeur peut compliquer ..
dilemme..
il faudrait comparer les 2 facons de coder et voir le nb d'instructions génerées.
et un tableau modulo 16 au lieu de 10 .. plus facile de gerer un pas binaire (modulo <<4 )
Question sur les tableaux ?
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Merci Paul pour ces explications !
Cette question m'est venu pendant ma recherche de solution pour mon module Radio !
Afin de pouvoir "bufferisé" mes réponses il me fallait un endroit de stockage . Au départ j'étais partie sur un tableau de 10 cases par numero d'identification de mes modules ( 8 au total). Mais je suis tombé sur un problème, c'est l'adressage de ce tableau.
SI je reçois l'identifiant 1 je devais écrire dans le tableau disons "T1[....]" si l'identifiant reçu était 5 dans le "T5[....]" . Cela m'obligeant a créer des conditions avec le numéro de l’identifiant pour savoir dans lequel je devais écrire .
J'ai donc opté pour la deuxième solution soit un grand tableau . et pour écrire ou lire mes infos j'utilise directement l'Identifiant (avec iun coefficient de multiplication) .
Si je reçois l'identifiant 2 , alors j'irais tout simplement écrire dans mon tableau à l'endroit T[Identifiant*10] . Je retrouverais docn toutes mes infos entre 20 et 29 . et ainsi de suite !
Je me demandais donc si sur le plan méthode contrainte etc ..... cela engendrait quelques choses .
Cette question m'est venu pendant ma recherche de solution pour mon module Radio !
Afin de pouvoir "bufferisé" mes réponses il me fallait un endroit de stockage . Au départ j'étais partie sur un tableau de 10 cases par numero d'identification de mes modules ( 8 au total). Mais je suis tombé sur un problème, c'est l'adressage de ce tableau.
SI je reçois l'identifiant 1 je devais écrire dans le tableau disons "T1[....]" si l'identifiant reçu était 5 dans le "T5[....]" . Cela m'obligeant a créer des conditions avec le numéro de l’identifiant pour savoir dans lequel je devais écrire .
J'ai donc opté pour la deuxième solution soit un grand tableau . et pour écrire ou lire mes infos j'utilise directement l'Identifiant (avec iun coefficient de multiplication) .
Si je reçois l'identifiant 2 , alors j'irais tout simplement écrire dans mon tableau à l'endroit T[Identifiant*10] . Je retrouverais docn toutes mes infos entre 20 et 29 . et ainsi de suite !
Je me demandais donc si sur le plan méthode contrainte etc ..... cela engendrait quelques choses .
Question sur les tableaux ?
- paulfjujo
Expert- Messages : 2589
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Je me demandais donc si sur le plan méthode contrainte etc ..... cela engendrait quelques choses
Juste la perte des 10 premiers bytes ..puisque ton identifiant commence à 1 ..
sinon il faut faire
T[(Identifiant-1)*10] utilisation de 8x10= 80 bytes
si tu as suffisamment de place , utilise modulo 16 au lieu de modulo 10
cela evite la multiplication,
T[Identifiant <<4)
mais tu perd 6 bytes par identifiant..
plus le 1er decalage du au depart indice=1 et non zero
16 + 8 x 6 = 70 bytes perdus sur un total de 16x(1+8)=144
Question sur les tableaux ?
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Re,
Non mon identifiant commence à 0 jusqu’à 7. J'ai prévue de codé mon identifiant par un DIP switch ! ainsi je pourrai facilement changer le numéro de mon esclave en modifiant la combinaison du switch .
Ton histoire de modulo est fortement judicieuse , car je suis à la recherhce de la moindre optimisation pour gagner en temps d'execution
En parlant de ça , si quelqu'un arrive à trouver un DIP SWITCH à 3 positions, sur un revendeur français ( farnell radiospares , lextronic , gotronic, conrad) je suis preneur. C'est super pratique pour faire des cartes de prototype genre pull - up 'un coté , rien au milieu pull down de l'autre ; ou branché un équipement style le câble RS-232 etc ...
paulfjujo a écrit :Source du message puisque ton identifiant commence à 1 ..
Non mon identifiant commence à 0 jusqu’à 7. J'ai prévue de codé mon identifiant par un DIP switch ! ainsi je pourrai facilement changer le numéro de mon esclave en modifiant la combinaison du switch .
Ton histoire de modulo est fortement judicieuse , car je suis à la recherhce de la moindre optimisation pour gagner en temps d'execution
En parlant de ça , si quelqu'un arrive à trouver un DIP SWITCH à 3 positions, sur un revendeur français ( farnell radiospares , lextronic , gotronic, conrad) je suis preneur. C'est super pratique pour faire des cartes de prototype genre pull - up 'un coté , rien au milieu pull down de l'autre ; ou branché un équipement style le câble RS-232 etc ...
Question sur les tableaux ?
- Gérard
Expert- Messages : 1640
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
Jérémy a écrit :Re,paulfjujo a écrit :Source du message puisque ton identifiant commence à 1 ..
Non mon identifiant commence à 0 jusqu’à 7. J'ai prévue de codé mon identifiant par un DIP switch ! ainsi je pourrai facilement changer le numéro de mon esclave en modifiant la combinaison du switch .
Ton histoire de modulo est fortement judicieuse , car je suis à la recherhce de la moindre optimisation pour gagner en temps d'execution
En parlant de ça , si quelqu'un arrive à trouver un DIP SWITCH à 3 positions, sur un revendeur français ( farnell radiospares , lextronic , gotronic, conrad) je suis preneur. C'est super pratique pour faire des cartes de prototype genre pull - up 'un coté , rien au milieu pull down de l'autre ; ou branché un équipement style le câble RS-232 etc ...
Regarde ici pour tes switch.
Question sur les tableaux ?
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous et Bonjour Gérard,
Pas tout a fait , il me faut 3 positions pas trois switchs . Je veux dire par la du (On-Off-On) ...... et pas sur la baie si possible !
Gérard a écrit :Source du message Regarde ici pour tes switch.
Pas tout a fait , il me faut 3 positions pas trois switchs . Je veux dire par la du (On-Off-On) ...... et pas sur la baie si possible !
Question sur les tableaux ?
Question sur les tableaux ?
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Gérard a écrit :Source du message Pourquoi n'aimes-tu pas EBay?
Lol , ce n'est pas que j'aime pas Ebay, C'est que sur Ebay ca sort de ma poche. Hors j'ai la possibilité d'avoir ça par un ami( chef de projet BRD d'une grande entreprise) et sur ces commandes à lui, il y a beacoup de "0" donc quelques fourniture gratos c'est transparent ! ( mais chutttttt).
J'ai trouvé ca, mais c'est juste la photo qui est bonne , je ne vois pas les trois contacts clairemeent explicité. Pourtant ca existe il y en a sur ma carte easy PIC, justement pour faire Pull-up ou pull-down ou en l'air .
Question sur les tableaux ?
Retourner vers « Généralités sur les PICs »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 36 invités