La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Interruptions externes et agenda

Présentations similaires


Présentation au sujet: "Interruptions externes et agenda"— Transcription de la présentation:

1 Interruptions externes et agenda
Démon Robopoly Interruptions externes et agenda JIRI 10/05/2019

2 Comment contrôler un capteur ?
while(1) valeur = digitalRead(A, 5); Deux possibilités Polling Interruption externe JIRI 10/05/2019

3 Interruptions, as-tu dit ?
int main(void) { instruction 1; instruction 2; instruction 3; } //Code de //l'interruption : instruction A; instruction B; Interruption (exemple: le capteur voit quelque chose) Faire l'exemple de sat. THIBAULT 10/05/2019

4 Les flancs de 0 à 1 = flanc montant de 1 à 0 = flanc descendant
Typiquement : le capteur voit quelque chose JIRI 10/05/2019

5 Le microcontrôleur Une interruption externe est une détection "automatique" d'un changement d'état sur soit le PIND2 (INT0) soit le PIND3 (INT1) Ils doivent brancher !!! PHYSIQUEMENT !!! le capteur sur un de ces deux PINS pour que ça marche! JIRI 10/05/2019

6 Programmation La libraire int_ext.h vous simplifie le travail
Ne pas oublier de copier les fichiers int_ext.h et int_ext.c dans le dossier du projet Inclure les fichiers dans le projet Mettre la ligne : #include int_ext.h THIBAULT 10/05/2019

7 Les commandes etat peut prendre les valeurs suivantes
void configure_INT0(etat, function); void configure_INT1(etat, function); etat peut prendre les valeurs suivantes RISING_EDGE = flanc montant FALLING_EDGE = flanc descendant ANY_CHANGE = flancs montant et descendant OFF = Désactive l'interruption THIBAULT 10/05/2019

8 Démonstration void main(void) { configure_INT0(FALLING_EDGE, m_stop); configure_INT1(RISING_EDGE, m_start); setupMotorPWM(100,100); while(1); } void m_stop(void) { setupMotorPWM(0,0); } void m_start(void) { setupMotorPWM(100,100); } JIRI 10/05/2019

9 Appeler des fonctions périodiquement
L'Agenda THIBAULT 10/05/2019

10 A quoi ça sert Appeler des fonctions, 8 au maximum, toutes les x millisecondes y fois. Exemple : f1 = addNewCallback(haha, 200, 5); Appelle la fonction "haha" toutes les 400ms et s'arrête après 5 appels. THIBAULT 10/05/2019

11 Explication char addNewCallback(function, Duration, Number);
f1 = addNewCallback(haha, 200, 5); Nom Dans l'exemple Valeur / Remarque Référence de la callback f1 Sert à supprimer la callback function haha Fonction appellée Duration 200 Période [ms] = 2 * Duration Duration = 0…65500 Number 5 Nombre d'appels 0 = infinit Number = JIRI 10/05/2019

12 Supprimer une callback
stopCallback(char callbackNumber); stopCallback(f1); f1 = la référence de la Callback JIRI 10/05/2019

13 Démonstration : Capteur de température
Notre capteur sort une tension en fonction de la température. Nous allons donc lire cette tension avec un ADC. Nous voulons mettre à jours cette valeur toutes les demi-secondes. Puis on envoie cette valeur sur l'ordinateur grâce à l'UART. THIBAULT 10/05/2019

14 checkTemp, le code. void checkTemp(void) {
} unsigned char temperature = analogReadPortA(0); uartSendByte(temperature); THIBAULT 10/05/2019

15 Main(), le retour du code.
#include <avr/io.h> #include "robopoly.h" void checkTemp(void); int main(void) { return 0; } addNewCallback(checkTemp, 250, 0); while(1); THIBAULT 10/05/2019

16 Démonstration THIBAULT 10/05/2019

17 Fireday Uno N'oubliez pas le Fireday de ce samedi dès 09h00
Petit concours facile entre nous (dès 16h00) Les membres du comité sont là pour vous aider. Venez même si vous ne faites pas le concours, vous pouvez finir de monter votre robot dans une bonne ambiance. THIBAULT 10/05/2019

18 A SAMEDI 10/05/2019


Télécharger ppt "Interruptions externes et agenda"

Présentations similaires


Annonces Google