Actions
Atmel AVR¶
Particularités pour les microcontrôleurs 8 bits AVR d’Atmel.
Règles¶
- Macros définis dans le fichier 
config.h- 
F_CPU: La fréquence utilisée par l’horloge (interne ou externe) du microcontrôleur, en HzLes « fuses » doivent correspondent à la bonne source de l’horloge.
 
 - 
 - De nouveau type d’entier sont fournis avec la librairie 
stdint.h. L’utilisation de ces types DOIT être utilisé afin d’exprimer le nombre de bit d’un objet. - Progmem : Pour mettre des variables en lecture seule dans la section FLASH au lieu de SRAM.
- Inclue la librairie 
avr/pgmspace.h - Le nom de la variable DOIT être suivie de _P
 - Utiliser les macros de la librairie pour accéder à ces variables
 
 - Inclue la librairie 
 - Fonction 
main
> * AVR035 : Efficient C Coding for AVR6
> https://gcc.gnu.org/onlinedocs/gcc/AVR-Function-Attributes.html- Déclarer la fonction avec le type 
voidet l’attributOS_main - Utiliser une boucle sans fin 
for (;;) 
 - Déclarer la fonction avec le type 
 - Opérations atomiques (opérations ne devant pas être interrompus)
- Inclure la librairie 
util/atomic.h - Insérer les instructions dans une section 
ATOMIC_BLOCK 
 - Inclure la librairie 
 - Interruptions
- TODO
 
 
Exemple¶
#if !defined (__AVR_ATmega48__) || (__AVR_ATmega48P__)
    #warning "Cette librairie n'as pas été testée sur cette famille de microcontrôleur."
#endif
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/atomic.h>
/** @brief Variable en FLASH */
char my_string[] PROGMEM = "POWER";
/** 
 * @brief La fonction principale
*/
void main(void) __attribute__ ((OS_main));
void main(void)
{
    ...
    ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
        /* Initialisations ne devant pas être interrompues */
        ...
    }
    /* Boucle sans fin */
    for (;;)
    {
    };
};
Justifications¶
Mis à jour par Patrice Nadeau il y a 3 mois · 31 révisions