« SE4Binome2024-5 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 27 : Ligne 27 :


== Test des connecteurs IDC HE10 ==
== Test des connecteurs IDC HE10 ==
Afin de tester nos connecteur HE10, nous avons utilisé un afficher 7 segments (Sparkfun 7 segments display). Pour pouvoir vérifier leurs fonctionnements nous avons branché l'afficheur sur chaque connecteur tour à tour. Le programme implanté est un simple connecteur à afficher sur l'afficheur. Voici une vidéo du compteur fonctionnant sur un des 5 connecteurs HE10.
Afin de tester nos connecteur HE10, nous avons utilisé un afficher 7 segments (Sparkfun 7 segments display). Pour pouvoir vérifier leurs fonctionnements nous avons branché l'afficheur sur chaque connecteur tour à tour. Le programme implanté est un simple connecteur à afficher sur l'afficheur. Voici une vidéo du compteur fonctionnant sur un des 5 connecteurs HE10. ([https://learn.sparkfun.com/tutorials/using-the-serial-7-segment-display/all Code ici (section : Example 2 SPI)]


[[Fichier:Se4-5-7segments.mp4|vignette|alt=se4-5-7segments|Test connecteur HE10 avec afficheur 7 segments.|center]]
[[Fichier:Se4-5-7segments.mp4|vignette|alt=se4-5-7segments|Test connecteur HE10 avec afficheur 7 segments.|center]]

Version du 6 novembre 2024 à 09:48

git : https://gitea.plil.fr/ktouron/se4-djadja-touron_pico.git

Carte fille clavier "matrice de touches"

Carte Shield

Recto de la carte avant soudage des composants
Verso de la carte avant soudage des composants


Carte Shield après soudure des composants

Photo de la carte avec les composants soudés


Allumage de LEDS sur Programmateur AVR

Avant de programmer directement sur le shield, nous avons allumé des LED pour tester la carte. Nous avons directement utilisé le code exemple fourni par l'IDE arduino en adaptant simplement les pins correspondant aux leds.

https://gitea.plil.fr/ktouron/se4-djadja-touron_pico/src/branch/main/PicoShield/Programmation/Blink

Test de lecture de la carte SD

Avant de programmer directement sur le shield, nous avons tester si la carte SD était bien détectée et lue. On a utilisé le code test présent dans l'IDE arduino en adaptant le port utilisé.

https://gitea.plil.fr/ktouron/se4-djadja-touron_pico/src/branch/main/PicoShield/Programmation/CardInfo

Carte SD bien détéctée

Test des connecteurs IDC HE10

Afin de tester nos connecteur HE10, nous avons utilisé un afficher 7 segments (Sparkfun 7 segments display). Pour pouvoir vérifier leurs fonctionnements nous avons branché l'afficheur sur chaque connecteur tour à tour. Le programme implanté est un simple connecteur à afficher sur l'afficheur. Voici une vidéo du compteur fonctionnant sur un des 5 connecteurs HE10. (Code ici (section : Example 2 SPI)

Test connecteur HE10 avec afficheur 7 segments.

Carte Fille

Carte Fille après soudure des composants

Ordonnanceur

Allumer la LED broche PB5 avec Timer1 ISR

Grâce au code de Mr.Redon, nous avons bien un minuteur qui, toutes les 20 ms, va lancer l'ISR. Dans notre cas, l'ISR va juste inverser la valeur du bit PB5. La boucle infinie "while(1)", va être interrompue toutes les 20 ms pour inverser le bit de PB5.

#define CTC1            WGM12           // Meilleur nom pour le bit

#define PERIODE         20

void init_minuteur(int diviseur,long periode){
  TCCR1A=0;               // Le mode choisi n'utilise pas ce registre
  TCCR1B=(1<<CTC1);       // Réinitialisation du minuteur sur expiration
  switch(diviseur){
    case    8: TCCR1B |= (1<<CS11); break;
    case   64: TCCR1B |= (1<<CS11 | 11<<CS10); break;
    case  256: TCCR1B |= (1<<CS12); break;
    case 1024: TCCR1B |= (1<<CS12 | 1<<CS10); break;
    }
  // Un cycle prend 1/F_CPU secondes.
  // Un pas de compteur prend diviseur/F_CPU secondes.
  // Pour une periode en millisecondes, il faut (periode/1000)/(diviseur/F_CPU) pas
  // soit (periode*F_CPU)/(1000*diviseur)
  OCR1A=F_CPU/1000*periode/diviseur;  // Calcul du pas
  TCNT1=0;                // Compteur initialisé
  TIMSK1=(1<<OCIE1A);     // Comparaison du compteur avec OCR1A
}

ISR(TIMER1_COMPA_vect/*, ISR_NAKED*/)    // Procédure d'interruption
{
  PORTB ^= (1 << PB5); 
}


int main(void){
  DDRB |= (1 << PB5);                       
  init_minuteur(256,PERIODE);
  sei();
  while(1);
}

Coder le tableau des structures des processus

Ce tableau des structures permet à un process d'ếtre caractériser par l'adresse du début de sa pile, l'adresse de la tâche (procédure) qu'elle va effectuer pui sont état (1 : réveillé, 0 : endormi).

typedef struct {
    uint16_t adresseDepart;  //adresse de la fonction de départ 
    uint16_t adressePile;       //adresse de la pile d'exécution
    bool etat;          //état du processus (1 ou 0)
} Process;

Process table_process[MAXPROCESS];

Coder la fonction d'initialisation de la pile d'un processus

A REMPLIR

Taches ∞ pour faire clignoter deux leds à 2 fréquences premières entre elle

A REMPLIR
Clignotement des leds à des fréquences premières entre elle avec l'ordonnanceur

Lancement des deux tâches en parallèle grâce à l'ordonnanceur à tourniquet

A REMPLIR