SE4Binome2026-1
Cahier des charges
L'objectif est de réaliser une carte mère.
Lien GIT
https://gitea.plil.fr/tregaud/IOT4_Pico_Bouallegui_Reugo
Carte mère
Hardware
Composants
- [x] ATmega32U4
- [x] ATmega16U2
- [ ] USB A : footprint = USB_A_Molex_48037-2200_Horizontal (male)
- [ ] USB A : footprint = A verif si la meme pour femelle
- [ ] USB C
- [x] Regulateur de tension : footprint = MCP1640Bx-xCHY
- [ ] Crystal 8MHz : footprint = Crystal_SDM_3223_4pin_3.2x2.5mm
- [x] AT45DB641E
Software
Cartes filles
Les cartes filles peuvent être de différents types :
- carte fille clavier ;
- carte fille d'affichage ;
- carte fille série (se comporte comme un clavier et comme un dispositif d'affichage) ;
- carte fille réseau ;
- carte fille mémoire de masse (alternative à la mémoire de masse de la carte mère) ;
- carte fille son.
A choisir plus tard...
Ordonnanceur
On veut faire clignoter les leds D3 et D4 du shield.
Cela correspond aux broches D10 et D11 de l'arduino UNO.
Soit les registres PB2 et PB3 du uP
Etapes clés
- Sauvegarder
- Ordonnancer
- Restaurer
Chaque processus contient l'adresse du début de la fonction, un pointeur vers la stack en mémoire et son état
typedef struct {
uint16_t addr; // debut de la fonction
uint16_t ptr; // Stack
uint16_t state;
} Proc;
Les stack des processus sont calculés par la formule suivante : 0x800+(nb_proc-1)*0x50
void init_stack(uint16_t func_addr){
Proc *p = &proc_table[nb_proc++];
p->addr=func_addr;
p->state=0;
uint16_t old = SP;
SP=0x800+(nb_proc-1)*0x50;
asm volatile("push %0" : : "r" (func_addr & 0x00ff) );
asm volatile("push %0" : : "r" ((func_addr & 0xff00)>>8) );
SAVE_REGISTERS();
p->ptr=SP;
SP=old;
}
Système de fichier
A voir plus tard
Historique des séances
08/09 :
Lecture du sujet
Recherche des datasheets
Installation Kicad 9
Début du schéma dans Kicad
10/09 :
Amphi Ordonnanceur + Système de fichiers
Début du code de l'ordonnanceur : les leds clignotent en parallèle mais avec un timer biaisé
Kicad un peu plus avancé