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

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


=== Fonctionnalités Demandées ===
=== Fonctionnalités Demandées ===
1. Gestion de l'écran LCD : Le microcontrôleur doit gérer les écrans HD44780 avec 1, 2, 3 ou 4 lignes et afficher des caractères ASCII.
 
2. Saut de ligne et retour chariot : Les caractères spéciaux `\n` et `\r` doivent être pris en compte.
* Gestion de l'écran LCD : Le microcontrôleur doit gérer les écrans HD44780 avec 1, 2, 3 ou 4 lignes et afficher des caractères ASCII.
3. **Commandes VT100** : Quelques codes VT100, notamment ceux pour le déplacement du curseur, doivent être supportés.
* Saut de ligne et retour chariot : Les caractères spéciaux `\n` et `\r` doivent être pris en compte.
4. **Défilement automatique** : Le contrôleur HD44780 doit être configuré pour activer le mode de défilement automatique.
* Commandes VT100 : Quelques codes VT100, notamment ceux pour le déplacement du curseur, doivent être supportés.
5. **Connexion SPI** : La carte mère doit envoyer les commandes via SPI. Le premier octet envoyé doit être le code commande `0x01`, suivi des caractères à afficher.
* Défilement automatique : Le contrôleur HD44780 doit être configuré pour activer le mode de défilement automatique.
6. **Vérification de la disponibilité de l'écran** : La carte fille met la ligne SPI en état haut lorsqu'un affichage est en cours. La carte mère doit attendre que l'état soit bas avant de transmettre de nouvelles données, ou envoyer des commandes `0xFF` pour vérifier si l'écran est prêt.
* Connexion SPI : La carte mère doit envoyer les commandes via SPI. Le premier octet envoyé doit être le code commande `0x01`, suivi des caractères à afficher.
* Vérification de la disponibilité de l'écran : La carte fille met la ligne SPI en état haut lorsque l'affichage est en cours. La carte mère doit attendre que l'état soit bas avant de transmettre de nouvelles données, ou envoyer des commandes `0xFF` pour vérifier si l'écran est prêt.


=== Ajout d'une RAM SPI ===
=== Ajout d'une RAM SPI ===
Pour complexifier la carte fille, nous avons ajouté une **RAM SPI** (e.g. FM24C04B-GTR). Cette mémoire permet de stocker temporairement les caractères reçus par SPI avant leur affichage. Le microcontrôleur de la carte fille rafraîchit régulièrement l'écran en lisant les données de la RAM, ce qui améliore la fluidité de l'affichage et permet de libérer la carte mère plus rapidement.
Pour complexifier la carte fille, nous ajouterons une RAM SPI (e.g. FM24C04B-GTR). Cette mémoire permet de stocker temporairement les caractères reçus par SPI avant leur affichage. Le microcontrôleur de la carte fille rafraîchit régulièrement l'écran en lisant les données de la RAM, ce qui améliore la fluidité de l'affichage et permet de libérer la carte mère plus rapidement.


Voici un schéma simplifié de la communication entre les composants :
Voici un schéma simplifié de la communication entre les composants :
* La **carte mère** écrit dans la RAM SPI via le bus SPI.
* La carte mère écrit dans la RAM SPI via le bus SPI.
* Le **microcontrôleur** de la carte fille lit les données de la RAM SPI et les envoie à l'écran LCD pour mise à jour régulière.
* Le microcontrôleur de la carte fille lit les données de la RAM SPI et les envoie à l'écran LCD pour mise à jour régulière.


=== Schéma de Connexion ===
=== Schéma de Connexion ===

Version du 15 octobre 2024 à 19:49

Pico Ordinateur

Ce projet vise à concevoir un pico ordinateur divisé en plusieurs parties, réalisées par différents binômes. Le rôle de notre binôme est de développer une carte fille équipée d'un microcontrôleur ATMega328p et d'un écran LCD contrôlé par un HD44780, en plus de la conception d'un Shield et d'un ordonnanceur. Cette carte sera connectée à une carte mère via un connecteur HE10 et devra gérer l'affichage de caractères ASCII, ainsi que quelques commandes spécifiques VT100. De plus, nous ajouterons une RAM SPI pour améliorer les performances de gestion de l'affichage.

Carte Fille (Écran LCD)

Description

La carte fille que nous avons développée contient les éléments suivants :

  • Un microcontrôleur ATMega328p pour la gestion de l'affichage.
  • Un écran LCD avec contrôleur HD44780 pour l'affichage de caractères ASCII.
  • Un potentiomètre 3310P pour ajuster la luminosité des cristaux liquides de l'écran.
  • Un connecteur HE10 pour relier la carte fille à la carte mère.
  • Un connecteur AVR ISP pour la programmation du microcontrôleur.
  • Une RAM SPI (e.g. FM24C04B-GTR) pour stocker temporairement les données d'affichage.

Fonctionnalités Demandées

  • Gestion de l'écran LCD : Le microcontrôleur doit gérer les écrans HD44780 avec 1, 2, 3 ou 4 lignes et afficher des caractères ASCII.
  • Saut de ligne et retour chariot : Les caractères spéciaux `\n` et `\r` doivent être pris en compte.
  • Commandes VT100 : Quelques codes VT100, notamment ceux pour le déplacement du curseur, doivent être supportés.
  • Défilement automatique : Le contrôleur HD44780 doit être configuré pour activer le mode de défilement automatique.
  • Connexion SPI : La carte mère doit envoyer les commandes via SPI. Le premier octet envoyé doit être le code commande `0x01`, suivi des caractères à afficher.
  • Vérification de la disponibilité de l'écran : La carte fille met la ligne SPI en état haut lorsque l'affichage est en cours. La carte mère doit attendre que l'état soit bas avant de transmettre de nouvelles données, ou envoyer des commandes `0xFF` pour vérifier si l'écran est prêt.

Ajout d'une RAM SPI

Pour complexifier la carte fille, nous ajouterons une RAM SPI (e.g. FM24C04B-GTR). Cette mémoire permet de stocker temporairement les caractères reçus par SPI avant leur affichage. Le microcontrôleur de la carte fille rafraîchit régulièrement l'écran en lisant les données de la RAM, ce qui améliore la fluidité de l'affichage et permet de libérer la carte mère plus rapidement.

Voici un schéma simplifié de la communication entre les composants :

  • La carte mère écrit dans la RAM SPI via le bus SPI.
  • Le microcontrôleur de la carte fille lit les données de la RAM SPI et les envoie à l'écran LCD pour mise à jour régulière.

Schéma de Connexion

Le schéma de la carte fille inclut :

  • Connexion de l'écran LCD au microcontrôleur via le bus parallèle.
  • Connexion SPI entre la carte mère et la carte fille via le connecteur HE10.
  • Connexion entre la RAM SPI et le microcontrôleur pour la gestion des données d'affichage.

Ordonnanceur

Introduction

En complément de notre travail sur la carte fille, nous avons également participé au développement de l'ordonnanceur, qui permet la gestion des tâches dans le pico ordinateur. Cet ordonnanceur est crucial pour coordonner les différentes tâches, comme l'affichage, la gestion des périphériques, et l'exécution des programmes utilisateurs.

Gestion des Tâches

L'ordonnanceur utilise un système de **Round Robin** pour gérer les tâches, et chaque tâche est assignée à une ligne SPI spécifique pour les périphériques, comme l'écran ou les claviers.

Voici un extrait du code de l'ordonnanceur qui assure le changement de tâche :

void scheduler() {
    currentTask++;
    if (currentTask == NB_TASKS) currentTask = 0; // Mode Round Robin
}

L'ordonnanceur vérifie également que chaque périphérique est disponible avant d'envoyer une nouvelle commande, pour éviter des conflits dans la gestion des affichages et autres périphériques.

Carte Shield

Description

La carte Shield est une carte mère qui sert à connecter et contrôler divers périphériques, notamment la carte fille (écran), un clavier, et d'autres composants. Nous avons conçu cette carte pour faciliter la gestion des communications SPI entre la carte mère et les différentes cartes filles.

Connectivité SPI

La carte Shield utilise plusieurs lignes SPI pour communiquer avec les cartes filles. Chaque périphérique, comme l'écran, est assigné à une ligne SPI spécifique. La carte Shield vérifie également la disponibilité des périphériques avant d'envoyer des commandes via SPI.

Tests Réalisés

Tests de la Carte Fille

  • **Affichage ASCII** : Nous avons testé l'affichage de caractères ASCII sur l'écran LCD, en envoyant des chaînes de caractères via SPI. Le microcontrôleur décode les commandes reçues et met à jour l'écran en conséquence.
  • **Défilement automatique** : Nous avons activé et testé le mode défilement automatique du contrôleur HD44780, qui permet de déplacer les lignes de texte à l'écran.
  • **Commandes VT100** : Nous avons également implémenté et testé quelques commandes VT100 pour le déplacement du curseur à l'écran.

Tests de l'Ordonnanceur

  • **Gestion des tâches** : Nous avons simulé plusieurs tâches, dont l'affichage et la gestion du clavier, et vérifié que l'ordonnanceur passe correctement d'une tâche à l'autre.

Tests de la RAM SPI

  • **Stockage des données d'affichage** : Nous avons testé la communication entre la RAM SPI et le microcontrôleur, en vérifiant que les données sont correctement stockées dans la RAM avant d'être affichées à l'écran.

Conclusion

Le développement de la carte fille pour le pico ordinateur est en bonne voie, avec une gestion efficace de l'affichage via SPI et l'ajout d'une RAM SPI pour optimiser la gestion des données. L'ordonnanceur permet également de coordonner les tâches de manière efficace. Il reste encore quelques ajustements à faire pour la gestion des commandes VT100 et l'amélioration des performances globales du système.