µC et trigonometrie ...
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

µC et trigonometrie ...



  1. #1
    invite9246444d

    Bonjour, je suis a la recherche d'un µC qui puisse calculer des cosinus, sinus assez précisementet rapidement.
    Je ne voi pas non plus comment faire ces calculs en assembleur
    Bon voila je suis pas top en elec donc si qq pouvai m'aider la dessus ce serai cool
    PS: J'avais deja commencer de regarder du cote des 68331/68332 ...

    -----

  2. #2
    Jack
    Modérateur
    salut,

    tu devrais préciser un peu plus quelles sont tes contraintes.

    En attendant, si tu veux travailler sur des entiers, le mieux est sans doute de calculer tes tables trigo et de les implanter dans la ROM de ton système.

    A+

  3. #3
    invite9246444d

    ouai, c pas pour traviller sur des entiers (en fait, c pour guider un telescope). Et faire des tables ouai, mais je pense que ca sera pas assez précis ...

  4. #4
    Jack
    Modérateur
    Et bien si tu a besoin de travailler sur des flottants tu écris ton programme en langage C et le tour est joué.

    A+

  5. A voir en vidéo sur Futura
  6. #5
    invite9246444d

    ok merci bien je v voir de ce cote la

  7. #6
    invite8ebda540

    Bonjour

    Pour une version assembleur, il faut utiliser les développements limités (taylor lagrange)
    f(x) = f(0) + x f'(0) + x²/2 f''(0) + .......... + x^n / n! f nième (0)

    sin(x) ------> sin(0) cos(0) -sin(0) -cos(0) ............
    cos(x) ------> cos(0) -sin(0) -cos(0) sin(0) ...........

    sin(x) = x - x^3/6 + x^5/120 .......
    cos(x) = 1 - x²/2 + x^4/24 ........

  8. #7
    Jack
    Modérateur
    salut,

    c'est vrai que c'est le principe mais je ne pense pas qu'il faille réinventer la roue.

    Si les contraintes imposent l'utilisation de l'assembleur, il ne faut pas hésiter à se procurer les librairies IEEE de calcul en flottant.

    Chez motorola, on les trouve facilement sur leur site.

    A+

  9. #8
    Aurélien

    Salut,
    Le fait de programmer en C ne changera rien au choix du µC car le compilateur ne fera que realiser une fonction sinus ou cosinus en assembleur, et là encore plus difficile à en connaitre la précision.

    Pour les développements limités, attention celui que tu as ecrit est en 0..Pour les autres c'est :
    f(x-x0) = f(x-x0)+ (x-x0)f'(x-x0)+ etc...(enfin il me semble, je ferais mieux de savoir car j'ai partiels dans 2 jours..) Bof je sais plus ça m'enerve ces trucs la.

    Le mieux est de dresser une table dans la mémoire du µC. Si tu prends un PIC de la série 18F tu auras bcp bcp de place....
    A toi ensuite de savoir combien de valeurs tu dois mettre en fonction de la précision de ton asservissement (motorisé je pense) derrière !

    Aurélien.

  10. #9
    Jack
    Modérateur
    salut,
    Le fait de programmer en C ne changera rien au choix du µC car le compilateur ne fera que realiser une fonction sinus ou cosinus en assembleur, et là encore plus difficile à en connaitre la précision.
    Qui a dit que le choix de travailler en C déterminait le choix du µC? Tous possèdent au moins un compilateur C.

    Je ne comprends pas non plus ce que tu veux dire à propos de la précision des calculs. Si tu utilises des float par exemple, c'est parfaitement clair et normalisé: mantisse sur 3 octets et exposant sur un octet.

    A+

  11. #10
    Bigonoff

    Salut
    -------

    Tous les fabricants de µC fournissent des librairies assembleur toutes faites pour les fonctions mathématiques de ce style, comme le fait justement remarquer Jack.

    Si tu prends les pics, par exemple, il te suffit d'aller sur le site de Microchip, puis dans l'onglet engineer toolbox, pour charger les dizaines de librairies disponibles toutes faites.

    Ecrire en C ne change rien, puisque le C se contente d'exécuter les dites librairies, il n'y a pas de miracle.

    Le problème du C, c'est qu'on ne se rend pas compte qu'en écrivant une simple ligne, on peut générer 1000 lignes de code assembleur derrière. Il ne vient donc pas à l'idée d'optimiser le fonctionnement.

    Sinon, je suis d'accord avec ce que dis Aurélien.

    A+
    Bigonoff
    Vive l'Internet libre

  12. #11
    Jack
    Modérateur
    salut,

    c'est vrai qu'un compilateur C ne produira jamais un code plus efficace qu'un bon développeur en 'assembleur' (ce que je ne suis pas).

    Cependant, il faut reconnaître que l'utilisation des librairies de calcul flottant est assez lourde et ce cas précis est un de ceux où le recourt au C est justifié. Sur ce genre de calculs, le code produit est efficace.

    Quant à générer 1000 lignes de code assembleur avec une ligne de C? Si on adopte un style de programmation moderne en C, les instructions (fonctions) les plus gourmandes en C sont, je pense, scanf et printf à cause du formatage.

    C'est pour cela que les compilateur adaptés aux microcontrôleurs présentent toujours des alternatives ou des versions light de ces fonctions permettant de générer un code suffisamment compact.

    Maintenant, chacun fait comme il préfère quoiqu'il reste encore une solution intermédaire : utiliser le C pour les parties lourdes à mettre au point et l'assembleur pour les parties les plus simples ou les plus sensibles en termes de compacité et de rapidité d'exécution du code.

    A+

Discussions similaires

  1. Trigonométrie
    Par invitea7288076 dans le forum Mathématiques du collège et du lycée
    Réponses: 2
    Dernier message: 23/05/2007, 21h42
  2. Trigonométrie
    Par invitea7288076 dans le forum Mathématiques du collège et du lycée
    Réponses: 2
    Dernier message: 23/05/2007, 20h36
  3. trigonométrie...
    Par inviteff013aa0 dans le forum Mathématiques du collège et du lycée
    Réponses: 3
    Dernier message: 21/04/2007, 17h33
  4. trigonométrie
    Par inviteecabeed6 dans le forum Mathématiques du collège et du lycée
    Réponses: 4
    Dernier message: 26/04/2006, 00h13
  5. trigonométrie
    Par invitea8caeaa6 dans le forum Mathématiques du supérieur
    Réponses: 8
    Dernier message: 09/10/2005, 18h02
Découvrez nos comparatifs produits sur l'informatique et les technologies.