Interruptions externes et agenda Démon Robopoly Interruptions externes et agenda JIRI 10/05/2019
Comment contrôler un capteur ? while(1) valeur = digitalRead(A, 5); Deux possibilités Polling Interruption externe JIRI 10/05/2019
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
Les flancs de 0 à 1 = flanc montant de 1 à 0 = flanc descendant Typiquement : le capteur voit quelque chose JIRI 10/05/2019
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 là 10/05/2019
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
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
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
Appeler des fonctions périodiquement L'Agenda THIBAULT 10/05/2019
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
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 = 1..255 JIRI 10/05/2019
Supprimer une callback stopCallback(char callbackNumber); stopCallback(f1); f1 = la référence de la Callback JIRI 10/05/2019
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
checkTemp, le code. void checkTemp(void) { } unsigned char temperature = analogReadPortA(0); uartSendByte(temperature); THIBAULT 10/05/2019
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
Démonstration THIBAULT 10/05/2019
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
A SAMEDI 10/05/2019