Site de G. Laroche
FAQ et utilitaires pour
microcontroleur AVR
Translate this page
Plan du site

Utilitaires AVR

FAQ AVR

 

 

Utilitaires AVR

WinAVR Compilateur C
PonyProg Logiciel de programmation AVR ISP utilisable avec la carte de programmation AVR ISP ci dessous

Programmateur AVR ISP

carte programmateur AVR ISP port parallèle

 

FAQ AVR

FAQ sur les micro contrôleur AVR ATMEL ATmega8, ATmega32, etc ..

Cette page est le résultat des problèmes rencontrés lors de l'étude des cartes proposées sur ce site.

SIGNAL / INTERRUPT
Le comportement des macros SIGNAL et INTERRUPT pour les drivers d'interruption est différent :
INTERRUPT autorise de nouvelles interrution dès le début de la fonction par l'instruction "sei". Si cette fonctionnalité est utile pour traiter tout de suite une nouvelle interruption, elle peut toutefois poser un problème si l'interruption en cours de traitement n'est pas encore acquitée.
SIGNAL autorise une nouvelle interruption uniquement à la fin du traitement de l'interruption en cours.

Exemple : driver de réception RS232 :
#include <avr/signal.h>
SIGNAL(SIG_UART_RECV)
{
// RS232 receive process
}

Les chaînes de caractères et le mapping mémoire
Lorsque vous utilisez des chaînes de caractères (pour le debug par exemple), par défaut elles sont recopiées en mémoire RAM depuis la zone de constantes en mémoire flash pendant la phase d'initialisation.
Pour éviter cette recopie en mémoire RAM, vous pouvez utiliser les macros PGM_P et PSTR du fichiers <avr/pgmspace.h> afin d'accèder directement dans l'espace programme en flash.
PGM_Pdéfinit un pointeur sur un caractere en mémoire flash
PGM_P définit une chaîne de caractères en mémoire flash

Exemple : affichage trace de debug :
#include <avr/pgmspace.h>
...
PrintfStr(PSTR("Memorisation Frequence:"));
...
void PrintfStr( PGM_P data ); // Emission d'une chaine de caracteres depuis la flash

Sélection de l'horloge (Quartz/horloge interne)
Par défaut les µP ATmega sont configurés pour utiliser une horloge interne de 1MHz.
Si vous utilisez un quartz ou une horloge externe il est necessaire de reconfigurer les bits 'fusibles' CKOPT, CKSEL3, CKSEL2, CKSEL1 et CKSEL0
La valeur "1" correspond à un bit non programmé (bit non sélectionné dans la fenêtre ponyprog)
La valeur "0" correspond à un bit programmé (bit sélectionné dans la fenêtre ponyprog)

Exemple de configuration pour un quartz de 16 MHz (ou >3MHz):

CKOPT CKSEL3 CKSEL2 CKSEL1 CKSEL0
0
1
1
1
1

 

Exemple de configuration pour un quartz de 2.432MHz (ou <3MHz):

CKOPT CKSEL3 CKSEL2 CKSEL1 CKSEL0
0
1
1
0
1

 

Utilisation des résistances de pull-up internes
Les µP ATmega disposent de résistances de pullup intégrées.

Ces résistances internes peuvent être toutes désactivées en positionnant à 1 le bit PUD du registre SFIOR.

Chaque résistance peut aussi être désactivée individuellement en positionnant à 0 le bit du registre PORT correspondant à l'entrée utilisée.

Le tableau ci dessous résume les conditions d'activations des résistances de pull up:

DDxn
PORTxn
PUD (in SFIOR)
I/O
Pull up
commentaires
0 0 X input
NO
haute impédance (Tri state Hi-Z)
0 1 0 input
Yes
Pxn source de courrant si l'entrée est au niveau bas
0 1 1 input
NO
haute impédance (Tri state Hi-Z)


 

retour home page
Hardware