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

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
=== Carte Shield ===
= Rapport Pico-ordinateur =


Nous avons soudé et réalisé les différents tests concernant la carte Shield Arduino.
== Carte Shield ==
Nous avons réussi à faire clignoter les LED, tester les différents connecteurs à l'aide d'un afficheur 7 segments ainsi que le lecteur de carte SD.
{{Cadre|
Nous avons réalisé et testé la carte Shield Arduino en soudant les différents composants. Le fonctionnement a été vérifié avec succès en faisant clignoter les LED et en testant les connecteurs à l'aide d'un afficheur 7 segments ainsi que le lecteur de carte SD.


Pour ce faire, nous avons utiliser les différents codes exemples directement mis à disposition dans le logiciel Arduino.
Pour cela, nous avons utilisé les codes exemples disponibles dans l'environnement Arduino IDE, tels que les fonctions pour contrôler les LED et lire les données sur l'afficheur 7 segments.


'''Exemple de code pour afficher sur l'afficheur 7 segments :'''
<code>
#include <SPI.h>


=== Ordonnanceur ===
const int ssPin = 1;


Pour l'ordonnanceur, nous avons initialisé le timer ainsi que les différentes tâches. Malheureusement, nous avons pas encore réussi à réaliser ces différentes tâches en utilisant notre ordonnanceur.
void setup() {
  pinMode(ssPin, OUTPUT);
  digitalWrite(ssPin, HIGH);
  SPI.begin();
  SPI.setClockDivider(SPI_CLOCK_DIV64);
}


=== Carte fille afficheur ===
void loop() {
  // Envoyer des données vers l'afficheur 7 segments
  digitalWrite(ssPin, LOW);
  SPI.transfer('2'); // Affiche '2'
  digitalWrite(ssPin, HIGH);
  delay(1000);
}
</code>
}}


Nous avons commencé à réaliser le schématique de notre carte fille.
== Ordonnanceur ==
{{Cadre|
Nous avons commencé à implémenter un ordonnanceur basique pour gérer plusieurs tâches. Le timer a été initialisé et nous avons déclaré différentes tâches, mais la gestion complète des tâches n'est pas encore fonctionnelle.
 
Voici une explication des fonctions principales utilisées pour la gestion des tâches :
 
'''Initialisation des tâches'''
Cette fonction permet de sauvegarder et de restaurer les registres à chaque changement de tâche.
<code>
#define SAVE_REGISTERS() \
asm volatile ( \
  "push r0 \n\t" \
  "in r0, __SREG__ \n\t" \
  "push r0 \n\t" \
  "push r1 \n\t" \
  /* Sauvegarde des registres ici... */ \
);
 
void init_pile(int N){
  uint16_t tempSP = SP;
  SP = task[N].stackPointer;
  uint16_t adresse=(uint16_t)task[N].addressFunction;
  asm volatile("push %0" : : "r" (adresse & 0x00ff) );
  asm volatile("push %0" : : "r" ((adresse & 0xff00)>>8) );
  SAVE_REGISTERS();
  task[N].stackPointer = SP;
  SP = tempSP;
}
</code>
 
'''Minuteur'''
Le minuteur est utilisé pour déclencher les interruptions, permettant de passer d'une tâche à une autre de manière régulière.
<code>
void init_minuteur(int diviseur, long periode) {
  TCCR1A=0;
  TCCR1B=(1<<CTC1);
  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;
  }
  OCR1A = F_CPU/1000*periode/diviseur;
  TIMSK1 = (1<<OCIE1A);
}
</code>
}}
 
== Carte fille afficheur ==
{{Cadre|
Nous avons commencé à travailler sur le schéma de la carte fille pour l'afficheur. L'objectif est de créer une carte additionnelle qui permettra de gérer l'affichage avec plus de flexibilité.
}}

Version du 15 octobre 2024 à 19:28

Rapport Pico-ordinateur

Carte Shield

Modèle:Cadre

Ordonnanceur

Modèle:Cadre

Carte fille afficheur

Modèle:Cadre