comment fonctionne un microcontroleur?
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

comment fonctionne un microcontroleur?



  1. #1
    munsterkiler

    comment fonctionne un microcontroleur?


    ------

    bonsoir,

    je ne sais pas exactement comment poser ma question,
    en gros j'aimerai connaitre le fonctionnement au niveau electonique, enfin avec les transistors et tout comment cela fonctionne-t-il? comment fait on fonctionner le 'binaire' enfin comment peut on créer un signal en binaire voulu, et avoir des composant qui 'decryptent' le signal?

    enfin j'espere que c'est assez clair

    merci

    -----

  2. #2
    invite87420132543
    Invité

    Re : comment fonctionne un microcontroleur?

    Bonsoir,

    En quelques mots, un microcontroleur c'est une carte mère de PC en miniature.
    Les transistor fonctionnent en bloqué/saturé, et il en faut des centaines de milliers sinon des millions pour réaliser toutes les fonctions du microcontroleur.

    Un programme est stocké en mémoire et est décodé étape par étape à la vitesse de fonctionnement de l'horloge.
    Le microcontroleur possède des entrées /sorties pour pouvoir interagir avec l'extérieur, par exemple avec des capteurs ou des afficheurs.
    Ceci est toujours fait à la demande du programme.
    Il peut aussi stoker des variables temporaires en mémoire.

    Celui-ci fonctionne selon l'architecture de Von Neumann

    Voilà en résumé, sinon tu peux toujours lire l'article de Wikipedia sur les microcontroleurs
    http://fr.wikipedia.org/wiki/Microcontr%C3%B4leur

  3. #3
    PA5CAL

    Re : comment fonctionne un microcontroleur?

    Bonjour

    Un microcontrôleur est un processeur miniaturisé (d'où le préfixe «micro-») associé sur la même puce à des circuits d'interface qu'on trouve habituellement (i.e. dans les microprocesseurs) sur des puces séparées.

    Les processeurs modernes sont composés essentiellement de circuits numériques basiques à transistors, que l'on peut réduire à quelques fonctions logiques simples (NON, NON-ET, NON-OU), lesquelles peuvent être associées pour obtenir n'importe quelle fonction numérique complexe, combinatoire ou séquentielle : ET, OU, OU exclusif, additionneur, décodeur, multiplexeur, démultiplexeur, bascules (mémoires et diviseurs de fréquence), compteurs, séquenceur, etc.).

    La base d'un processeur moderne est un séquenceur permettant, par une succession d'opérations simples, de lire séquentiellement le contenu d'une mémoire externe représentant la suite des opérations complexes à effectuer (appelée programme).

    Les opérations simples consistent à faire communiquer entre eux les différents éléments du processeur, c'est-à-dire les registres (mémoire interne), les unités arithmétiques ou logiques et les interfaces vers l'extérieur, afin faire circuler, de transformer et stocker l'information constituée par les niveaux logiques des circuits.

    Les opérations complexes permettent de manipuler le contenu des mémoires internes et externes représentant les informations à traiter (appelées données), et d'effectuer des choix (opérations conditionnées par des tests sur des niveaux logiques).


    Ceci n'est qu'un rapide résumé, puisque le sujet détaillé tiendrait difficilement dans plusieurs centaines de pages. Ce forum n'est donc pas le lieu pour le développer.

    Pour plus d'informations, il serait préférable de t'orienter vers des cours ou des ouvrages spécialisés, et de rechercher sur Internet les termes que tu ne comprends pas ou que tu souhaiterais détailler, à l'aide de ton moteur de recherche habituel (Google, Yahoo ou autre).

    .
    Dernière modification par PA5CAL ; 15/10/2010 à 10h14.

  4. #4
    PIXEL

    Re : comment fonctionne un microcontroleur?

    ce cours (gratuit !) fait un bon rappel de l'électronique logique :

    http://www.abcelectronique.com/bigon....php?par=b1955

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

    Re : comment fonctionne un microcontroleur?

    donc en fait ce ne sont que des transistors, qui forment des fonctions logiques, qui composent la puce?
    mais comment la puce fait-elle pour savoir quel transistors utiliser dans quels cas?
    y'a t'il une espece de "cerveau" qui dirige les operations? qu'est ce qui fait que le circuit va faire intervenir tel ou tel transistor?

    enfin en gros, comment on passe du programme sur l'odinateur, aux fonctionnement avec les transistors dans la puce?

    merci

  7. #6
    Jack
    Modérateur

    Re : comment fonctionne un microcontroleur?

    Le mieux est de commencer par étudier les fonctions logiques de base: combinatoires et séquentielles. Sinon, toutes les explications risquent de ne pas te parler.

    A+

  8. #7
    PA5CAL

    Re : comment fonctionne un microcontroleur?

    Citation Envoyé par munsterkiler Voir le message
    donc en fait ce ne sont que des transistors, qui forment des fonctions logiques, qui composent la puce?
    Oui.
    Citation Envoyé par munsterkiler Voir le message
    mais comment la puce fait-elle pour savoir quel transistors utiliser dans quels cas?
    y'a t'il une espece de "cerveau" qui dirige les operations? qu'est ce qui fait que le circuit va faire intervenir tel ou tel transistor?
    C'est le séquenceur qui fait ce travail. Ce séquenceur est un circuit assez simple qui permet de déclencher les unes après l'autres les portes logiques nécessaire à la réalisation des opérations.

    Si tu veux avoir une idée un peu plus précise de son fonctionnement, je te suggère de t'intéresser au Graphcet et aux petits automates industriels (électromécaniques, pneumatiques ou électroniques, peu importe).
    Citation Envoyé par munsterkiler Voir le message
    enfin en gros, comment on passe du programme sur l'odinateur, aux fonctionnement avec les transistors dans la puce?
    Une partie du fonctionnement du séquenceur assure la lecture séquentielle du contenu de la mémoire qui renferme le programme. Une autre partie de son fonctionnement est réglée par la valeur de ce contenu, et permet ainsi d'exécuter chaque opération du programme.

  9. #8
    invite87420132543
    Invité

    Re : comment fonctionne un microcontroleur?

    Citation Envoyé par munsterkiler Voir le message
    y'a t'il une espece de "cerveau" qui dirige les operations? qu'est ce qui fait que le circuit va faire intervenir tel ou tel transistor?
    L'élément central d'un µC ou d'un µP est l'unité arithmétique et logique.
    Elle est chargée de décoder le programme à la vitesse de l'horloge.

    Il y a des schémas sur le lien qui montrent l'intérieur d'une UAL à partir des portes logiques, et donc eux mêmes composés de transistors.

  10. #9
    mp3dux

    Re : comment fonctionne un microcontroleur?

    Citation Envoyé par Jack Voir le message
    Le mieux est de commencer par étudier les fonctions logiques de base: combinatoires et séquentielles. Sinon, toutes les explications risquent de ne pas te parler.

    A+
    Oui, au moins les bases c'est à dire comment faire une addition avec des circuits logiques par ex.

    Sinon, déjà commencer par ne pas confondre microcontrôleur et microprocesseur.


    Citation Envoyé par munsterkiler Voir le message
    donc en fait ce ne sont que des transistors, qui forment des fonctions logiques, qui composent la puce?
    les transistors permettent de réaliser pratiquement tout, résistance, capa, diode, interrupteur, amplification, mémoire, ..., et surtout en combinant des transistors on peut réaliser des circuits logiques qui sont à la base des unités de calcul.

    http://en.wikipedia.org/wiki/Transistor_count

    dsl c'est en Anglais, mais ce qui est intéressant c'est qu'on voit qu'avec 4 transistors on peut réaliser un NAND.

    (Comprend juste qu'avec le câblage des NAND on peut réaliser la plupart des fonctions logiques qui serviront à l'addition, soustraction, multiplication etc.)

    Quand tu lis que la puce RV870 à la base des cartes graphiques 5870 contient plus de 2 Milliards de transistors tu peux comprendre aisément combien un processeur peut se moquer du calcul.

    Citation Envoyé par munsterkiler Voir le message
    mais comment la puce fait-elle pour savoir quel transistors utiliser dans quels cas?
    y'a t'il une espece de "cerveau" qui dirige les operations? qu'est ce qui fait que le circuit va faire intervenir tel ou tel transistor?

    enfin en gros, comment on passe du programme sur l'odinateur, aux fonctionnement avec les transistors dans la puce?

    merci
    je te répondrai par une autre question.
    Quand tu marches en posant un pied devant l'autre, quels sont les muscles ou les nerfs que tu activent et dans quel ordre ?

    Il y en a un grand nombre! mais tu ne t'en rends même pas compte, mais ton cerveau sait lesquels.
    Tu envoies un ordre qui est poser un pied devant l'autre et ton cerveau actionne ce qu'il faut. Ce n'est pas toi qui t'occupe d'actionner les muscles 1 après l'autre dans une séquence et un timing parfait.

    Un processeur il fait pareil, pour une multiplication, produit scalaire, comparaison, copie etc. Les ensembles de transistors réalisant chaque opération sont définis par avance lors que la conception.

    Ce qui fait qu'on a plusieurs circuits logiques (déjà câblés) pour faire des opérations plus complexes.

    Ensuite tous ces opérations élémentaires sont enregistrées dans la mémoire interne non volatile de processeur sous forme de code binaire. Chaque code correspondant une opération particulière.

    Comme une télécommande en fait, tu appuis le 1 tu as la chaîne correspondante, le 2 tu a las chaîne enregistrée sur le 2.

    Le processeur en gros, il fait que exécuter comme un robot, il reçoit un code, il voit à quelle opération ça correspond dans sa table(mémoire interne non volatile de processeur) il exécute et il
    passe au code suivant, ainsi de suite.

    Ce fameux code est généré par le compilateur de ton programme, c'est pour cela que le compilateur a besoin des fois qu'on lui indique le processeur cible s'il ne le connait pas.

    bon voilà, j'espère que j'ai été à peu près correct

  11. #10
    PA5CAL

    Re : comment fonctionne un microcontroleur?

    Voici un exemple concret de programme exécuté sur un processeur 6502 (dont on peut trouver la liste des instructions par ici).

    L'architecture du 6502 est la suivante :




    En langage évolué, le programme à exécuter est :
    Code:
    z = x + y
    où x, y et z sont des octets situés dans la mémoire respectivement aux adresses $0128, $0129 et $012A.

    Ce programme est traduit en langage assembleur 6502 par les instructions suivantes :
    Code:
    Mnémonique    Signification
    ----------- ---------------------------------------------------
    LDA $0128   copie le contenu de la mémoire située à l'adresse
                 $0128 dans le registre A
    CLC         réinitialise la retenue
    ADC $0129   additionne la valeur du contenu de la mémoire
                 située à l'adresse $0129 avec celle du registre A
    STA $012A   copie le contenu du registre A vers la mémoire
                 située à l'adresse $012A
    Une fois compilée, ces instructions donnent les codes suivants en langage machine :
    Code:
    Adresse Code Mnémonique
    ------- ---- ----------
    $0355   $AD   LDA $0128
    $0356   $01
    $0357   $28
    
    $0358   $18   CLC
    
    $0359   $6D   ADC $0129
    $035A   $01
    $035B   $29
    
    $035C   $8D   STA $012A
    $035D   $01
    $035E   $2A
    Au final, le séquenceur réalisera les opérations suivantes :

    LDA $0128 :
    - Place le contenu du Pointeur de programme ($0355) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données et enregistre la valeur ($AD) en tant que code de l'instruction (LDA)
    - Incrémente le Pointeur de programme
    - Met le contenu du Pointeur de programme ($0356) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données et enregistre la valeur ($01) en tant que poids fort de l'adresse cible
    - Incrémente le Pointeur de programme
    - Place le contenu du Pointeur de programme ($0357) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données et enregistre la valeur ($28) en tant que poids faible de l'adresse cible
    - Place l'adresse cible ($0128) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données et enregistre la valeur (x) dans le registre A
    - Incrémente le Pointeur de programme

    CLC :
    - Place le contenu du Pointeur de programme ($0358) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données et enregistre la valeur ($18) en tant que code de l'instruction (CLC)
    - Met à zéro le bit de retenue

    ADC $0129 :
    - Place le contenu du Pointeur de programme ($0359) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données et enregistre la valeur ($6D) en tant que code de l'instruction (ADC)
    - Incrémente le Pointeur de programme
    - Met le contenu du Pointeur de programme ($035A) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données et enregistre la valeur ($01) en tant que poids fort de l'adresse cible
    - Incrémente le Pointeur de programme
    - Place le contenu du Pointeur de programme ($035B) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données et enregistre la valeur ($29) en tant que poids faible de l'adresse cible
    - Place l'adresse cible ($0129) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données, place la valeur (y) sur l'entrée 1 de l'unité arithmétique
    - Place le contenu du registre A (x) sur l'entrée 2 de l'unité arithmétique
    - Signale une lecture de la mémoire
    - Lit la sortie "addition" de l'unité arithmétique (x+y) et enregistre la valeur dans le registre A
    - Incrémente le Pointeur de programme

    STA $012A :
    - Place le contenu du Pointeur de programme ($035C) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données et enregistre la valeur ($8D) en tant que code de l'instruction (STA)
    - Incrémente le Pointeur de programme
    - Met le contenu du Pointeur de programme ($035D) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données et enregistre la valeur ($01) en tant que poids fort de l'adresse cible
    - Incrémente le Pointeur de programme
    - Place le contenu du Pointeur de programme ($035E) sur le bus d'adresse
    - Signale une lecture de la mémoire
    - Lit le bus de données et enregistre la valeur ($2A) en tant que poids faible de l'adresse cible
    - Place l'adresse cible ($012A) sur le bus d'adresse
    - Place la valeur du registre A (x+y) sur le bus de données
    - Signale une écriture de la mémoire
    - Incrémente le Pointeur de programme


    (Pointeur de programme = PC ; registre A = Accumulator)
    .
    Dernière modification par PA5CAL ; 16/10/2010 à 00h49.

  12. #11
    PA5CAL

    Re : comment fonctionne un microcontroleur?

    Citation Envoyé par ours.des.carpates Voir le message
    L'élément central d'un µC ou d'un µP est l'unité arithmétique et logique.
    Elle est chargée de décoder le programme à la vitesse de l'horloge.
    L'élément central d'un processeur (et plus généralement de n'importe quel automate), c'est le séquenceur.

    En donnant les ordre à l'ensemble du système, le séquenceur constitue en quelque sorte son cerveau.

    L'ALU qui reçoit ces ordres n'est finalement assimilable qu'à des jambes (d'ailleurs, pour certains types de traitements, on peut très bien envisager des processeurs n'intégrant pas d'ALU).

  13. #12
    PA5CAL

    Re : comment fonctionne un microcontroleur?

    Oups... dans le post #10, vers la fin j'ai oublié un "- Incrémente le Pointeur de programme" à la fin de la partie de la séquence correspondant à "CLC", juste avant celle correspondant à "ADC $0129".



    .
    Dernière modification par PA5CAL ; 16/10/2010 à 01h10.

  14. #13
    Jack
    Modérateur

    Re : comment fonctionne un microcontroleur?

    Citation Envoyé par ours.des.carpates Voir le message
    L'élément central d'un µC ou d'un µP est l'unité arithmétique et logique.
    Elle est chargée de décoder le programme à la vitesse de l'horloge.
    Ce n'est pas l'ALU qui décode le programme. Un µprocesseur possède effectivement un ALU mais également une unité de commande à qui est dévolu le travail de décodage et synchronisation des signaux internes et bus externes. L'ALU ne fait que du calcul comme son nom l'indique.

    A+
    Dernière modification par Jack ; 16/10/2010 à 08h46.

  15. #14
    BastienBastien
    Invité

    Re : comment fonctionne un microcontroleur?

    Hi,

    J'oujouterai qu'un microcontroleur est constitué :

    - d'une entité vraiment réduit à peu de chose, l'ALU. Réduite à peu de chose car elle ne sait faire qu'un nombre réduit d'opération logiques.
    - de plein de petits prériphériques (convertisseurs, interfaces, PIO), qui lui permettent de communiquer avec des périphériques (mémoires additionnelles, etc) ou de lire des grandeurs analogique (Convertisseur Analogique / Numériques), CNA (convertisseur Numérique / Analogique) etc.

    Sur ce microcontroleur, on fait fonctionner un code exécutable, plus ou mois évolué. Celui-ci peut être extêmement simple (5 kilo octects), comme extrêmement complexe (10 Mo ou bien plus encore : logiciel d'intelligence artificielle qui se base sur des bibliothèques qui elles même se base sur des bibliothèques systèmes (soit sur un véritable système d'exploitation)).

    A noter la différence entre un micro controleur qui intègre, en plus de l'ALU, les péréphériques dont j'ai parlé ci-dessus, et le micro processeur, qui n'intègre pas les "périphériques".

    Dans un PC, on a un micro processeur. Tandis qu'un PIC est un microcontroleur.

    +

  16. #15
    PA5CAL

    Re : comment fonctionne un microcontroleur?

    Citation Envoyé par BastienBastien Voir le message
    - d'une entité vraiment réduit à peu de chose, l'ALU. Réduite à peu de chose car elle ne sait faire qu'un nombre réduit d'opération logiques.
    Pas vraiment d'accord.

    L'ALU peut au contraire être très complexe, et même constituer l'élément le plus volumineux du microcontrôleur ou du microprocesseur.

    Si les premiers modèles ne présentaient que les fonctions logiques de base et le strict minimum en terme de fonctions arithmétiques (addition, soustraction, décalages), on a depuis produit des modèles intégrant des opérations beaucoup moins simples, comme la multiplication, la division, la racine carrée, le logarithme, les fonctions trigonométriques, les opérations vectorielles, voire des opérations encore plus complexes.


    Par ailleurs, je regrette que dans les explications, on s'entête à oublier le circuit essentiel du microcontrôleur qui lui permet de provoquer et d'enchaîner les opérations (à part Jack qui en a très justement fait état), et à ne mettre l'accent que sur des circuits annexes (dans le sens où ils ne sont à eux seuls pas constitutifs d'un système automatisé).

    .
    Dernière modification par PA5CAL ; 16/10/2010 à 11h40.

  17. #16
    BastienBastien
    Invité

    Re : comment fonctionne un microcontroleur?

    Hi men !

    Citation Envoyé par PA5CAL Voir le message
    Pas vraiment d'accord.

    L'ALU peut au contraire être très complexe, et même constituer l'élément le plus volumineux du microcontrôleur ou du microprocesseur.

    .
    Yep, je suis d'accord. J'en suis en fait resté au PIC basiques et ai voulu faire court.

Discussions similaires

  1. comment lire dans une EEPROM avec un microcôntroleur
    Par invitec961338f dans le forum Électronique
    Réponses: 21
    Dernier message: 15/02/2008, 17h04
  2. Comment choisir son microcontroleur ?
    Par benjibul dans le forum Électronique
    Réponses: 14
    Dernier message: 19/11/2007, 15h55
  3. Comment envoyer data du PC vers un microcontroleur
    Par inviteb3711700 dans le forum Électronique
    Réponses: 4
    Dernier message: 05/03/2006, 23h01
  4. Comment fonctionne la FM ??
    Par invite243be281 dans le forum Électronique
    Réponses: 1
    Dernier message: 16/02/2004, 18h22
Découvrez nos comparatifs produits sur l'informatique et les technologies.