« SE4Binome2023-4 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 88 : Ligne 88 :
=== Partie 2 : Programmation ===
=== Partie 2 : Programmation ===
Maintenant que la carte est utilisable, il nous faut passer à la programmation de celle-ci
Maintenant que la carte est utilisable, il nous faut passer à la programmation de celle-ci
==== Test Basique ====


Nous avons commencer par un code simple allumant la LED de notre carte pour vérifier que l'envoie du code s'effectue correctement sur la carte et que les soudures sont bonnes.[[Fichier:VideoRNDIS LED.mp4|vignette|0x0px|LED RNDIS]]
Nous avons commencer par un code simple allumant la LED de notre carte pour vérifier que l'envoie du code s'effectue correctement sur la carte et que les soudures sont bonnes.[[Fichier:VideoRNDIS LED.mp4|vignette|0x0px|LED RNDIS]]
Ligne 115 : Ligne 118 :
}
}
</syntaxhighlight>
</syntaxhighlight>
==== Test LUFA RNDIS ====




Ligne 123 : Ligne 128 :
Une fois cela effectué, nous pouvons constater que notre carte est bien reconnue comme carte RNDIS et elle possède sa propre interface "usb0"
Une fois cela effectué, nous pouvons constater que notre carte est bien reconnue comme carte RNDIS et elle possède sa propre interface "usb0"
[[Fichier:Lsusb RNDIS.png|néant|vignette|Test lsusb]]
[[Fichier:Lsusb RNDIS.png|néant|vignette|Test lsusb]]


Par la suite, il faut affecter une adresse IP à notre carte : <syntaxhighlight lang="shell">
Par la suite, il faut affecter une adresse IP à notre carte : <syntaxhighlight lang="shell">
Ligne 129 : Ligne 133 :
</syntaxhighlight>On obtient avec ip a :
</syntaxhighlight>On obtient avec ip a :
[[Fichier:Ipa RNDIS.png|néant|vignette|Test ip a]]
[[Fichier:Ipa RNDIS.png|néant|vignette|Test ip a]]
Nous pouvons, suite à cela, ping notre carte RNDIS :
Nous pouvons, suite à cela, ping notre carte RNDIS :
Nous pouvons, suite à cela, ping notre carte RNDIS :
[[Fichier:PING RNDIS.png|néant|vignette|Ping]]
[[Fichier:PING RNDIS.png|néant|vignette|Ping]]

Version du 11 décembre 2023 à 09:27

GIT

Adresse du GIT : https://archives.plil.fr/tnave/PICO_Thomas_NAVE_Thibault_DUYCK.git

Ordonnanceur

Pour la réalisation de notre pico-ordinateur, nous devons réaliser un ordonnanceur qui permettra de gérer nos différents processus.

Réalisation du shield

La première étape consiste à réaliser le shield et le connecteur pour la matrice de LED qui nous permettra d'effectuer tous les tests liés au programme de l'ordonnanceur.

Première partie du shield
Shield terminé
Adaptateur LED
Câbles


Nous avons testé les LED de notre ordonnanceur avec un code basique pour vérifier si les soudures étaient bonnes et si on arrivait à utiliser les Chip Select de la carte :

LED Shield
#include <avr/io.h>

void init_led(){
  DDRD=0x92;
  DDRC=0x09;
}

int main(){
  init_led();
  while(1)
    {
	PORTD=0x92;
	PORTC=0x09;
    }
  return 0;
}

Programmation

Nous pouvons donc commencer à travailler sur l’ordonnanceur :

  • Première étape : Création d'un ordonnanceur avec test sur 2 LED (avec delay_ms) : OK
  • Deuxième étape : Modification du code afin d'avoir un état "ACTIF" ou "SLEEP" sur une tâche : OK
  • Troisième étape : Ajout de la lecture et de l'écriture sur le port USB : OK
  • Quatrième étape : Gestion de la matrice de LED avec la lecture sur port USB : OK ( voir vidéo )
  • Cinquième étape : Gestion du 7-segments avec la lecture sur port USB : OK ( voir vidéo )

Nous avons complété l'ordonnanceur avec ses différentes tâches. Cependant, pour que les deux tâches utilisant le bus SPI fonctionnent en simultané, il faudrait ajouter une tache supplémentaire contrôlant ce bus SPI.

Carte FPGA

.......

Carte électronique numérique

Carte choisie : Carte Réseau RNDIS

Commentaire :

- Problème 1 : Mauvais positionnement de Chip Select dans la conception --> OK

Partie 1 : Réalisation de la carte

Il faut donc effectuer la conception de la carte :

On commence par le schematic ci-joint

Schematic carte RNDIS


Après avoir terminé le schematic, on peut passer au routage de la carte

Routage

Une fois la carte recue, il faut passer à la soudure :

Carte Vide
Carte Vide
Carte Soudée
Carte Soudée


Nous avons constaté par la suite que le Chip Select du SPI devait se trouver sur le PB0 ainsi nous avons ajouter un fil d'étain entre PB0 et PB4 pour régler ce problème

Partie 2 : Programmation

Maintenant que la carte est utilisable, il nous faut passer à la programmation de celle-ci

Test Basique

Nous avons commencer par un code simple allumant la LED de notre carte pour vérifier que l'envoie du code s'effectue correctement sur la carte et que les soudures sont bonnes.

#include <avr/io.h>
#include <util/delay.h>

void init_led()
{
  DDRD=0x01;
}

int main(){
  CLKSEL0 = 0b00010101;   // sélection de l'horloge externe
  CLKSEL1 = 0b00001111;   // minimum de 8Mhz
  CLKPR = 0b10000000;     // modification du diviseur d'horloge (CLKPCE=1)
  CLKPR = 0;              // 0 pour pas de diviseur (diviseur de 1)
  init_led();
  while(1)
    {
      PORTD=0x01;
      _delay_ms(500);
      PORTD=0x00;
      _delay_ms(500);
    }
  return 0;
}

Test LUFA RNDIS

Nous avons utilisé la démonstration LUFA RNDIS pour que notre carte soit reconnu comme carte RNDIS

Pour cela, il a fallu réduire la taille de la pile pour adapter la démonstration à notre Atmega16u2. Nous avons fait le choix de réduire la pile en laissant l'Ethernet et ICMP.

Une fois cela effectué, nous pouvons constater que notre carte est bien reconnue comme carte RNDIS et elle possède sa propre interface "usb0"

Test lsusb

Par la suite, il faut affecter une adresse IP à notre carte :

ip address add 10.0.0.2/24 dev usb0

On obtient avec ip a :

Test ip a

Nous pouvons, suite à cela, ping notre carte RNDIS :

Nous pouvons, suite à cela, ping notre carte RNDIS :

Ping