1 II2/AVR II2 - Microcontroleur Introduction Famille ATMEL AVR8bits ATMega16 Organisation Mémoire Architecture CPU Modes d'adressage et jeu d'instructions Interface Mémoire Port d'E/S, //, timer, périphériques.... Liaison série Fonctions, Interruptions,...
2 II2/AVR Périphériques E/S numériques Timers/counters/PWM/RTC Liaison sarie SPI,I2C, RS232, USB E/S analogique Watchdog Eeprom... Périphériques dédiés à des applications (DALI, Radio Zigbee 2.4Ghz, LCD,
3 II2/AVR Principes généraux Tous les périphériques internes sont « configurables » par l'intermédiaire des registres d'I/O (0x20 0x5F) Plusieurs périphériques peuvent partager une même pin La plupart des périphériques peuvent fonctionner en mode d'interruption : Le périphérique peut « interrompre » le CPU pour signaler un événement Par exemple : Un front descendant est arrivé sur une entrée numérique Un timer à expiré, une donnée est arrivée sur un port série etc....
4 II2/AVR ATMega 16
5 II2/AVR Ports entrées/sorties 8 bits Bidirectionnels bits a bits Résistance de Pull up internes 4 ports (Port A.. Port D) sur un Atmega 16
6 II2/AVR Ports E/S numériques 3 registres PORTx, DDRx, PINx par port Bit 0 des registres => PORTx0,DDRx0, PINx0 des registres définies dans
7 II2/AVR Ports E/S numériques DDRx = Data Direction Register (R/W) Bit DDRxn= '1' ==> la pin correspondante est une sortie Bit DDRxn= '0' ==> la pin correspondante est une entrée PORTx = Registre de PORT(R/W) Si le port est configuré en sortie (DDRx=1) PORTxn ='1' ==> +5V PORTxn ='0' ==> 0V Si le port est configurée en entrée (DDRx=0) PORTxn ='0' ==> Entrée haute impédance PORTxn ='1' ==> Résistance pull up PINx = registre PIN (R seulement) Si PINxn = '1', la pin est au niveau 5V Si PINxn = '0', la pin est au niveau 0V ATTENTION : C'est vrai aussi si PORTxn est une sortie
8 II2/AVR Ports E/S numériques Exemples DDRB = 0x0F; PB7 à PB4 en entrées PB3 à PB0 en sorties PORTB = 0x0C; Vpin3 = Vpin2 = 5V Vpin1 = Vpin1 = 0V
9 II2/AVR Ports E/S numériques Exemple sortie Vpin3 = Vpin2 = 5V Id = 0mA, LED éteintes Vpin1 = Vpin1 = 0V Id = (5-2)/470 =6mA LED allumées Remarque : Max 20mA/pin Max 100mA/port Max 200mA pout Boitier DIP PORTB = 0x0C;
10 II2/AVR Ports E/S numériques Exemple entrée unsigned char etat ; DDRD = 0x00; etat = PIND; PB7 à PB0 en entrées etat_x = 1 si 5V etat_x = 1 si 0V Si BP enfoncé 0V OK Si BP relâché 5V pour PD0 (Résistance Pull Up) ???? pour PD1 a PD3 !!!!
11 II2/AVR Résistance de pull UP Si nécessaire (BPoussoirs) mais pas obligatoire (tension entrée imposée par un signal) Résistance de pull up interne Activable bit a bit PORTx='1' Désactivables globalement (4ports*8bits) par le bit PUD (PullUp Disable) du registre SFIOR
12 II2/AVR Port E/S
13 II2/AVR DDRxn=1,PORTxn= DDRxn='1' PORTxn='0' V
14 II2/AVR DDRxn=0,PORTxn= DDRxn='0' PORTxn='0' 0 0 5V Etat =PINxn 1
15 II2/AVR Timers/Counters Gestion du temps /Compteurs/Génération signaux périodiques ATMega 16 3 Timers/Counters Timer 0,Timer 2 => 8bits Timer 1 => 16bits Entrée de comptage choisie parmi 7 5 internes (Clk,clk/8,clk/64, clk/256, clk/1024) 1 externe (front montant ou descendant) Nombreux modes de fonctionnement Génération de signaux possible (OC0, OCA1,OCB1...)
16 II2/AVR Timers/Counters 0
17 II2/AVR Timers/Counters 4 Registres IO pour Timer 0 TCCR0 = Timer Counter Control Reg0 Contrôle les modes de fonctionnement TCNT0 = TimerCouNTer 0 Registre de comptage OCR0 = Output Compare Reg 0 Valeur de comparaison (avec TCNT0) TIFR = Timer Interrupt Flag Register 2 bits importants : TOV0 : TCNT0 vient de déborder 0xFF-->0x00 OCF0 : TCNT0 = OCRS0
18 II2/AVR Timers/Counters TCCR0 = Timer Counter Control Reg0 Contrôle les modes de fonctionnement CS02:CS00 Sélection de l'horloge de comptage
19 II2/AVR Timers/Counters WGM01:WGM00 Modes de fonctionnement Mode 0 : Delai (TCNT0-->0xFF) Mode 2 : Horloge périodique (0-->OCR0
20 II2/AVR Timer 0 MODE 0 WGM00=WGM01=0 CS02:CS00 = '011' => Fclk/8 0xFF0x010x000xFE OVERFLOW 1
21 II2/AVR Timer 0 MODE 0 WGM00=0,WGM01=0 CS02:CS00 = '011' => Fclk/8 OCR0=0x53 0x53 0x55 0x540x52 COMPARE OCR=TCNT = 1 =0x53
22 II2/AVR Timer 0 MODE 2 (CTC) WGM00=0,WGM01=1 CTC = Clear Timer on Compare OCR0=0x53 0x53 0x01 0x000x52 COMPARE OCR=TCNT = 1 =0x53
23 II2/AVR Timer 1 Idem Timer 0 sauf Timer 16 bits 2 unités de comparaison 16 bits 10 registres de configurations
24 II2/AVR Timer 1