SE4Binome2023-1
Ordonnanceur
Nous commençons maintenant l'ordonnanceur, tout d'abord nous créeons la structure de nos Taches.
Code |
---|
struct TacheInfo{ void (*depart)(void); uint16_t SPointeur; int etat; }; |
Puis nous ajoutons les 2 premières taches demandées qui sont de faire clignoter 2 leds différentes à des timing différents.
Code |
---|
void TacheA(){ while(1) { PORTC ^= 0x08; _delay_ms(300); } } void TacheB(){ while(1) { PORTD ^= 0x80; _delay_ms(500); } } struct TacheInfo Taches[2]={ {TacheA,0x0600,0}, {TacheB,0x0700,0} }; |
On s'occupe maintenant de l'ordonnanceur, ainsi que de l'ISR.
Code |
---|
void ordonnanceur () { PORTD ^= 0x02; courant++; if (courant == NBR_TACHE) courant = 0; } ISR(TIMER1_COMPA_vect,ISR_NAKED) { /* Sauvegarde du contexte de la tâche interrompue */ SAVE_REGISTER(); Taches[courant].SPointeur = SP; /* Appel à l'ordonnanceur */ ordonnanceur(); /* Récupération du contexte de la tâche ré-activée */ SP = Taches[courant].SPointeur; RESTORE_REGISTER(); asm volatile ( "reti" ); } |
Nous avons décider de faire clignoter une LED (PORTD ^= 0x02) à chaques utilisations de la fonction ordonnanceur() dans l'ISR.
La variable courant indique la Tache qui est actuellement en cours.
A chaque chaques changements de tache, l'ISR se déclenche enregistre la tache en cours (les registres ainsi que le Stack Pointer), appel l'ordonnanceur, puis change "charge" la tache suivante.
Soudure et Test du SHIELD
Au cours des 2 premières séances nous avons soudé et testé notre Shield
Sur l'un des connecteurs, la led est abîmée dû à une soudure excessive. Sachant que les leds sont uniquement utilisées en tant qu'indicateurs pour savoir quelle carte fille à le contrôle et que nous n'en utiliserons pas plus de 3 pour tester nos programmes, cela ne vas pas avoir d'influence négative.
Code | Image |
---|---|
#include <avr/io.h> void init_led(){ DDRD=0x92; DDRC=0x09; } int main(){ init_led(); while(1) { PORTD=0x92; PORTC=0x09; } return 0; } |
Puis nous avons aussi soudé l'adaptateur HE10 pour l'utilisation de la matrice de leds
Carte FPGA
Carte électronique numérique
Nous avons choisi la Carte Fille : Ecran LCD
Pendant la 3ème séance nous avons finis le Schématic de la carte
Puis nous avons Routé la carte et envoyé à la Fabrication
Carte non soudée | Carte soudé |
---|---|
Références utiles
Lien du git :
https://archives.plil.fr/mchauvel/PICO_Taha_NEHARI_Martin_CHAUVELIERE.git
https://github.com/Matiasus/HD44780
NHD-C12832A1Z-FSW-FBW-3V3-ND
https://michlstechblog.info/blog/raspberry-pi-connecting-a-hd44780-display-with-i2c-bus/
ReX : Merci d'utiliser le squelette de page présenté en séance.