\documentclass[11pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{graphicx} \usepackage{amsmath} \usepackage{amssymb} \usepackage{capt-of} \usepackage{hyperref} \usepackage{caption} \usepackage{minted} \usepackage[margin=2cm]{geometry} \usepackage{circuitikz} \author{Pierre-Antoine} \date{\today} \title{Étude des microcontrolleur} \hypersetup{ pdfauthor={Pierre-Antoine}, pdftitle={Étude des microcontrolleur}, pdfkeywords={}, pdfsubject={}, pdfcreator={Emacs 25.2.2 (Org mode 9.1.13)}, pdflang={English}} \begin{document} \maketitle \section{Introduction} \subsection{Prérequis et rappels} \begin{itemize} \item logique cablée \begin{itemize} \item Circuit séquentiels \item circuit combinatoire \end{itemize} \item très rapide \item econome en energie \item complexe à définir \item figé ou difficillement modifiable \item inadapté aux taches complexes \end{itemize} \subsection{Autre approche : logique programmée} \begin{itemize} \item Le programme est stocké et mémoriser dans le systeme \item Quantum d'information adopté en général : l'octet : 8bit. \item stocké dans la mémoire morte (ROM) sous la forme d'une série de mots. \item les données manipulées sont rangés en mémoire vive (RAM). \end{itemize} 2 \textbf{espaces} sont nécessaires : \begin{itemize} \item Programme \item Données \end{itemize} Ces espaces peuvent être disjoint (ex: PIC), ou commun (PC) \subsection{Organisation interne de petit système} \begin{itemize} \item ROM \item RAM \item Processeur \item Entree/Sortie \end{itemize} \subsubsection{interconnexion des élements:} Utilisation des buffers 3 états : \textbf{images} \begin{center} \begin{tabular}{rrl} \hline ES & E & S\\ \hline 0 & 0 & 0\\ 0 & 1 & 1\\ 1 & 0 & Z\\ 1 & 0 & Z\\ \hline \end{tabular} \end{center} avec \textbf{Z} état à haute impédance. on a alors une structure de Bus. \begin{center} \includegraphics[width=0.7\textwidth]{./systeme.png} \end{center} La structure de bus est composé deux trois type de bus: \begin{itemize} \item bus d'adresse : désigne une case menu \item bus de donnée : circuit des données \item bus de commande (contrôle) , pour séquencer les opération d'échange \end{itemize} \subsection{Analyse d'un exemple} \begin{itemize} \item identification des éléments \begin{itemize} \item U1 : processeur Z80 (CPU) boitier 40 broches \item U2 : RAM 32 kB \item U3 : EPROM : Enable Programmable Read Only Memory \item U4 : PIO :Parallel Input Output \end{itemize} \end{itemize} \section{Le timer et les séries} Les timers sont nécessaires pour pouvoir mesurer le temps, sans monopoliser le processeur pour ca \subsection{Fonction des timers:} \begin{itemize} \item mesurer la durée d'une impulsion \item compter des évènements (exemple codeur) \item Générer une PWM \item Lancer une fonction périodique \end{itemize} \subsection{fonctionnement du timer} Voir slide du poly \subsection{Timers du LPC804} \section{Programmation des machines à états (FSM)} \subsection{principe général pour \(\mu\) C} \begin{center} \includegraphics[width=0.7\textwidth]{./etat.png} \end{center} L'enjeu est de conserver et de mettre à jour facilement l'état de la machine en fonction des différentes taches. \section{Appel de sous-programme, interruption et utilisation de la pile par le micro controlleur.} -> faire cohabiter des taches différentes: \begin{itemize} \item Longue peux prioritaire (affichage LCD ..) \item Courte péridique et prioritaire ( échantillonage ) \item Rares (liaison série ..) \end{itemize} \subsection{Fonctionnement des processeur: le cas du Cortex M0+} \begin{itemize} \item faible consommation électrique \item 56 instructions , 16 registre internes \item Controlleur d'interruption NVIC \item Systick timer \end{itemize} \url{http://www.infocenter.arm.com} \subsection{fonctionnement de la CPU : schéma interne.} \begin{center} \includegraphics[width=.9\linewidth]{./arm.png} \end{center} \subsection{les exceptions} \begin{itemize} \item met en pause le programme pour exécuter un programme annexe, \item Exception matérielle : interruption \item 32 exception externe possible pour le cortex M0+ . \end{itemize} * \section{I2C et LPC804} 3 protocoles classiques : \begin{itemize} \item Serial \item I2C \item SPI \end{itemize} \begin{longtable}{|l|l|l|} Serial & SPI & I2C\\ \hline \endfirsthead \multicolumn{3}{l}{Continued from previous page} \\ \hline Serial & SPI & I2C \\ \hline \endhead \hline\multicolumn{3}{r}{Continued on next page} \\ \endfoot \endlastfoot \hline Asynchrone & Synchrone & \\ \hline Pas d'émulation soft \footnotemark & emulation soft & emulation soft\\ point à point & point à point & BUS (adresse pour chaque périphérique I2C)\\ & & \\ & & \\ \end{longtable} \footnotetext[1]{nécessité d'une aide physique (timer \ldots{})} \begin{center} \includegraphics[width=.9\linewidth]{./i2c.png} \end{center}} \subsection{Technologie utilisé pour les bus :} Les sorties doivent etre à collecteur ouvert (pas de court circuit). La vitesse du bu est limité par la commutation de la résistance, moins efficace mais plus imple qu'un circuit à état/haute impédance \subsection{Trame I2C} cf le poly distribué en cours \section{CAN et CNA} \emph{Objectif: interfacer des dispositifs analogique et numérique} \subsection{Signal analogique / signal numérique} La numérisation d'un signal fait intervenir: \begin{itemize} \item Un echantilonnage \item Une quantification \end{itemize} attention au théorème de shannon. Différents formats numérique audio (codage des données avec ou sans pertes sur plus ou moins de bits) \subsection{Convertisseur Numérique analogique} \begin{circuitikz} \draw (0,0) to[R,l=\(R\)] ++(2,0) node(A)\{\(\bullet\)\} (A)node[above]\{\(V_3\)\}; \end{circuitikz} (A) to[R,l=\(R\)] ++(2,0) node(B)\{\(\bullet\)\} node[above]\{\(V_2\)\} (B) to[R,l=\(R\)] ++(2,0) node(C)\{\(\bullet\)\} node[above]\{\(V_1\)\} (C) to[R,l=\(R\)] ++(2,0) node(D)\{\(\bullet\)\} node[above]\{\(V_0\)\} \end{document}