1.06k likes | 1.49k Views
2009/2010. Programmation des systèmes embarqués. Répartition horaire : . Cours - TD : 12 h. TP : 18 h. Auteurs du document : Myriam Chesneau / Thierry Suaton. Responsable du document : Myriam Chesneau. Intervenants Myriam Chesneau Jean-Noël Martin.
E N D
2009/2010 Programmation des systèmes embarqués Répartition horaire : Cours - TD : 12 h TP : 18 h • Auteurs du document : • Myriam Chesneau / Thierry Suaton • Responsable du document : • Myriam Chesneau • Intervenants • Myriam Chesneau • Jean-Noël Martin Dernière mise à jour :24/10/2008 Programmation de systèmes embarqués
Programmation des systèmes embarqués Les bases • CH 1 . Introduction au microcontrôleur : • Présentation d’un microcontrôleur élémentaire et application dans le cadre de l’instrumentation • CH 2 . Bases de filtrage analogique • Rappels sur les représentations temps-fréquence, présentation des filtres et gabarits, exemple de réalisation d’un filtre analogique • CH 3. Introduction au filtrage numérique • Outils mathématiques utilisés pour le filtrage numérique, présentation et principe de réalisation des filtres RII et RIF Ouverture • en fin de module ISA (instrumentation spécifique : audionumérique) ouverture sur les DSp et FPGA, qui permettent de faire du filtrage temps réel et embarqué. • En TP 4 : implémentation d’un filtre sur DSP Programmation de systèmes embarqués
Un microcontrôleur comprend - Une unité de traitement de l’information de type microprocesseur - Des périphériques internes Il permet la réalisation d’applications autonomes sans ajout de composants externes Ch 1 : Introduction au microcontrôleur Programmation de systèmes embarqués
Présentation du circuit alimentations 1.1 Schéma de principe Mémoire FLASH pour stocker le programme (permanente) Mémoire RAM de travail (volatile) Mémoire EEPROM pour stocker les données (permanente) • Unité • décodage instructions • traitement • calculs Timer Compteur Horloge Ports I/O Circuits de mise en route et de veille Programmation de systèmes embarqués
1.2 Les mémoires • La mémoire flash : (16F84) • contient le programme compilé • possède 1024 emplacements de 14 bits (taille d’une instruction) • conserve les données hors tension • La RAM • permet le stockage des données temporaires nécessaires à l’exécution du programme • possède 68 octets + 15 registres spécialisés de 8 bits • son contenu est perdu en cas de coupure Programmation de systèmes embarqués
L’EEPROM • contient des données produites par le programme • conserve les données hors tension 1.3 Unité « centrale » • Elle récupère les instructions du programme, les décode et les exécute. Programmation de systèmes embarqués
oscillateur externe : fosc fo = fosc/4 Horloge 1.4 L’horloge • Elle reçoit un signal périodique issu d’un oscillateur, et fabrique la référence « temps » du système. • Une instruction élémentaire est en général exécutée en 1 cycle, soit 4 périodes du signal de l’oscillateur. • Avec un oscillateur à 4 MHz, un µc PIC16F84-04 peut effectuer un million (4 M / 4) instructions simples. Programmation de systèmes embarqués
1.5 Les circuits de mise en route et de veille • Ils permettent • de réaliser une bonne mise sous tension du système, • de le mettre en veille en cas de non utilisation, • de sortir convenablement du mode veille. Programmation de systèmes embarqués
2. Les périphériques 2.1 Ports d’entrées – sorties : • Le port A fournit 5 entrées - sorties : RA0 – RA4 • RA0 – RA3 : • En entrée : comprennent les niveaux TTL • En sortie : délivrent des niveaux TTL : 0 ou 5 V • RA4 • En entrée : trigger de Schmitt pour convertir en TTL (cf TD EON) • En sortie : drain ouvert • Peut être connectée à l’entrée du timer pour du comptage Programmation de systèmes embarqués
Le port B fournit 8 entrées – sorties • RB0 – RB7 délivrent et reçoivent des niveaux TTL • En entrée : peuvent être connectées au 5 V par programme • de plus • RB0 peut être utilisée pour une interruption externe, elle fonctionne alors en trigger de Schmitt • RB6 et RB7 sont utilisées pour charger le programme en mémoire (attention, ne pas les utiliser pour une autre tâche au moment du chargement) • Si RB4 à RB7 sont en entrée, on peut décider par programme de générer une interruption si la valeur d’une de ces entrées a changé. Programmation de systèmes embarqués
Entrée Sortie non accessible Clk Out Compteur 2.2 Le compteur – timer • Le compteur-timer possède 8 bits. • Il compte les fronts montants ou descendants présents sur son entrée ( 0,1,…. 255=FF)h) • Le timer-compteur est associé à un registre TMR0 (Timer 0) • En fin de compte : passage de 255 à 0, un bit d’un registre spécifique est mis à 1 : c’est le bit de débordement (overflow). TMR0 Programmation de systèmes embarqués
Entrée Clk Out Compteur Diviseur • Un diviseur de fréquence (Prescaler) permet de diviser la fréquence du signal à appliquer en entrée du compteur • La fréquence peut être divisée par 2, 4, 8, 16, 32, 64, 128 ou 256. Programmation de systèmes embarqués
Source ExterneRA4 = T0CKl Entrée Clk Out Compteur Diviseur ou pas • Comme le compteur-timer d’une carte d’acquisition, le compteur peut être utilisé : • En compteur • Le signal d’entrée du compteur est externe, il est connecté sur la ligne 4 du port A • Le compte s’incrémente sur chaque front de l’horloge • Il est accessible dans le registre TMR0 TMR0 Programmation de systèmes embarqués
Clk Out Compteur Diviseur ou pas fosc Horloge fo TMR0 • En timer • Le signal d’entrée du compteur est celui de l’horloge(fo = fosc/4 = 1 MHz) • Le compte s’incrémente sur chaque front de l’horloge • On peut positionner le compte de départ à une valeur choisie dans le registre TMR0. • On utilise le bit de débordement pour mesurer le temps écoulé entre le départ et « l’arrivée à 0 ». Programmation de systèmes embarqués
3. Les registres du PIC • Les registres spécialisés du PIC permettent • de définir le fonctionnement du PIC • de s’informer sur l’état du PIC • de configurer les périphériques • de communiquer (lecture / écriture) avec les périphériques Programmation de systèmes embarqués
3.1 Le registre des interruptions • INTCON • permet le contrôle des interruptions et leur localisation et • indique la fin de compte du timer Programmation de systèmes embarqués
3.2 Les registres des ports • TRISA : indique la direction des lignes du port A1 : entrée, 0 : sortie • PORTA : lecture – écriture du contenu du port A • TRISB : indique la direction des lignes du port B1 : entrée, 0 : sortie • PORTB : lecture – écriture du contenu du port B Programmation de systèmes embarqués
3.3 Les registres du timer • TMR0 permet d’écrire et de lire le compte du timer/compteur • INTCON permet de connaître l’état du bit de débordement ( dépassement timer = TOIF = timer output interrupt flag) • OPTION permet de définir, entre autres, les paramètres du timer/compteur • source de l’entrée du compteur • utilisation du diviseur • valeur du diviseur Programmation de systèmes embarqués
OPTION • A la mise sous tension, tous les bits sont positionnés à 1. Programmation de systèmes embarqués
4. Programmation 4.1 Procédure et logiciels • Pour utiliser le PIC, il faut respecter les phases suivantes : • Écriture du programme dans un langage évolué • Traduction du programme en langage PIC (type assembleur : 35 instructions) • Transfert du fichier obtenu en mémoire flash du PIC • Mise en fonctionnement du PIC Programmation de systèmes embarqués
Le positionnement d’une broche du PIC permet de choisir entre les modes • Chargement du programme (PGN) pour la phase 3 • Normal (RUN) pour la phase 4 Programmation de systèmes embarqués
Nous utiliserons • L’éditeur de texte ConText pour écrire le programme en langage C : fichier xxx.c, puis à partir de cette éditeur, nous appellerons : • Cc5x pour la création du fichier en langage PIC : xxx.exe, puis • NTPicprogVf pour le transfert de ce fichier de l’ordinateur vers la mémoire flash du PIC par liaison série • Tous ces logiciels sont libres Programmation de systèmes embarqués
4.2 Adresse des registres • Chaque registre possède une adresse dans la RAM : • Exemple : PORTB est un registre 8 bits situé à l’adresse 06 de la RAM • Dans le logiciel utilisé, le nom d’un registre coïncide avec son adresse • PORTB = 0b01011100permet d’écrire les 8 bits 01011100 à l’adresse 06 de la RAM Programmation de systèmes embarqués
On peut utiliser les bases 2, 10 ou 16 : • PORTB = 0b01011100 ; • PORTB =92 ; • PORTB = 0x5C ; • Pour désigner le bit n°i du registre XXX, on utilise XXX.I • Exemple TRISA.0 désigne le bit 0 du registre TRISA. Programmation de systèmes embarqués
Grâce à l’ajout d’un fichier en tête spécial (16f84.h), un nom est associé à chaque bit de certains ports : • RA0 = 1 ; • équivaut à • PORTA.0 = 1; • et permet de mettre à 1 le bit 0 du port A sans modifier les autres. Programmation de systèmes embarqués
On peut ajouter de telles définitions au sein du programme : • (en C) • # define TOIF INTCON.2 • permet de nommer TOIF le bit n°2 du registre des interruptions INTCON Programmation de systèmes embarqués
4.3 Exemple de programmation des ports • Pour utiliser les lignes des ports A et B, il faut : • Définir la direction des lignes : entrée ou sortie • Écrire sur les lignes en sortie ou lire les lignes en entrée • On peut travailler sur un port en entier ou sur une ligne : • TRISA.0 = 0;TRISB.5 = 1;RA0 = RB5; • TRISB = 0b00000000;PORTB = 0b01010101; Programmation de systèmes embarqués
Clk Out Compteur Horloge fosc fo Diviseur TMR0 Source ExterneRA4 = T0CKl 4.4 Programmation du timer (voir exemples en TD) INTCON.2 TOIF OPTION.210 PS2 PS1 PS0 prescaler OPTION.5 TOCS : clock source OPTION.4 TOSE : source edge OPTION.3 PSA Programmation de systèmes embarqués
Remarques complémentaires • On travaille principalement avec des bits ou des octets. • On peut utiliser la représentation binaire avec le logiciel ConText unsigned char octet; octet = 0b11001110; Programmation de systèmes embarqués
nécessité de mémoriser l'endroit, les variables…. programme utilisateur arrivée interruption 4 1 3 traitement de l'interruption : lecture et sauvegarde 2 5. Interruptions 5.1 généralités Programmation de systèmes embarqués
demande d’interruption • sauvegarde du contexte • traitement de l'interruption en exécutant des lignes de programme : lecture et stockage des données • restitution du contexte et reprise de la tâche initiale Programmation de systèmes embarqués
5.2 Sources d’interruption • Le PIC utilisé en possède 4, le programme en cours peut-être interrompu si • un front (+ ou -) est présent sur RB0 • une des lignes RB4 à RB7 change d’état (lignes placées en entrée) • le timer atteint la fin de son cycle (débordement) • une écriture dans l’EEPROM est terminée • Pour utiliser une interruption, il faut • autoriser les interruptions en général • autoriser une (ou +) interruptions en particulier Programmation de systèmes embarqués
5.3 cas du PIC • Voir documentation en TP pour la programmation Programmation de systèmes embarqués
En guise d’introduction au filtrage… • Extrait de l’article «Le filtrage numérique des signaux n’est pas qu’un filtre analogique numérisé… » paru dans la revue Mesures n° 749 Novembre 2002 • Le filtrage est une étape essentielle dans une chaîne d’acquisition de données. Il permet d’isoler une fréquence particulière ou d’éliminer des fréquences parasites. • Couramment utilisés, les filtres analogiques manquent de précision et sont limités en types de gabarit disponibles. • Le filtrage numérique n’a pas ces limitations. Il utilise des algorithmes de calcul implémentés dans des DSP ou des FPGA. • Avantages : pas de dérive, filtres exotiques, filtres facilement modifiables… Programmation de systèmes embarqués
Un filtre analogique reçoit en entrée un signal en tension x(t) et délivre en sortie le signal filtré y(t). Le filtre modifie le spectre du signal d’entrée. Ch 2. Bases de filtrage analogique Programmation de systèmes embarqués
Ce que vous savez déjà … 1.1 Représentations temps/fréquence : rappels • Un signal peut être décrit dans le domaine du temps ou dans le domaine des fréquences. • Dans le domaine temporel, on observe s(t) à l’oscilloscope • Dans le domaine fréquentiel, on observe S(f) à l’analyseur de spectre • S(f) est la transformée de Fourier de s(t)C’est une grandeur complexe : module + phase. • On appelle spectre (bilatéral) le module de S(f) Programmation de systèmes embarqués
Exemple : • Informations données par le chronogramme : • Informations données par le spectre (donné ici pour f>0) : Programmation de systèmes embarqués
La FFT est une approximation de la transformée de Fourier d’un signal s(t) • échantillonné à Féch • observé sur une durée Tobs ( Tobs = Néch / Féch) • Le module de la FFT de s(t) coïncide avec |S(f)| • si le signal est convenablement échantillonné et observé. • pour 0 < f < Féch/2. Programmation de systèmes embarqués
1.2 Filtres analogiques • En électricité et en électronique, on a déjà rencontré des filtres analogiques : • Filtre passe-bas RC • Filtre résonnant RLC • Filtre actif AOP + R + C Programmation de systèmes embarqués
Les filtres qui ne nécessitent pas d’alimentation sont appelés filtres passifs : • RC • RLC • À quartz • À lignes imprimées • Les filtres alimentés sont appelés filtres actifs : • AOP + R + C • Transistors + R + C • À capacités commutées Programmation de systèmes embarqués
On s’intéresse ici à la conception de filtres actifs à amplificateurs opérationnels, résistances et condensateurs, à partir d’un cahier des charges précis : le gabarit. Programmation de systèmes embarqués
2. Filtre et gabarit • Un filtre permet de traiter différemment les différentes composantes spectrales d’un signal. FiltreH(f) = Y(f)/X(f) x(t) X(f) y(t) Y(f) Programmation de systèmes embarqués
2.1 Filtre idéal - Filtre réel • Un filtre idéal • transmet les composantes situées dans sa bande passante • supprime les composantes situées en dehors de sa bande passante • Un tel filtre n’est pas réalisable. Programmation de systèmes embarqués
Un filtre réel ne supprime pas complètement les composantes hors bande, mais les atténue, d’autant plus fortement que son ordre est élevé. Programmation de systèmes embarqués
Un gabarit représente les bornes de gain admises dans diverses bandes de fréquence. • Bande passante : gain nominal (0 dB souvent) + erreur maximum admise (a) • Bande atténuée : gain maximum admissible : b • Bande passante fp et bande atténuée fa.(sélectivité k = fp/fa) • Rq : rien n’est précisé sur un tel gabarit en termes de phase. Exemple du filtre passe-bas de fréquence de coupure fp à « a » dB. Programmation de systèmes embarqués
2.2 Les 4 grandes familles de filtres • Passe bas Programmation de systèmes embarqués
Passe haut Programmation de systèmes embarqués
Passe bande • Coupe bande • Rq : se familiariser avec ces deux représentations, utilisées fréquemment et « mélangées ». Programmation de systèmes embarqués
20 log T fp fa 0 dB a dB f b dB 3. Réalisation pratique : cas du passe-bas 3.1 Transformation du cahier des charges en gabarit Programmation de systèmes embarqués