Partielo | Créer ta fiche de révision en ligne rapidement

MCU

# Fiche méthode : Microcontrôleurs


## 1. Architecture de base


### 1.1 Composants principaux

- **Program Counter (PC)** : Registre 13 bits qui pointe vers la prochaine instruction à exécuter.

- **Instruction Register (IR)** : Stocke l'opcode de l'instruction en cours.

- **Mémoire de programme (PM)** : 14 bits, stocke les instructions.

- **Mémoire de données (DM)** : 8 bits, stocke les données.

- **ALU** : Unité arithmétique et logique pour les calculs.

- **Accumulateur (W)** : Registre de travail principal.

- **Stack** : Pour les appels de sous-routines et les interruptions.


### 1.2 Architecture Harvard

- Sépare la mémoire de programme (PM) et la mémoire de données (DM).

- Permet des accès simultanés aux instructions et aux données.


## 2. Programmation en assembleur


### 2.1 Instructions de base

- Transfert de données : `MOVF`, `MOVWF`, `MOVLW`

- Opérations arithmétiques : `ADDWF`, `SUBWF`, `INCF`, `DECF`

- Opérations logiques : `ANDWF`, `IORWF`, `XORWF`

- Contrôle de flux : `GOTO`, `CALL`, `RETURN`, `RETFIE`


### 2.2 Exemple de code

```assembly

; Incrémente PORTB

MOVF PORTB, W  ; Charge la valeur de PORTB dans W

INCF W, W    ; Incrémente W

MOVWF PORTB   ; Stocke le résultat dans PORTB

```


## 3. Gestion des interruptions


### 3.1 Processus d'interruption

1. Sauvegarde du PC dans la pile

2. Chargement de l'adresse du vecteur d'interruption dans le PC

3. Exécution de la routine d'interruption

4. Retour à l'exécution normale avec `RETFIE`


### 3.2 Configuration

- Activer les interruptions globales (GIE)

- Configurer les sources d'interruption individuelles


## 4. Timers et compteurs


### 4.1 Utilisation

- Mesure de temps

- Génération de délais précis

- Comptage d'événements


### 4.2 Configuration

- Choisir la source d'horloge (interne/externe)

- Configurer le prescaler pour ajuster la fréquence

- Activer les interruptions si nécessaire


## 5. Conversion analogique-numérique (ADC)


### 5.1 Principe

- Convertit un signal analogique en valeur numérique


### 5.2 Configuration

- Choisir la résolution (ex: 10 bits)

- Sélectionner le canal d'entrée

- Configurer le format de résultat (ADFM bit)


## 6. Techniques de programmation


### 6.1 Débouncing des boutons

```assembly

CHECK_BUTTON:

  BTFSC PORTD, 0  ; Vérifie si le bouton est pressé

  GOTO NOT_PRESSED

  ; Code pour gérer le bouton pressé

  GOTO CHECK_BUTTON

NOT_PRESSED:

  ; Code pour gérer le bouton non pressé

  GOTO CHECK_BUTTON

```


### 6.2 Utilisation de la pile

- Pour les appels de sous-routines : `CALL` pousse PC sur la pile, `RETURN` récupère l'adresse

- Pour les interruptions : Sauvegarde automatique du contexte


## 7. Astuces et bonnes pratiques


- Utiliser des commentaires pour expliquer le code

- Organiser le code en sections (initialisation, boucle principale, sous-routines)

- Gérer correctement les changements de banque mémoire

- Utiliser des macros pour le code répétitif

- Tester chaque partie du code individuellement avant l'intégration


## 8. Conversion de bases numériques


- Hexadécimal vers binaire : 0x14 = 0b00010100

- Binaire vers hexadécimal : 0b01010101 = 0x55

- Conversions décimales : 0xECE = 3790 (base 10)


N'oubliez pas de consulter la documentation spécifique du microcontrôleur que vous utilisez pour les détails précis de l'implémentation.


MCU

# Fiche méthode : Microcontrôleurs


## 1. Architecture de base


### 1.1 Composants principaux

- **Program Counter (PC)** : Registre 13 bits qui pointe vers la prochaine instruction à exécuter.

- **Instruction Register (IR)** : Stocke l'opcode de l'instruction en cours.

- **Mémoire de programme (PM)** : 14 bits, stocke les instructions.

- **Mémoire de données (DM)** : 8 bits, stocke les données.

- **ALU** : Unité arithmétique et logique pour les calculs.

- **Accumulateur (W)** : Registre de travail principal.

- **Stack** : Pour les appels de sous-routines et les interruptions.


### 1.2 Architecture Harvard

- Sépare la mémoire de programme (PM) et la mémoire de données (DM).

- Permet des accès simultanés aux instructions et aux données.


## 2. Programmation en assembleur


### 2.1 Instructions de base

- Transfert de données : `MOVF`, `MOVWF`, `MOVLW`

- Opérations arithmétiques : `ADDWF`, `SUBWF`, `INCF`, `DECF`

- Opérations logiques : `ANDWF`, `IORWF`, `XORWF`

- Contrôle de flux : `GOTO`, `CALL`, `RETURN`, `RETFIE`


### 2.2 Exemple de code

```assembly

; Incrémente PORTB

MOVF PORTB, W  ; Charge la valeur de PORTB dans W

INCF W, W    ; Incrémente W

MOVWF PORTB   ; Stocke le résultat dans PORTB

```


## 3. Gestion des interruptions


### 3.1 Processus d'interruption

1. Sauvegarde du PC dans la pile

2. Chargement de l'adresse du vecteur d'interruption dans le PC

3. Exécution de la routine d'interruption

4. Retour à l'exécution normale avec `RETFIE`


### 3.2 Configuration

- Activer les interruptions globales (GIE)

- Configurer les sources d'interruption individuelles


## 4. Timers et compteurs


### 4.1 Utilisation

- Mesure de temps

- Génération de délais précis

- Comptage d'événements


### 4.2 Configuration

- Choisir la source d'horloge (interne/externe)

- Configurer le prescaler pour ajuster la fréquence

- Activer les interruptions si nécessaire


## 5. Conversion analogique-numérique (ADC)


### 5.1 Principe

- Convertit un signal analogique en valeur numérique


### 5.2 Configuration

- Choisir la résolution (ex: 10 bits)

- Sélectionner le canal d'entrée

- Configurer le format de résultat (ADFM bit)


## 6. Techniques de programmation


### 6.1 Débouncing des boutons

```assembly

CHECK_BUTTON:

  BTFSC PORTD, 0  ; Vérifie si le bouton est pressé

  GOTO NOT_PRESSED

  ; Code pour gérer le bouton pressé

  GOTO CHECK_BUTTON

NOT_PRESSED:

  ; Code pour gérer le bouton non pressé

  GOTO CHECK_BUTTON

```


### 6.2 Utilisation de la pile

- Pour les appels de sous-routines : `CALL` pousse PC sur la pile, `RETURN` récupère l'adresse

- Pour les interruptions : Sauvegarde automatique du contexte


## 7. Astuces et bonnes pratiques


- Utiliser des commentaires pour expliquer le code

- Organiser le code en sections (initialisation, boucle principale, sous-routines)

- Gérer correctement les changements de banque mémoire

- Utiliser des macros pour le code répétitif

- Tester chaque partie du code individuellement avant l'intégration


## 8. Conversion de bases numériques


- Hexadécimal vers binaire : 0x14 = 0b00010100

- Binaire vers hexadécimal : 0b01010101 = 0x55

- Conversions décimales : 0xECE = 3790 (base 10)


N'oubliez pas de consulter la documentation spécifique du microcontrôleur que vous utilisez pour les détails précis de l'implémentation.

Retour

Actions