[Exercices] microcontroleur PIC
Répondre à la discussion
Affichage des résultats 1 à 26 sur 26

microcontroleur PIC



  1. #1
    invite27404bee

    microcontroleur PIC


    ------

    Bonjour,
    je débute avec les microcontroleurs et je dois répondre à ces questions:

    Q1 : Quelles descriptions convient au mieux au langage de programmation MikroC ?

    1) C’est un langage haut niveau permettant au PIC d’exécuter directement des programmes C.
    2) Permet de faire plus ou moins une abstraction de l’architecture interne du PIC.
    3) Permet la description d’un problème selon les termes du microcontrôleur.
    4) Permet d’augmenter les jeux d’instructions des PIC à architecture RISC.
    j'ai choisi les réponses 1,2 et 4

    Q2 : L’avantage d’un microprocesseur à architecture RISC par à un autre à architecture CISC est que?
    1) La programmation des microprocesseurs RISC est moins complexe que ceux en CISC.
    2) La taille d’un programme pour un microprocesseur RISC est beaucoup plus réduite.
    3) Le cycle d’instruction des microprocesseurs RISC est plus court.
    4) Les microprocesseurs RISC sont les plus répandus.
    j'ai choisi les réponses 1,3 et 4

    Q3 : Quelles intructions choisir pour informer le PIC 16F887 que les broches RB1 et RB6 seront utilisée comme sorties numériques?
    1) TRISB = 0;
    2) TRISB = 0x10111101
    3) TRISB = 0x3D
    4) TRISB = 0x2B
    j'ai choisi les réponses 3 et 4

    Q4 : Un programmeur en MikroC souhaite calculer la valeur moyenne de lecture de 5 entrées analogiques. En supposant que le montage électronique est correct, quelle affirmation décrit correctement le code ?

    Code:
    int i;
    float ave, sum;
    sum = 0.0;
    for ( i=1; i<=5; i++) {
    sum = sum + ADC_Read(5);
    }
    ave = float(sum)/5.0;
    1)La portion de code contient une erreur et ne va pas se compiler
    2) La portion de code se compile, mais le compteur de boucle i ne va pas fonctionner correctement
    3) La portion de code se compile et le montage fonctionne, mais renvoie une valeur incorrecte parce que la plage de tension des entrées n’est pas incluse dans le calcul de ave.
    4) Le montage fonctionne, mais produit une valeur incorrecte, car la variable sum ne peut pas s’ajouter elle-même.
    5) La portion de code calcule correctement la moyenne.
    j'ai choisi la réponse 5.

    Q5 : La photorésistance de la figure ci-dessous une tension de 0,901V lorsqu’elle est exposée à la lumière venant de la fenêtre. Quelle est la valeur numérique renvoyée par la fonction ADC_Read(pin)?
    1) 0,901
    2) 901
    3) 184
    4) 1
    5) Aucune
    Figure:
    Nom : img.png
Affichages : 297
Taille : 19,9 Ko

    j'ai choisi la réponse 3.

    Est-ce que mes réponses sont correctes?
    Merci d'avance!

    -----

  2. #2
    Antoane
    Responsable technique

    Re : microcontroleur PIC

    Bonsoir,
    Citation Envoyé par tlop Voir le message
    Q1 : Quelles descriptions convient au mieux au langage de programmation MikroC ?

    1) C’est un langage haut niveau permettant au PIC d’exécuter directement des programmes C.
    2) Permet de faire plus ou moins une abstraction de l’architecture interne du PIC.
    3) Permet la description d’un problème selon les termes du microcontrôleur.
    4) Permet d’augmenter les jeux d’instructions des PIC à architecture RISC.
    j'ai choisi les réponses 1,2 et 4
    Lorsque tu programmes en C, c'est du C qui est enregistré dans la mémoire "programme" du microcontroleur ?
    Qu'est ce qu'un compilateur ?

    Q3 : Quelles intructions choisir pour informer le PIC 16F887 que les broches RB1 et RB6 seront utilisée comme sorties numériques?
    1) TRISB = 0;
    2) TRISB = 0x10111101
    3) TRISB = 0x3D
    4) TRISB = 0x2B
    j'ai choisi les réponses 3 et 4
    Il faut les lignes 3 et 4 ou 3 ou 4 ?
    Que signifie 0x ?
    3D, ca veut dire quoi en binaire ? Et 2B ?

    Q5 : La photorésistance de la figure ci-dessous une tension de 0,901V lorsqu’elle est exposée à la lumière venant de la fenêtre. Quelle est la valeur numérique renvoyée par la fonction ADC_Read(pin)?
    1) 0,901
    2) 901
    3) 184
    4) 1
    5) Aucune
    Figure:
    Pièce jointe 319475

    j'ai choisi la réponse 3.

    Est-ce que mes réponses sont correctes?
    Merci d'avance!
    Sur combien de bit la conversion est-elle faite ?
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  3. #3
    invite27404bee

    Re : microcontroleur PIC

    Citation Envoyé par Antoane Voir le message
    

    Lorsque tu programmes en C, c'est du C qui est enregistré dans la mémoire "programme" du microcontroleur ?
    Qu'est ce qu'un compilateur ?
    je pense que c'est du binaire.Un compilateur traduit le code source en langage machine c'est à dire en binaire.
    Il faut les lignes 3 et 4 ou 3 ou 4 ?
    on a dit "Quelles instructions choisir, je pense que c'est les lignes 3 et 4
    Que signifie 0x ?
    ça indique une notation hexadécimale.
    3D, ca veut dire quoi en binaire ? Et 2B ?
    3D c'est 111101
    2B c'est 101011
    Sur combien de bit la conversion est-elle faite ?
    je ne sais pas

  4. #4
    Antoane
    Responsable technique

    Re : microcontroleur PIC

    Le fichier texte contenant le programme en C : il est enregistré sur ton disque dur sous forme binaire. Est-ce que c'est ce fichier qui sera enregistré dans le Pic ?

    Citation Envoyé par tlop Voir le message
    Q3 : Quelles intructions choisir pour informer le PIC 16F887 que les broches RB1 et RB6 seront utilisée comme sorties numériques?
    1) TRISB = 0;
    2) TRISB = 0x10111101
    3) TRISB = 0x3D
    4) TRISB = 0x2B
    j'ai choisi les réponses 3 et 4
    Pourquoi ?
    Q5 : La photorésistance de la figure ci-dessous une tension de 0,901V lorsqu’elle est exposée à la lumière venant de la fenêtre. Quelle est la valeur numérique renvoyée par la fonction ADC_Read(pin)?
    1) 0,901
    2) 901
    3) 184
    4) 1
    5) Aucune
    Figure:
    Pièce jointe 319475

    j'ai choisi la réponse 3.
    Pourquoi ?

    Pour le reste, c'est pas que c'est bon, c'est que je laisse la main (ca l'est peut-^tre)
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

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

    Re : microcontroleur PIC

    Citation Envoyé par tlop Voir le message
    je pense que c'est du binaire.Un compilateur traduit le code source en langage machine c'est à dire en binaire.
    La réponse Q1-1 est donc fausse, puisque le programme en C n'est pas directement exécuté.

  7. #6
    antek

    Re : microcontroleur PIC

    Citation Envoyé par tlop Voir le message
    on a dit "Quelles instructions choisir, je pense que c'est les lignes 3 et 4
    Pour définir l'état exact d'un port une seule valeur est possible.

  8. #7
    antek

    Re : microcontroleur PIC

    Citation Envoyé par tlop Voir le message
    je ne sais pas
    Alors il faut consulter la datasheet.

  9. #8
    invite27404bee

    Re : microcontroleur PIC

    Donc pour Q3 c'est la réponse 3 qui est la bonne.

  10. #9
    invite27404bee

    Re : microcontroleur PIC

    Pour Q4, la conversion est faite sur 10 bits.

  11. #10
    invite092cb13c

    Re : microcontroleur PIC

    Bonjour

    Pour la question Q5, il me semble qu'il manque une info, utilise t'on une Vref (voir deux) ou pas. Si on ne connait pas cette info, je ne vois pas comment repondre.

    Gilles

  12. #11
    Antoane
    Responsable technique

    Re : microcontroleur PIC

    Bonjour,
    Citation Envoyé par tlop Voir le message
    je pense que c'est du binaire.Un compilateur traduit le code source en langage machine c'est à dire en binaire.
    Un code écrit en C est convertie en "assembleur", c'est à dire en un code n'utilisant que les instructions du jeu d'instruction du pic. C'est fait par le compilateur.
    Cette opération n'est pas triviale, il faut en effet traduire le code haut-niveau en qqch utilisant un nombre assez réduit et d'instruction (RISC) simplifiées.
    Il faut par exemple remplacer un switch case() par une série de if. Il faut jouer avec les variables pour les faire voyager, aussi efficacement possible, entre les différentes cases mémoires et du cache.

    Ensuite, ce code assembleur est convertie, de manière assez simple et évidente en un code binaire compréhensible par le pic.

    Il n'est donc pas question de fournir un fichier C, java, Pascal,... au ipc, seulement ce code issu de l'assembleur.

    Sur combien de bit la conversion est-elle faite ?
    je ne sais pas
    Ca, ajouté à la remarque de gedonet, rend la question ADC_Read(pin) impossible à calculer.
    La réponse se trouve peut-être cependant dans la documentation du compilateur, au paragraphe ADC_Read()
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  13. #12
    antek

    Re : microcontroleur PIC

    Citation Envoyé par tlop Voir le message
    Donc pour Q3 c'est la réponse 3 qui est la bonne.
    B1 et B6 sont bien mis en sortie, mais d'autres aussi !
    Si la question n'est pas exclusive concernant B1 et B6 c'est correct.

  14. #13
    antek

    Re : microcontroleur PIC

    Citation Envoyé par gedonet Voir le message
    Pour la question Q5, il me semble qu'il manque une info, utilise t'on une Vref (voir deux) ou pas. Si on ne connait pas cette info, je ne vois pas comment repondre.
    J'ai supposé que sans précision on utilisait +5V et 0V, donc dans ce cas c'est bon (conversion 10 bit).

  15. #14
    invitefa96bd8f

    Re : microcontroleur PIC

    Tu pourrais faire un récapitulatif des nouveaux résultats à tes questions ?

    Que l'on sache ce qu'il faut corriger encore ou non.

  16. #15
    invite27404bee

    Re : microcontroleur PIC

    Alors pour Q1: j'ai choisi 2) et 4)
    Pour Q3: 3)
    Pour Q5: 3) j'ai utilisé cette formule: Rn=Ve/LSB +1,
    Ve étant l'entrée analogique, Rn la sortie numérique et LSB=5-0/2^10
    Pour les autres questions, mes réponses restent inchangées.

  17. #16
    antek

    Re : microcontroleur PIC

    Citation Envoyé par tlop Voir le message
    Alors pour Q1: j'ai choisi 2) et 4)
    Pour Q3: 3)
    Pour Q5: 3) j'ai utilisé cette formule: Rn=Ve/LSB +1,
    Ve étant l'entrée analogique, Rn la sortie numérique et LSB=5-0/2^10
    Pour les autres questions, mes réponses restent inchangées.
    Je ne comprend pas pourquoi Q1-4 !
    Le jeu d'instruction (langage machine ou assembleur) est figé, je ne vois pas comment un langage évolué pourrait l'enrichir.

    Q3 : la question peut être interprétée

    Q5 : oui

  18. #17
    invite27404bee

    Re : microcontroleur PIC

    Ok, donc j'enlève la réponse 4) pour Q1
    Est-ce que les autres réponses sont correctes?

  19. #18
    invitefa96bd8f

    Re : microcontroleur PIC

    Comme antek, et la question 3 est mal posée, vu que la réponse 1 fonctionne aussi.

    Pour ce qui est de la réponse 2, tu es sur que les 1 et 0 sont précédés de "0x" ?

  20. #19
    invite27404bee

    Re : microcontroleur PIC

    oui,c'est ce qu'on a mis

  21. #20
    inviteeb160de1

    Re : microcontroleur PIC

    Pour Q3, si on veut strictement RB1 et RB6 en sortie, alors c'est réponse 2 (il faut mettre un 0 pour avoir une sortie sur un PIC). Si on ne se soucie pas des autres broches, alors la réponse 1 est valable (et conseillée si les broches sont en l'air, mais ça dépend du circuit !), ainsi que la 3 !

    Pour Q4, il faut que la variable "sum" soit déclarée comme un "int" et non comme un float (elle doit donc aussi être initialisée comme un int et non comme un float) car le resultat de ADCRead n'est probablement pas un float !
    De plus le paramètre dans ADCRead doit être variable et non constant. Par exemple il peut etre "i" si tu lis les entrées 1 à 5...
    Pour la réponse, ça dépend ! Normallement tu auras une erreur en additionnant un float "sum" et un int "ADCRead"). Sauf si ton compilo gère les cast automatiquement...auquel cas tu auras peut etre qu'un warning, et le résultat sera erroné du fait qu'ADCRead lit toujours la meme entrée. Donc peut etre réponse 2 (dans le sens où tu liras toujours la meme entrée, alors que le compteur de boucle lui meme fonctionne bien), mais là c'est une question d'interprétation de l'intitulé ! En tout cas, une chose est sure : c'est mal codé ! Et il est possible qu'aucune des réponses ne convienne !

    Pour Q5, c'est bien réponse 3 si ref = 5V, mais encore une fois ça dépend du schéma !

    Aurélien

  22. #21
    antek

    Re : microcontroleur PIC

    Citation Envoyé par Aurélien Voir le message
    Pour Q3, si on veut strictement RB1 et RB6 en sortie, alors c'est réponse 2 (il faut mettre un 0 pour avoir une sortie sur un PIC). Si on ne se soucie pas des autres broches, alors la réponse 1 est valable (et conseillée si les broches sont en l'air, mais ça dépend du circuit !), ainsi que la 3 !
    C'est un questionnaire avec pièges (je le vois comme ça).

    La réponse 2 est incorrectement écrite, Ox désigne une numération en hexadécimal.
    La réponse 1 n'a pas de préfixe de la base de numération.
    Dernière modification par antek ; 25/07/2016 à 19h17.

  23. #22
    inviteeb160de1

    Re : microcontroleur PIC

    Citation Envoyé par antek Voir le message
    C'est un questionnaire avec pièges (je le vois comme ça).

    La réponse 2 est incorrectement écrite, Ox désigne une numération en hexadécimal.
    La réponse 1 n'a pas de préfixe de la base de numération.
    Bien vu je suis tombé dans le panneau ^^ et bim !

  24. #23
    invite27404bee

    Re : microcontroleur PIC

    je vais prendre en compte vos remarques!
    Merci à tous pour votre aide!

  25. #24
    invitefa96bd8f

    Re : microcontroleur PIC

    Citation Envoyé par Aurélien Voir le message
    Bien vu je suis tombé dans le panneau ^^ et bim !
    Fallait lire #18 tu aurais vu

  26. #25
    invite5637435c

    Re : microcontroleur PIC

    Citation Envoyé par Aurélien Voir le message
    Pour Q4, il faut que la variable "sum" soit déclarée comme un "int" et non comme un float (elle doit donc aussi être initialisée comme un int et non comme un float) car le resultat de ADCRead n'est probablement pas un float !
    De plus le paramètre dans ADCRead doit être variable et non constant. Par exemple il peut etre "i" si tu lis les entrées 1 à 5...
    Pour la réponse, ça dépend ! Normallement tu auras une erreur en additionnant un float "sum" et un int "ADCRead"). Sauf si ton compilo gère les cast automatiquement...auquel cas tu auras peut etre qu'un warning, et le résultat sera erroné du fait qu'ADCRead lit toujours la meme entrée. Donc peut etre réponse 2 (dans le sens où tu liras toujours la meme entrée, alors que le compteur de boucle lui meme fonctionne bien), mais là c'est une question d'interprétation de l'intitulé ! En tout cas, une chose est sure : c'est mal codé ! Et il est possible qu'aucune des réponses ne convienne !

    Bonjour,

    en fait le programme fonctionne, il fait bien la moyenne de 5 mesures d'une même entrée analogique.
    Le cast est fait automatiquement sous MikroC, puisque respectant la norme ANSI, il convertira automatiquement le int en float.
    Par contre il est nécessaire d'introduire un cast manuellement dans le cas de la division de 2 int, un cast sera appliqué sur au moins un des 2 int (par exemple x=i/j; avec i et j déclarés en int devra être écrit x=(float)i/j

    En revanche la ligne:
    Code:
    ave = (float)sum/5.0;
    aurait pu être écrite:
    Code:
    ave = sum/5.0;
    puisque sum est déjà déclarée en float.

    De manière plus pratique on préfère effectuer une moyenne de 4 ou 8 mesures (ou toute puissance de 2) ce qui permet de s'affranchir d'une division et d'avoir recours au décalages et donc les flottants deviennent inutiles:

    Code:
    ave = sum >> 3; division par 8

  27. #26
    invite5637435c

    Re : microcontroleur PIC

    Citation Envoyé par antek Voir le message
    C'est un questionnaire avec pièges (je le vois comme ça).

    La réponse 2 est incorrectement écrite, Ox désigne une numération en hexadécimal.
    La réponse 1 n'a pas de préfixe de la base de numération.
    Il n'y a aucun piège.
    La réponse 1 est tout aussi valable que la 3 si l'on interprète la question de manière inclusive, puisque 0, 0x00 ou b00000000 ou la tête à toto ne change strictement rien, c'est toujours 0 quelque soit la base de numérotation...
    La seule différence est que le compilateur va comprendre que tous les ports sont dirigés en sortie, donc y compris RB1 et RB6.

Discussions similaires

  1. microcontrôleur AVR
    Par invitef8124a74 dans le forum Électronique
    Réponses: 32
    Dernier message: 11/05/2014, 10h36
  2. Choix d'un microcontroleur / carte à microcontroleur
    Par bisou10 dans le forum Électronique
    Réponses: 29
    Dernier message: 25/10/2013, 15h33
  3. Microcontroleur
    Par invite6e6aff15 dans le forum Électronique
    Réponses: 14
    Dernier message: 19/03/2013, 22h02
  4. microcontroleur
    Par invite2f7b8032 dans le forum Électronique
    Réponses: 6
    Dernier message: 28/02/2010, 20h35
  5. microcontroleur PIC??
    Par invite03934d84 dans le forum Électronique
    Réponses: 5
    Dernier message: 20/07/2006, 19h15
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...