Apprendre le langage C pour les PIC ?
Répondre à la discussion
Affichage des résultats 1 à 25 sur 25

Apprendre le langage C pour les PIC ?



  1. #1
    invite1cc104d0

    Post Apprendre le langage C pour les PIC ?


    ------

    Bonjour,
    Pendant mes années de lycée, j'ai appris l'électronique et le fonctionnement d'un PIC et un peu d'assembleur mais je ne me souviens plus trop.
    J'ai des notions de langages informatique ( html, php, css et du C ) mais je ne sais pas l'appliquer pour programmer un PIC.

    Existe-t-il des cours sur le net pour nous indiquer comment programmer un pic en C ? ( gérer les registres, E/S, le CAN, PWM etc.. )

    J'ai telecharger mikroC et mplab mais mikroC à l'air d'utiliser les ports différemment que mplab. ( PORTA.F0 pour selectionner RA0 alors que mplab et d'autres utilisent : PORTA.0 etc.. )

    MikroC fournit une doc mais je n'ai pas trouvé de doc MPLAB qui indique quelles fonctions utilisées.

    Pouvez vous m'aider ?

    Je vous remercie du temps que vous me consacrerez !

    PS : Je compte programmer un pic 16f785 et lire une valeur analogique puis l'afficher sur un afficheur 7sgmts après avoir fait des calculs avec.

    -----

  2. #2
    bertrandbd

    Re : Apprendre le langage C pour les PIC ?

    Bonsoir

    Tu devrais pouvoir tout trouver sur le net
    http://herve.hollard.perso.sfr.fr/prog_pic_c.htm

    sinon tu as des bouquins comme ceux de Tavernier

    A+

  3. #3
    peter pan666

    Re : Apprendre le langage C pour les PIC ?

    Salut

    Vu les connaissances que tu as l'air d'avoir je vois pas trop ce que tu peux apprendre de plus..Essaye de lire la doc de ton PIC directement, tous les registres sont écrit dedans, il suffit de les écrire tel quel dans mplab et de leur assigner la bonne valeur.

  4. #4
    invite1cc104d0

    Re : Apprendre le langage C pour les PIC ?

    merci bertrand, j'ai effectivement lu tous les cours de ce site, ils me paraissent très bien mais ne traitent pas du CAN ni du PWM.

    @ peterpan : Je ne veux plus m'embêter avec l'assembleur vu que je ne me souviens plus trop, et je m'aperçoi que la programmation d'un pic en C diffère en fonction du compilateur utilisé. ( comme dis dans mon premier message, mplab et mikroC gère différamment les ports )
    merci à toi

    Et j'aimerai utiliser mplab mais je ne trouve pas le manuel qui indique comment utiliser les ports, le CAN et le PWM ( surement avec des librairies mais lesquelles.. )

    Mes connaissances sont très limités, je ne me souviens de plus grand chose en assembleur, juste le fonctionnement du pic. Pour ce qui est du C, je le connais pour des programmes et non pas pour programmer un pic.

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

    Re : Apprendre le langage C pour les PIC ?

    Bjr à toi,
    Ce que l'on mets dans un PIC c'est.......un PROGRAMME.
    Donc pas de différence QUE pour ...utiliser des ports,le CAN,le PWM,.....dans un PROGRAMME ...quelconque.
    A toi de bien "désigner" le nom du port etc...
    A+

  7. #6
    invite1cc104d0

    Re : Apprendre le langage C pour les PIC ?

    D'accord, merci bien j'ai vu quelques pages du livre de Tavernier sur la prog en C des pics, je pense l'acheter d'ici peu.

  8. #7
    alainav1

    Re : Apprendre le langage C pour les PIC ?

    bonjour,
    les compilateurs ( C, Basic..) contiennent des instructions pour lire les entrées analogiques .
    une variable contient un nombre entre 0 et 1023 qui représente la tension le ente 0 et 5V après il suffit de traiter .
    le plus délicat est la configuration en amont pour que l'entrée choisie soit configurée pour recevoir de l'analogique et là c'est la datasheet qui te dits les registres à configurer .
    des exemples de programme en C sur le web devraient te dépanner .
    personnellement je programme en basic mas j'ai lu les cours de bigonoff pour savoir comment ça marche .(ça me parait indispensable).
    je me contente aussi de n'utiliser que 3 type de pic (12F683,1F688,16F887) suivant le besoin du programme cela me permet de mieux les connaitre .

    bon courage
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  9. #8
    invite1cc104d0

    Re : Apprendre le langage C pour les PIC ?

    Bonjour,
    Effectivement mais les exemples en C sur le net sont tous différents et ne configurent pas les ports de la même façon.. ( PORTA.F0 pour mikroC, PORTA.0 pour mplab et même RA0 pour certains sans avoir à la déclarer )
    Le cours de bigonoff c'est seulement de l'assembleur... et je connais déjà le fonctionnement d'un PIC.

    Pour le CAN, c'est un 10bits et j'ai une tension de référence sur Vref différente de 5V.

    Bref pour le moment je pense utiliser mikroC qui est le seul à me fournir une doc des librairies.
    Merci

  10. #9
    MiGaNuTs

    Re : Apprendre le langage C pour les PIC ?

    Quitte a programmer en C sur des pic, utilise plutôt des pic18 que des pic16.
    C'est quasiment le meme prix, mais ils sont beaucoup plus "confortables" a utiliser.

  11. #10
    invite1cc104d0

    Re : Apprendre le langage C pour les PIC ?

    Bien sur mais j'en ai en rab et ils suffisent pour mon application mais c'est vrai que faudra que je m'y mette, le jour où je pourrais programmer simplement mon PIC 16 en C.
    Pour moi je n'arrive pas à faire le lien entre un programme en C sur un PC et un programme en C sur un PIC.
    Il y a trop de choses que je ne comprends pas.

  12. #11
    peter pan666

    Re : Apprendre le langage C pour les PIC ?

    La différence entre la programmation d'un PIC et d'un PC c'est essentiellement la configuration des périphériques du PIC..Pour les configurer tu as besoins de la doc de uC, dans la doc y a pas que de l'assembleur.Tu prends la doc tu vas dans la partie ADC (Analog-to-Digital-Converter) et tu regardes quels registres sont à configurer, et comment effectuer la conversion (attention au Tac et bit GO/DONE).

    Ensuite pour répondre à ta question sur mplab, il est très bien à ce niveau là c'est à dire que pour écrire sur un bit d'un registre la forme est la suivante: nom_de_registrebits.nom_du_bit
    Petit exemple tu veux faire ta conversion et tu dois attendre que le bit GO du registre ADCON0 passe à zéro, donc tu écris: while(ADCON0bits.GO==1);
    Et c'est pareil pour tous les registres (PORT, TRIS, ...)

  13. #12
    invite1cc104d0

    Re : Apprendre le langage C pour les PIC ?

    Ah exactement je ne m'en souvenais plus, merci bien, en programmant j'ai pas mal de choses qui reviennent, c'est plaisant

    Je mix un peu car mikroC a un nombre non négligeable de librairies qui permettent de convertir decimal->BCD etc...

    Question en passant : ( pas obligé de répondre, je cherche en même temps )
    Est ce que c'est pareil pour les variables ?
    unsigned int travail
    pour sélectionner le bit 0 ( poids le + faible ) : travail.0 ?
    Mais comment prendre les 4 premiers bits? puis les 4 suivants ?
    Car j'ai une variable en BCD et je souhaiterai la diviser en 3 variables ( pour le chiffre des unités, dizaines et centaines )

    Encore merci

    PS : J'avais appris l'assembleur et les µC en cours et le C pour ma culture personnelle et je ne souhaite pas faire de grandes choses, seulement faire des choses basiques.

  14. #13
    alainav1

    Re : Apprendre le langage C pour les PIC ?

    bonjour,
    le langage C pour pic est un langage adapté au µP donc different du classique pas utilisation de pointeur ...)
    seul les structures classiques sont présentent (if then while ..)
    il est vrai que les 18F sont plus adaptées
    cordialement
    alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  15. #14
    peter pan666

    Re : Apprendre le langage C pour les PIC ?

    Alors pour les variables je pense pas que ça marche comme ça, c'est à essayer..

    Pour récupérer plusieurs bit tu vas être obligé de faire des masques et des rotations.

    Je m'explique, tu as une variable x=0b01101001 tu veux récupérer les 4 MSBs x=x>>4 (rotation de 4bits vers la droite)

    Si tu veux récupérer seulement les LSBs alors x=x&00001111 (masque qui permet de mettre les LSBs à 0)

  16. #15
    invite1cc104d0

    Re : Apprendre le langage C pour les PIC ?

    Arf c'étais pas comme dans mes souvenirs et je n'avais jamais utilisé ça...

    Et donc pas possible de modifier qu'un seul bit d'une variable comme PORTA.4 = 1; !?
    mais obligatoirement comme ceci :

    a = 0b00110011;
    Je veux mettre le 3ème LSB à 1 peu importe sa valeur initiale :
    a=(a&11111011) | 00000100;
    // ça me donnera : 0b00110111
    // On ne doit pas mettre 0b devant les 8bits.

    J'ai compris, je vais devoir me faire des petites macro si je veux utiliser souvent ce genre de choses.

    Et pour pouvoir faire un décodeur BCD -> 7 segments ?
    J'ai bien les équations mais ça ne fonctionnera pas car issues de tables de Karnaugh..
    E0 .. E3 4 premiers bits d'une variable. ( et !E0 ne signifie pas la même chose en C, le ! inverse le bit or moi je veux dire si le bit = 0 .. )
    a = E3 | (!E0 & !E2) | (E1 & !E2) | (E2 & E0)
    b = !E2 | (!E0 & !E1) | (E0 & E1)
    c = !E1 | E0 | E2
    d = (!E0 & !E2) | (!E0 & E1) | (E1 & !E2) | (E0 & !E1 & E2)
    e = (!E0 & !E2) | (!E0 & E1)
    f = (!E0 & !E1) | (!E0 & E2) | E3 | (!E1 & E2)
    g = (E1 & !E2) | (!E1 & E2) | E3 | (!E0 & E2);


    Merci bien peter_pan de ton aide et de ta patience !!

  17. #16
    peter pan666

    Re : Apprendre le langage C pour les PIC ?

    Je viens de voir que j'ai fais de grosses erreurs.. x=x&0b00001111 (masque qui permet de mettre les MSBs à 0) c'est mieux comme ça!

    PORTA c'est pas une variable, c'est un registre donc tu peux modifier les bits de ce registre comme je l'ai expliqué.

    Pour ton exemple a=00110x11 (je met "x" pour dire qu'on ne connait pas à l'avance sa valeur) si on veut le forcer à 1, alors a=a|0b00000100

  18. #17
    invite1cc104d0

    Re : Apprendre le langage C pour les PIC ?

    Ah oui lol mince effectivement, même pas besoin de ET...
    On doit mettre le '0b' devant.
    D'accord je te remercie !!

  19. #18
    peter pan666

    Re : Apprendre le langage C pour les PIC ?

    Ensuite pour ton décodeur, si tu veux récupérer le bit 3 de a et le stocker dans E3 alors

    Code:
    char E3=0,a;//On initialise E3 de type char à 0 et on crée la variable a qui va être modifié par un périphérique
    
    //on suppose que a, a été modofié
    
    E3=(a>>4)&0b00000001;//On fait 4 rotations de a vers la droite pour avoir le bit 3 de a sur le bit 0 on fait ensuite un AND avec le masque
    Dans l'idée ça doit être un truc comme ça..A part si on peut récupérer directement le bit de la variable comme avec les registres mais là je suis pas trop sur il faudrait l'avis de quelqu'un d'autre..

  20. #19
    invite1cc104d0

    Re : Apprendre le langage C pour les PIC ?

    D'accord, je ne cherche pas à avoir forcément tout de suite la solution, tu m'as déjà bien mis sur la piste.
    J'ai au pire une autre idée.. avec des if imbriqués mais je suis pas sur que niveau taille et niveau rapidité, ça puisse être le top.

    Bref en tout cas je te remercie de tous tes éclaircissements et de ton aide, j'y vois déjà beaucoup plus clair !

  21. #20
    RISC

    Re : Apprendre le langage C pour les PIC ?

    Salut,

    Le C18 version Lite est gratuit et possède plein de librairies (pour tous les périphériques) si tu ne souhaites pas programmer au niveau des registres.
    Il suffit de le télécharger ( http://www.microchip.com/Compilers ).
    Il existe de bons tutoriels ici sur le C18 : http://www.aix-mrs.iufm.fr/formation...indexPIC_C.htm

    Pour les librairies, un fois que tu as installé le compilateur tu les trouveras dans le manuel appelé "PIC18F Peripheral Library Help Document.chm" que tu trouveras dans ce répertoire : c:\Program Files\Microchip\mplabc18\v3.37 .01\doc\

    a+

  22. #21
    invite1cc104d0

    Re : Apprendre le langage C pour les PIC ?

    Mais C18 n'est que pour les 18f moi je programme un 16f.

    Mais merci quand même, ça me sera utile lorsque je passerai aux 18F

  23. #22
    MiGaNuTs

    Re : Apprendre le langage C pour les PIC ?

    Une fonction genre
    Bool testbit(int variable, int bitnumero);
    Qui retourne 1 ou 0 en fonction du bit x de ta variable,
    Associée a 1 fonction
    Int setbit (int variable, int bitnumero, bool etat)
    Pour mettre a 1 ou a 0 le bit de la variable machin,
    Et hop, tu te facilite le boulot pour ton programme.

  24. #23
    Laboum

    Re : Apprendre le langage C pour les PIC ?

    Bonsoir laofibonacci,
    Citation Envoyé par laofibonacci Voir le message
    Mais C18 n'est que pour les 18f moi je programme un 16f.
    Attention ne pas confondre, compilateur et type de µC
    Bonne chance

  25. #24
    invite1cc104d0

    Re : Apprendre le langage C pour les PIC ?

    Citation Envoyé par Laboum Voir le message
    Bonsoir laofibonacci,

    Attention ne pas confondre, compilateur et type de µC
    Bonne chance
    Bonsoir pourtant sur le site de microchip, il y a bien marqué que c18 est fait pour les PIC18.

  26. #25
    Laboum

    Re : Apprendre le langage C pour les PIC ?

    Bonjour laofibonacci,
    Désolé autant pour moi, je craignais qu'il y avait un malentendu
    Bonne continuation

Discussions similaires

  1. recherche des sources pour apprendre le langage VHDL
    Par invite5a19e27a dans le forum Électronique
    Réponses: 3
    Dernier message: 16/12/2010, 08h17
  2. Apprendre les PIC
    Par jules dans le forum Électronique
    Réponses: 9
    Dernier message: 15/10/2008, 08h30
  3. Apprendre un langage informatique (C++)
    Par invite2a4cb7f8 dans le forum Programmation et langages, Algorithmique
    Réponses: 13
    Dernier message: 02/09/2008, 12h59
  4. Que me conseillez vous pour apprendre les Pic?
    Par alex934mas dans le forum Électronique
    Réponses: 10
    Dernier message: 19/06/2007, 20h49
  5. Progammer les PIC en langage C
    Par invite2de8d382 dans le forum Électronique
    Réponses: 8
    Dernier message: 30/10/2006, 18h27
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...