Programmation Mikro C
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Programmation Mikro C



  1. #1
    invite1499a0d3

    Programmation Mikro C


    ------

    Bonjour a tous,

    dans le cadre des PPE ( Projets Personnels Encadrés), nous avons a créer un programme que l'on implantera dans un 16F627A mais le soucis, c'est que j'ai quelques difficultés a finir ce programme.
    En fait, c'est que l'on doit utiliser de l'aléatoire ( plus précisément obtenir une valeur entre 0 et 30 aléatoirement) , en langage C, pas de problème, mais sous mikro C, et bien ce n'est plus les mêmes fonctions et donc je bloque ...
    Si il y a des connaisseurs sur Mikro C, ça me serait vraiment utile !
    Par ailleurs, j'aurais voulu savoir comment on fait un masquage de bit sur un port de sortie ? C'est a dire, je souhaiterait activer ou désactiver certains bits du port sans même modifier la valeur des autres bits. Voila, j’espère avoir été claire dans mon explication =)

    -----

  2. #2
    invite5637435c

    Re : Programmation Mikro C

    Bonsoir,

    tu peux parfaitement créer tes fonctions sans utiliser les fonctions toutes faites de MikroC, si elles ne remplissent pas ce que tu attends.
    Que n'arrives-tu pas à faire exactement?
    @+

  3. #3
    invite1499a0d3

    Re : Programmation Mikro C

    Je n'ai pas beaucoup de connaissance dans la programmation, seulement les bases, et ce que je voulais savoir, c'est comment je peux faire en sorte d'avoir une nombre aléatoire entre 0 et 30.

  4. #4
    invite1499a0d3

    Re : Programmation Mikro C

    Je cherche a savoir comment je peux avoir une variable qui prends une valeur aléatoirement (pseudo-aléatoire m'ira tres bien, je ne veux pas forcément de l'aléatoire pur ) entre 0 et 30. Je sais que en C, il y a les fonction rand, srand, et time pour pouvoir avoir un pseudo-aléatoire mais sous mikroc, ces fonctions n'existent pas et ce n'est pas avec mes connaissances que je vais pouvoir les réecrire sous mikroc ...

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

    Re : Programmation Mikro C

    Tu peux te servir de l'horloge du PIC en incrémentant une valeur de 0 à 65535 par exemple.
    La variable de type unsigned int contiendra une valeur qui changera à la vitesse du quartz.
    Au moment où tu vas lire cette valeur elle aura une chance sur 65536 de réapparaitre.
    Si tu veux te limiter de 0 à 30 tu peux lorsque tu lis la valeur lui faire subir un traitement pour ne conserver qu'un résultat compris entre 0 et 30.
    Par exemple tu lis 2345, tu divises par 100 et tu gardes 23
    C'est simple à faire en C.
    Si la valeur revient avec le même résultat tu refais une pioche, ou plusieurs... à la vitesse que cela tourne tu auras quelque chose qui devrait être pas trop mal.

    A toi de jouer.

  7. #6
    invite1499a0d3

    Re : Programmation Mikro C

    D'accord, mais le compteur doit fonctionner en fond de tache, mais comment on fait ?
    Merci de m'aider =)

  8. #7
    invite5637435c

    Re : Programmation Mikro C

    Oui pour cela tu dois te servir d'un compteur qui s'incrémentera au rythme de l'horloge.
    Il faut que tu regardes dans la datasheet de ton PIC dans la section TIMER, c'est indispensable pour comprendre comment il fonctionne.
    Demain je regarderais pour te donner un exemple de ce dont je t'ai parlé.
    @+

  9. #8
    invite1499a0d3

    Re : Programmation Mikro C

    Merci beaucoup de m'aider !

  10. #9
    RISC

    Re : Programmation Mikro C

    Salut,

    Toutes les réponses à tes questions se trouvent dans le manuel de ton compilateur.
    Si tu ne l'as pas, tu peux le télécharger sur le site de Mikroelektronika : http://www.mikroe.com/

    a+

  11. #10
    invite5637435c

    Re : Programmation Mikro C

    Oui en effet RISC à raison, si tu regardes dans les fonctions intégrées du compilo tu y trouves "Ansi C StdLib Library" et la fonction rand et srand s'y trouvent.

    @+

  12. #11
    invite1499a0d3

    Re : Programmation Mikro C

    Du coup, je n'ai pas trouvé de solution avec les fonctions de mikro c, j'ai créé un aléatoire avec le fonctionnement du système en lui-même ! Merci quand même d'avoir essayé de m'aider ! Bonne continuation sur ce forum

  13. #12
    invite1499a0d3

    Re : Programmation Mikro C

    Re bonjour a tous,
    je reviens vers vous car mon prof m'a donné une astuce pour pouvoir faire un pseudo aléatoire avec le pic que j'utilise. Je m'explique, en fait, il suffirait d'utiliser le convertisseur analogique numerique du µc et de mettre a la broche du convertisseur une antenne pour pouvoir chopper tous les parasites, et pars la, avoir une valeur aléatoire en numerique ! Je me suis donc penché sur les registre concernant le convertisseur A/D du 16F876, et je viens vers vous pour savoir si mon petit bout de programme semble correct :

    adcon0=0b11000101;
    adcon1=0b10000101;
    [...] moment d'attente (c'est particulier au systeme)
    adcon0.F2=0;
    i=(ADRESL*6);

    Je veux donc savoir si ma variable i prendra bien une valeur entre 0 et 1530 ? Sachant que j'ai configuré mon A/D avec Vref -=VSS et vref+=Ra3=2V ( avec pont diviseur de tension bien sur ^^)

    J'espere que vous pourrez m'aider =)

  14. #13
    invite5637435c

    Re : Programmation Mikro C

    Bonsoir,

    la valeur ne prendra pas n'importe quelle valeur, en tout cas pas de 0 à 1530 car le bruit sera toujours présent.
    Cela dit ça reste une idée à exploiter et à paufiner.

    Tu ne dois pas mettre à 0 le bit 2 de ADCON0, ce bit est automatiquement mis à 0 à la fin de la conversion.
    Par contre tu dois déclarer préalablement TRISA en entrée (TRISA.F0=1) au moins sur An0 puisque ton code indique que c'est celle-ci que tu as choisis.

    Il faut également déclarer des choses pour autoriser les interruptions:

    Effacer le bit ADIF
    Mettre ADIE à 1
    Mettre PEIE à 1
    GEIE à 1

    Complète ton code dans ce sens et reviens poster l'ensemble de ce code.
    @+

  15. #14
    invite1499a0d3

    Re : Programmation Mikro C

    trisa.F0=1;
    adcon0=0b11000101;
    adcon1=0b10000101;
    ADIF=0;
    ADIE=1;
    PEIE=1;
    GEIE=1;
    [...] moment d'attente (c'est particulier au systeme)
    i=(ADRESL*6);

    C'est deja mieux ? Mais en faisant cela, j'aurais vraiment pas un pseudo aléatoire ?
    Que faut-il que je fasse pour l'améliorer tout en restant dans cet esprit d'aléatoire ?

Discussions similaires

  1. Compilateur C Mikro C
    Par invited94a265e dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 12/01/2011, 16h23
  2. mikro tik
    Par invite7bb02486 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 1
    Dernier message: 07/10/2010, 15h05
  3. programmation
    Par invite6f203588 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 27/02/2009, 22h18
  4. programmation CAN
    Par invite48a7b274 dans le forum Électronique
    Réponses: 1
    Dernier message: 04/02/2008, 11h51
  5. Programmation
    Par invite91020776 dans le forum Électronique
    Réponses: 1
    Dernier message: 17/07/2006, 18h12
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...