IMA4 2016/2017 EC1

De Wiki de Projets IMA
Révision datée du 19 mai 2017 à 10:39 par Mluo (discussion | contributions) (Avancée du projet)

Cahier des charges

Présentation générale du Projet

Contexte

Objectif

Description

Contraintes

Schéma

Choix du matériel

Avancée du projet

Synthèse

Tâche Etat Commentaire
Installation et configuration du Wiki Effectué Xavier Redon
Alimentation du Wiki En cours Manlu Luo, corrigé par Xavier Redon
Routage de la carte électronique Première version terminée Ebauche par Manlu Luo, corrigé par Xavier Redon
Vérification de la carte électronique avant tirage Effectué
Réalisation du prototype A faire
Réalisation de la carte électronique A faire
Modification de la bibliothèque SPI modifié
Ecriture des nouvelles tâches Effectuer une partie
Test de l'ordonnanceur Tester programmes

Semaine 1

J'ai configuré le Wiki de type mediaWiki présent sur le PC portable. Après avoir créé la page principale, j'ai écrit le cahier des charges et j'ai commencé le projet.

J'ai lu le sujet du projet et analysé les étapes nécessaires pour réaliser le projet. J'ai essayé de concevoir la carte électronique sur Fritzing, mais je n'arrive pas à lancer le logiciel Fritzing.

REX> Le logiciel Fritzing peut se lancer par le menu applications, sous-menu Développement.

Semaine 2

J'ai modifié la carte électronique en me basant sur le projet IMA5 "P19 Relai Ethernet LoRa". J'ai supprimé la partie LoRa et ajouté 4 LEDs sur des sorties du micro-contrôleur.

j'ai commencé analysé le programme d'ordonnancement fournit et essayé comprendre le but de chaque fonction. Les fichiers du programme sont :

  • iic.c, iic.h -> Bibliothèque I2C (inutile pour mon projet)
  • iic_matrix.c, iic_matrix.h -> Bibliothèque pour les matrices I2C (inutile pour mon projet)
  • scheduler.c, scheduler_private.h, scheduler_public.h -> Fichiers pour l'ordonnanceur lui-même, contient la fonction d'interruption ISR et la fonction d'ordonnancement scheduler() qui implante l'algorithme du tourniquet
  • semaphore.c, semaphore.h -> Fichier pour les sémaphores permettant à plusieurs processus d'accéder proprement au port série et au bus SPI, ce n'est pas fondamental dans mon projet
  • serial.c, serial.h -> Fonction d'initialisation et d'envoi de caractère sur le port série, nécessaire pour mon projet.
  • spi.c, spi.h -> Fonction de gestion du bus SPI, il y a qu'une fonction d'envoi de caractère sur le bus, il faut y ajouter les fonctions plus complexes utilisées pour l'ENC28J60
  • spi_display.c, spi_display.h -> Fichier pour l'affichage sur l'afficheur 7 segments, inutile dans mon projet
  • spi_matrix.c, spi_matrix.h -> Fichier pour l'affichage sur la matrice de LEDs, inutile dans mon projet
  • tasks.c, tasks.h -> Fichier comportant tous les processus à lancer sous forme de fonctions, je doit supprimer les fonctions inutiles pour mon projet et ajouter les nouvelles
  • timer.c, timer.h -> Fichier pour la configuration du minuteur, indispensable pour l'ordonnanceur.

Semaine 3

J'ai continué à modifier la carte électronique sur Fritzing. J'ai changé la position des LEDs et d'un grand nombre d'autres composants. En effet, après suppression de la partie LoRa, il fallait diminuer la surface de la carte.

J'ai commencé à lire les programmes. J'ai compris les fichiers de gestion de la matrice de LEDs mais ces fichiers ne sont pas utiles pour le projet.

Je ne sais pas comment mettre mon fichier Fritzing sur ce Wiki.

REX> Il faut se connecter et cliquer sur "Importer un fichier". Il fallait aussi changer des éléments de configuration de mediawiki.

Le fichier Fritzing de la carte est ici : Fichier:Ether4.fzz.

La schématique et le circuit sont visibles ci-dessous :

250px 250px
Schématique Carte



Semaine 4

j'ai fini la verification de la carte et je pense il y a pas de problème de la carte maintenant parce que il a marché sur la simulation. Cette semaine,j'ai aussi fini une partie de programme. J'ai écrit le programme pour faire clignoter les LEDs.

Semaine 5

Je fait le reference designer cette semaine. LD1117AS 3.3V The LD1117A is a LOW DROP Voltage Regulator able to provide up to 1A of output current, available even in adjustable version.

LM1117IMPX-5 This is a series of low dropout voltage regulators witha dropout of 1,2V at 800mA of load current. The LM1117 offers current limiting and thermal shutdown. Its circuit includes a zener trimmed bandgap reference assure output voltage accuracy to within 1%.

ATMEGA328 This package conforms to JEDEC reference MS-026,Variation ABA.Dimension D1 and E1 do not include mold protrusion. Allowable protrusion is 0.25mm per side. Dimensions D1 and E1 are maximum plastic body size dimensions including mold mismatch. Lead coplanarity is 0.10mm maximum.

ENC28J60 The ENC28J60 is a stand-alone Ethenet controller with an industry standard Serial Peripheral Interface(SPI). It is designed to serve as an Ethernet network interface for any controller equipped with SPI.

semaine 6

Il est demandé de transformer les tâches vTaskEthReadData et vTaskEthSendData pour qu'elles aient le comportement attendu.

La tâche vTaskEthReadData ne doit accepter que des trames avec trois octets de données et utiliser ces octets pour l'état de la LED multicouleurs. De même la tâche vTaskEthSendData doit envoyer un octet de donnée comportant l'état des boutons (uniquement quand un état change).

On choisit 0x1111 comme type pour ces paquets Ethernet.

Prenons quelques exemples :

  • un paquet Ethernet de 100 octets est reçu : il est supprimé
  • un paquet Ethernet de 17 octets est reçu mais le type est 0x806, le paquet est supprimé
  • un paquet Ethernet de 17 octet et de type 0x1111 est reçu, les octets 15, 16 et 17 sont examinés et la LED est mise dans l'état correspondant couleurs RGB de ces 3 octets.
  • un bouton est appuyé, un paquet Ethernet de 15 octets est envoyé, l'adresse Ethernet destination est ff:ff:ff:ff:ff:ff le type est 0x1111 et l'octet de donnée est tel que le bit correspondant au bouton est à 1.

D'abord,je modifie la code de partie de clignoter deux LEDs à 1Hz et 2 Hz. Je crée la tache de vTaskLED1 et vTaskLED2 pour réaliser les deux fréquences. La tache pour clignoter n'est pas très compliqué. J'ai lié les LEDs dans la port D, donc, dans la début de programme, dans la fonction setup(), je initialise la port D. Dans la fonction vTaskLED, je doit premièrement attendre une période de temps, pour différent fréquence, la période de temps est différent. Je utilise vTaskDelay( 1000 /portTICK_PERIOD_MS). Et puis, je donne la valeur dans port D, PORTD ^=(1<<2), pour faire clignoter une fois.


semaine 7

Consultez le Guide de l’utilisateur pour plus d’informations sur l’utilisation de ce logiciel de wiki.


Livrables

Détails composants

Quantité Description Vendeur Fabricant Référence Fabricant URL
1 Connecteur RJ45 Gotronic

Schématiques et PCB

PCB circuit