|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 48 ![]() |
Bonjour,
Pour mon projet, je suis sensée créer une mémoire puis utiliser les données qui y sont stockées pour faire un conversion. La mémoire que je dois construire est un buffer circulaire avec une taille de 10. Ce buffer est créé et le rebouclage se fait sans souci. Par contre pour la conversion je faire un calcul sous la forme : (a)k = (a)k-1 + (b)k k étant la position actuelle de la mémoire. Pour l'utilisation des données dans la mémoire j'utilise un compteur. Je ne vois pas comment je pourrais coder le k-1. J'ai peur que si je code directement k-1 je me retrouve avec la valeur de k soustraite de 1. Ce qui n'est pas ce que je veux. |
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() Ingénieur développement matériel électronique Inscription : juillet 2010 Messages : 141 ![]() |
Salut,
Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 48 ![]() |
Que signifie le "return k<=0?BUFF_SIZE-1:k-1;" ?
Je connais le principe du return mais je ne comprend l'action que va avoir cette ligne. |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Baptiste ROUSSELDéveloppeur Temps réel Embarqué Inscription : janvier 2011 Messages : 1 296 ![]() |
C'est une opération ternaire.
Si k est inférieur ou égal à 0 alors on fait BUFF_SIZE-1 sinon on fait k-1 Autrement codé : Code C :
__________________
|
||
|
|
00
|
|
|
#5 |
![]() ![]() |
Il s'agit de l'opérateur ternaire.
condition ? valeur si condition vrai : valeur si condition fausse. Exemple : x == 1 ? 1 : 2 => vaut 1 si x vaut 1 sinon vaut 2.
__________________
Recherche devs C++ motivés et sérieux pour Last Dungeon. Chaîne Youtube : Vidéos Ma page DVP : http://neckara.developpez.com/ |
|
|
00
|
|
|
#6 | ||
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 48 ![]() |
Je gère la mémoire de cette manière-ci :
Code :
En bref la mémoire se remplit et se vide non stop est-ce que faire une décrémentation ne va pas perturber la lecture ? |
||
|
|
00
|
|
|
#7 | |||
|
Membre Expert
![]() Développeur en systèmes embarqués Inscription : mars 2006 Messages : 763 ![]() |
Salut,
Citation:
Code :
A+ Pfeuh A+ Pfeuh |
|||
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 48 ![]() |
Là où ça devient compliquer c'est que je ne peux pas utiliser de fonction "malloc, free..." et je ne crois pas que return soit supporté par le logiciel que j'utilise (CodeWarrior une très vieille version)
Est-ce que je pourrais utiliser un deuxième compteur en parallèle (par rapport au read_buffer_wheel1) que je resynchroniserai avec le premier après chaque conversion ? |
|
|
00
|
|
|
#9 | ||
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 48 ![]() |
Quelque chose comme ça :
Code :
|
||
|
|
00
|
|
|
#10 | |||
|
Membre Expert
![]() Développeur en systèmes embarqués Inscription : mars 2006 Messages : 763 ![]() |
Citation:
Il me manque beaucoup d'info pour comprendre ce que tu veux faire, mais supposons que tu ne puisses écrire qu'une fonction qui ne retourne rien et que wheel1 et read_buffer_wheel1 soient une sorte de variables globales, tu peux peut-être passer par une variable statique: Code :
|
|||
|
|
10
|
|
|
#11 | |
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 48 ![]() |
J'ai oublié de replacer le contexte. En fait j'ai modfié le calcul du début (désolé je ne m'en suis pas rendu compte
En gros dans ce que j'ai présenté Citation:
a = Wheel1 elle représente les valeurs qui se trouvent dans ma mémoire Par rapport l'exemple que tu m'as montré, last_timestamp ne peut pas être égal à 0 (sauf au moment de l'init). Il doir prendre la valeur précédente de Wheel1. |
|
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 48 ![]() |
En bref
Le calcul serai plus : (b)k = (a)k - (a)k-1 Delta_t = Wheel1[read_buffer_wheel1] - wheel1[read_buffer_wheel1 -1] (avec -1 previous state) |
|
|
00
|
|
|
#13 | |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 708 ![]() |
Citation:
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
|
00
|
|
|
#14 | |
|
Membre Expert
![]() Développeur en systèmes embarqués Inscription : mars 2006 Messages : 763 ![]() |
Citation:
|
|
|
|
10
|
|
|
#15 |
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 48 ![]() |
Ok je n'avais pas compris ça comme ça.
Et oui je programme bien sur microcontrôleur mais j'ai estimé que mon problème correspondait à du C qu'a du microcontrôleur. |
|
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 708 ![]() |
Quand tu poses des questions sur le forum C (ça marche pour tous les forums de Developpez.com en fait), n'hésites pas à dire avec quel outil tu travailles (compilateur, type d'architecture, système d'exploitation), ça aide souvent à mieux répondre.
Ici, les gens posent à 90% des questions pour des problèmes en C sous Windows ou Linux. Si tu as un contexte très différent, comme un micro-contrôleur 8 bits, ça peut être particulièrement bon de le préciser car cela implique beaucoup de contraintes sur le code. Tu verras avec le temps ^^
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
00
|
Copyright © 2000-2013 - www.developpez.com