Considérations de programmation

Slides:



Advertisements
Présentations similaires
Développement logiciel sur micro-contrôleurs PIC en C
Advertisements

FLSI602 Génie Informatique et Réseaux
IFT 6800 Atelier en Technologies d’information
Microcontrôleurs et Langage C Les Interruptions diapo 1
Un survol du language C.
Composants Matériels de l'Ordinateur Plan du cours : Ordinateurs et applications Types d'ordinateurs Représentation binaires des données Composants et.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 6 IJA Structures de données JAVA.
1. Malbolge Chritosphe Delagarde, septembre 2000 I.U.T., Université de la Méditerrainée 2.
1 Programmation en C++ Fonctions ● Déclaration et définition de fonctions ● Arguments ● Surcharge ● Arguments optionnels ● Fonctions constantes ● Fonctions.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Mode noyau Appels Systèmes Interruptions Grégory Seront Institut Paul Lambin
Tableaux en C Mardi 2/05.
Masques et opérateurs de décalage
– NAT et PAT - 1.
Périphériques de microcontrôleur
Exploitation de logiciels :
Le Microcontrôleur PIC16F84
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Construire des requêtes
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Quelques Termes INFORMATIQUE ? ORDINATEUR ( Système Informatique)?
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
Eléments d’Informatique Cours11 – Allocation dynamique, listes chaînées Catherine Recanati.
Pointeurs et langage C.
Nombres entiers non signés/signés
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
S.P.I BUS série synchrone à grande vitesse Cliquez ici pour avancer
pensez à nettoyer vos scripts !
Principes de programmation (suite)
Séances de soutien Projet informatique 2A
3°) Décomposition d’un nombre entier en produit d’entiers :
Comportement de RIP & IGRP avec les mises à jour de Routage
SIF-1053 Architecture de ordinateurs
Arguments de la ligne de commande
Architecture de machines Le microprocesseur
Format des fichiers TIFF
RIP - Configuration des Extensions.
Chapitre_3 K60 DMA 16 décembre 2014 J.Callot L.Piedfort.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
De l’ordinateur au processus : rôle d’un système
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
Création Et Modification De La Structure De La Base De Données
Programmation en C++ C++ de base
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Programmation Orientée Objet C# El Akel Bouchra ISMONTIC Tanger 2013/2014.
Interruptions GIF-1001 Ordinateurs: Structure et Applications, Hiver 2015 Jean-François Lalonde.
Architecture de machines Le microprocesseur Cours
Calcul Scientifique Initiation à SCILB
pi16f84
La Station de pompage.
S.P.I BUS série synchrone à grande vitesse Cliquez ici pour avancer
Le DOS GIF-1001 Ordinateurs: Structure et Applications, Hiver 2015
I-D-L Interface Definition Language Elaboré par Elaboré par : Mohamed Moncef SAAFI Sofien SAGHROUNI Mondher MOULAHI Marwen BALLOUMI LFSi-3.
I-D-L Interface Definition Language Elaboré par Elaboré par : Mohamed Moncef SAAFI Sofien SAGHROUNI Mondher MOULAHI Marwen BALLOUMI LFSi-3.
ENSEIGNER L’ALGORITHMIQUE ET LA PROGRAMMATION AU COLLÈGE
PRESENTATION ACCESS Editeur : Microsoft Environnement Windows (SE)
Principes de programmation (suite)
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
Tableaux Cours 06.
QCM Pointeurs 2 / Q1 On considère la déclaration suivante : char *ptc ; ptc peut contenir : 1) des valeurs de variables de type caractère 2) des adresses.
Interruptions externes et agenda
PROGRAMMATION SOUS R. PRESENTE PAR : ACHETTOU ISMAIL LAARICH TARIQ ENCADRE PAR : Pr. EXPOSÉ SUR LA PROGRAMMATION SUR R 2.
TP N°4 Développement d’ une application
Le réseau explications
Transcription de la présentation:

Considérations de programmation

Les registres avancent masqués Chaque famille de périphérique est définie par une structure Exemple pour les ports E/S contenant les différents registres qui le composent Après instanciation sur une adresse particulière (fournie par STmicro) On accède aux registres qui nous intéressent avec -> typedef struct { vu32 CRL; vu32 CRH; vu32 IDR; vu32 ODR; vu32 BSRR; vu32 BRR; vu32 LCKR; } GPIO_TypeDef; #ifdef _GPIOB #define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) #endif GPIOB->ODR = 0x45A2;

Pourquoi as-tu le masque ? Programmer un périphérique = modification D’un registre entier (rarement le cas) Pas de pb par exemple GPIOB->ODR = 0x45A2; Un bit d’un registre (mise en marche par exemple) Cortex a la possibilité de bit-banding  envisageable par une instruction De plusieurs bits ou d’un champ de bits d’un registre Obligation d’appliquer un masque si on ne veut pas modifier le reste du registre .

Exemple de mise à 1 On applique 1 avec l’opérateur OU Ex : mise à 1 des bits de poids 2 et 5 de l’octet Bobo :

Exemple de mise à 0 On applique 0 avec l’opérateur ET Ex : mise à 0 des bits de poids 0 et 3 de l’octet Bibi :

Extension A partir des deux principe de base précédents : Possibilité de l’étendre à des champs de bits Possibilité de contrôler les valeurs maximales applicables à un champ de bits Ce principe permet d’avoir une programmation Sûre Lisible (au final) Générique Voir la documentation rédigée à ce sujet

De la notion d’interruption Un périphérique fait des demandes d’interruption (conversion ADC terminée, débordement de timer, …) Une interruption acceptée = détournement via la table des vecteurs d’interruption (IVT) Soit on gère en assembleur cette table Soit on utilise le compilateur qui connait et impose le nom des routines d’exception  va remplir la IVT si on utilise ce nom pour une procédure. Le fichier (assembleur) STM32F10X.s contient les noms prédéfinis Voir la documentation rédigée à ce sujet

Exemple Waouh ! SysTick_Handler (! Majuscule!) /*------------------------------------------------------------------------------ Systick Interrupt Handler SysTick interrupt happens every 10 ms *------------------------------------------------------------------------------*/ void SysTick_Handler (void) { static unsigned long ticks; static unsigned long timetick; static unsigned char leds = 0x01; if (ticks++ >= 99) { // Set Clock1s to 1 every 1 second ticks = 0; Clock1s = 1; } // Blink the LEDs depending on ADC_ConvertedValue if (timetick++ >= (ADC_ConvertedValue>>8)) { timetick = 0; leds <<= 1; if (leds == 0) leds = 0x01; GPIOB->ODR = (GPIOB->ODR & 0xFFFF00FF) | (leds << 8); } // end SysTick_Handler SysTick_Handler (! Majuscule!) Procédure d’interruption pour le timer Systick Sur demande d’IT de ce timer cette routine est exécutée Cette routine est (évidement) void/void Waouh !

Structuration de programme Assez rapidement on vous imposera la structuration suivante pour vos applications : Qualité logicielle Généricité Sûreté

A vous de jouer…