Aller au contenu


Photo
- - - - -

modif de fréquence


10 réponses à ce sujet

#1 Rémus

Rémus

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Location:Périgueux

Posté 25 octobre 2005 - 01:09

Salut je suis en train de faire le robot irbot et le programme est fait pour une pic de 20 MHz et un quartz de 20MHz et moi j'ai une pic de 4 MHz et un quartz de même fréquence.
Qu'est que je dois modifier dans le programme (en c) pour que ca marche sachant que la gestion du temps est trés importante.

#2 Fabarbuck

Fabarbuck

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 685 messages

Posté 25 octobre 2005 - 02:22

Salut je suis en train de faire le robot irbot et le programme est fait pour une pic de 20 MHz et un quartz de 20MHz et moi j'ai une pic de 4 MHz et un quartz de même fréquence.
Qu'est que je dois modifier dans le programme (en c) pour que ca marche sachant que la gestion du temps est trés importante.

heuuuu je dirais tout ce qui conscerne les timings...? :lol:

Ca implique donc que tu connaisse bien comment ca marche et que tu captes le programme pour voir ou modifier. La comme ca je ne peux pas te dire, je ne connais pas ce code.
Il se peut aussi qu'il y ait quelque part une macro qui définisse la fréquence CPU, utile pour gérer les timings quelle que soit la fréquence de fonctionnement.
Apres, si le code n'est pas trop long, tu peux ptet poster des extraits... mais je pense que le mieux c'est que toi tu te plonges dedans, que tu tentes de voir tout ce qui est timings et que tu nous postes que ces extraits.
Au fait, pourquoi tu ne peux pas prendre un Q de 20MHz directement...?

#3 Rémus

Rémus

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Location:Périgueux

Posté 25 octobre 2005 - 02:25

ben g déja la pic et le quartz et ca vaut dans les 15 euros alors sije peut faire autrement que racheter d'autre matos ca m'arrengerai beaucoup.

#4 Rémus

Rémus

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Location:Périgueux

Posté 26 octobre 2005 - 09:33

bon je modifie la fréquence de l'horloge mais aprés j'ai:

#define RC5_PULS 889 // durée d'une impulsion RC5 = 889µs

comment l'ordi sait que je parle d'une durée? Puisqu'on défini une durée en µs le fait de changer d'oscillateur ne doit rien changer, c'est ca ou je me plante?

Plus loin on a:

#define VAL_18MS 360 // 360*50=18000µs
et la on défini quoi? une valeur qui vaut 18ms?

#5 Fabarbuck

Fabarbuck

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 685 messages

Posté 26 octobre 2005 - 11:24

Le #define PATATE carotte te permet de remplacer tous les endroits ou il y a PATATE par carotte, c'est tout. Note que PATATE est en maj, ce n'est pas une obligation, juste une habitude saine, puisque tous les noms en majuscules sont pour les constantes.
Ca te permet de te simplifier la vie... par exemple, dans ton cas, je suppose qu'il y a une boucle qui fait genre:
for (i=0;i:D), ca devrait etre pas mal...

pour "VAL_18MS 360 // 360*50=18000µs " c'est pareil, le commentaire apres // explique le choix de la valeur, on prend 360 parce que ce que comptent les trucs qui utilisent VAL_18MS comptent par incréments de 50 us... encore une fois, si tu vas 5 fois moins vite, ce sera par incréments de 10 us, donc il te faut compter 5 fois moins de 'ticks', et mettre 360/5 (idem, prendre la valeur entiere mais j'ai mal au crane pour faire le calcul la comme ca :lol: )

Cela dit, il vaut mieux que tu comprennes le code pour pouvoir etre sur de le modifier correctement... ;)

#6 Rémus

Rémus

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Location:Périgueux

Posté 27 octobre 2005 - 10:15

donc si je met dans un programme

instruction y;
delay x
le programme va executé l'instruction y pendant x µs mais si je met

instruction y;
delay_ms x
le programme va executé l'instruction y pendant x ms?
Mais puisque le microcontroleur connait la fréquence de l'horloge qu'il tourne à 20 ou à 4
si je lui donne une durée en seconde (ou ms,µs,...) ca doit rester fixe non?

Pour les incrémentation qu'est ce que c'est qui déterminent le fait que ce soit tout les 50 µs?Si je le modifie avec la 4 MHz je pourrai retrouver 18ms qui sont nécéssaire pour les servos.

#7 Fabarbuck

Fabarbuck

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 685 messages

Posté 27 octobre 2005 - 11:07

>donc si je met dans un programme
instruction y;
delay x
le programme va executé l'instruction y pendant x µs mais si je met

Non... le uC exécute le code séquentiellement, c'est à dire à la suite. il va donc faire instruction, puis delay. Sauf que delay n'existe pas comme ca, ce n'est qu'une fonction genre "delay_ms(x);"
Il faut une librairie (un ensemble de fonctions) prévues pour. Souvent, ces fonctions reposent sur des constantes que tu définis dans ton programme, par exemple #define CPU_FREQ 4 ou bien 20... et la fonction delay_ms de la lib compte x ms en fonction de la valeur définie pour CPU_FREQ... bon, c'est un exemple pour expliquer le principe, ensuiite ca dépend du code et des lib utilisées...


>Mais puisque le microcontroleur connait la fréquence de l'horloge qu'il tourne à 20 ou à 4
si je lui donne une durée en seconde (ou ms,µs,...) ca doit rester fixe non?
Justement non, il ne connait pas cette fréquence d'horloge!
D'ou l'utilité de faire des calculs toi meme ou d'utiliser une lib qui est adaptée

>Pour les incrémentation qu'est ce que c'est qui déterminent le fait que ce soit tout les 50 µs?Si je le modifie avec la 4 MHz je pourrai retrouver 18ms qui sont nécéssaire pour les servos.

La manière de faire l'incrémentation et la fréquence d'horloge... je ne peux que te conseiller de lire la doc du uC, la datasheet... c'est en anglais, mais ca se comprend pas trop mal. Au pire, prends le cours de Bigonoff qui explique tout ca en détail... en attendant que le cours de fabarbuck soit écrit et disponible ;)
Pour info, il y a mieux pour gérer des servos que de faire comme ca... mais c'est un autre débat ;)
Il faut quoi au juste dans ton programme comme fonctionnalités?

#8 Rémus

Rémus

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Location:Périgueux

Posté 27 octobre 2005 - 01:07

c'est le programme de irbot qui pilote:
-deux servos
-un systéme de radar par infrarouge
-une fonction télécommande avec le recepteur infrarouge et une télécommande de télévision
-un systéme de recharge de batterie avec un chargeur-balise qui attire irbot lorsque il détecte une tesion faible au borne de sa batterie
-il joue de la musique (joyeux anniversaire dans le programme d'origine)
-détecte les collisions par switch pour les objets qui ne réfléchissent pas les infrarouges
-il peut enregistrer un parcour et le refaire en autonome en le placant au point de départ

Finalement je crois que vais casser ma tirelire Image IPBcar c trop compliquer en plus que le compilateur que j'utilise est une version d'essai limitée et le programme de Irbot est trop long (11 pages). Il faut que j'en trouve un autre tu sais pas ou je pourai trouver ca?

P.S: Tu prépare un cour de programmation? C'est pour quand?

#9 Fabarbuck

Fabarbuck

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 685 messages

Posté 27 octobre 2005 - 01:31

Ok, j'ai déja vu ce site en fait...

Il y a beaucoup de fonctionnalités, et tu n'as absolument pas besoin de toutes dans un premier temps!
Tu as quoi comme matériel à disposition? tu as fait quels tests déja?

Tu peux déja piloter un seul servo, ou ne serait-ce que faire clignotter une led, ca t'aiderait à capter comment tout ca fonctionne... c'est pas hyper simple quand tu abordes l'ensemble de front, mais petit à petit, c'est déja plus gérable... en plus, tu peux poser toutes les questions qui te passent par la tete, moi, ca m'aide à voir justement quelles questions on se pose quand on aborde ces problèmes, et ca m'aidera à faire une doc d'autant plus efficace par la suite... ;)

Coté logiciels, tu utilises quel compilateur? Il y en a des gratuits et bien foutus pour les PIC (et pour pas mal de uC)... tu as bien un pic, un programmateur et un peu de matos, non?
Donc tu as tout ce qu'il faut pour que ca marche! :)
11 pages c'est long, mais il faut savoir découper ca en parties compréhensibles... si tu captes le but du code, c'est plus clair (diviser pour régner... ;)
(au passage, jme tape du code sur des centaines de pages, je pleure 5mn et je m'y mets... et jpense que les vrais informaticiens se coltinent des trucs nettement plus longs et chauds... ;) )

Vala, et si tu tiens à casser ta tirelire... ben... ya surement des bouquins pas mal à acheter, ou du matos supplémentaire... mais payer parce que tu abandonnes ca ne réglera rien. :/

Pour mon cours... ben j'ai déja celui sur l'initiation à l'élec sur le feu, j'ai quelques notes pour le cours sur les uC, mais ca représente énormément de boulot pour mettre un truc bien foutu sur pieds... j'ai pas un temps infini non plus :)
Et puis je préfère élaborer mes tutos avec des gens pour les tester et ajuster selon ce que ca donne sur mes premiers cobayes.... :D

#10 Rémus

Rémus

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Location:Périgueux

Posté 27 octobre 2005 - 05:32

comme compilateur j'ai une version limitée de CC5x et pic c compileur mais quand je tente de compiler avec ce dernier j'ai un message d'erreur qui me dit que le module pcw
n'est pas installer sur cet ordinateur (traduction approximative).

J'abandonne pas c'est juste sur ce programme que je vais m'ennuyer pendant deux ans
mais c'est trop compliqué pour moi alors je suis les instructions à la lettre. Sinon je sis en train d'apprendre avec des cours style allumer une led. Et si tu cherche un cobaye je suis partant. :)

#11 Fabarbuck

Fabarbuck

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 685 messages

Posté 29 octobre 2005 - 12:51

Je ne connais pas ce compilateur, mais je crois que c'est pas celui qui est conseillé parmi les gratuits... je ne suis pas expert es pic, je préfère leurs concurrents, les avr... donc pour ce qui est pic, je ne peux que te renvoyer à la page des fribottes... fribotte.free.fr

C'est sur que si tu attaques tout de front (le programme entier) tu ne vas pas comprendre. essayes effectivement de faire des choses simples (fais clignotter une led et tu sauras (presque) tout faire).
Lis la datasheet du uC, c'est tres important pour avoir un appercu de ses fonctionnalités. Si tu ne comprends pas, pose des questions, mais connaitre son uC c'est important pour faire de bons programmes.

je veux bien des cobayes, mais.... j'ai déja du boulot pour l'initiation à l'électronique, donc... ca risque d'etre pas pour demain, mon tuto sur les uC. Par contre, j'essayerai de répondre à toutes tes questions... ca me donnera déja un bon appercu des premiers points de départ à aborder pour mon tuto... ;)



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users