« SE4Binome2024-2 » : différence entre les versions
Aucun résumé des modifications |
|||
Ligne 2 : | Ligne 2 : | ||
== Introduction == | == Introduction == | ||
Ce | 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 avons ajouté une RAM SPI pour améliorer les performances de gestion de l'affichage. | ||
== Carte | == Carte Fille (Écran LCD) == | ||
=== Description === | === Description === | ||
La carte | 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** 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 === | |||
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. | |||
3. **Commandes VT100** : Quelques codes VT100, notamment ceux pour le déplacement du curseur, doivent être supportés. | |||
4. **Défilement automatique** : Le contrôleur HD44780 doit être configuré pour activer le mode de défilement automatique. | |||
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. | |||
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. | |||
=== 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. | |||
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 == | == Ordonnanceur == | ||
=== Introduction === | === 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 === | === 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 : | |||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
Ligne 92 : | Ligne 54 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
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 == | |||
== Carte Fille | === 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 === | ||
Nous avons | * **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 == | == 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. |
Version du 15 octobre 2024 à 19:37
Rapport du Pico Ordinateur
Introduction
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 avons ajouté 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** 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
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. 3. **Commandes VT100** : Quelques codes VT100, notamment ceux pour le déplacement du curseur, doivent être supportés. 4. **Défilement automatique** : Le contrôleur HD44780 doit être configuré pour activer le mode de défilement automatique. 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. 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.
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.
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.