« SE4Binome2023-1 » : différence entre les versions
| Ligne 70 : | Ligne 70 : | ||
</pre> | </pre> | ||
|} | |} | ||
Nous avons décider de faire clignoter une LED (PORTD ^= 0x02) à chaques utilisations de la fonction ordonnanceur() dans l'ISR. | |||
== Soudure et Test du SHIELD == | == Soudure et Test du SHIELD == | ||
Au cours des 2 premières séances nous avons soudé et testé notre Shield | Au cours des 2 premières séances nous avons soudé et testé notre Shield | ||
Version du 16 janvier 2024 à 13:15
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.
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.