Acessando os periféricos de um microcontrolador

2,359 views

Published on

Programação dos Periféricos, Acesso às portas do microcontrolador, Configuração dos periféricos e o Barramento de Led's

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,359
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
55
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Acessando os periféricos de um microcontrolador

  1. 1. Programa¸c˜ao dos Perif´ericos Prof.MSc.Rodrigo Maximiano Antunes de Almeida Universidade Federal de Itajub´a rodrigomax@unifei.edu.br ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 1 / 27
  2. 2. Arquitetura de Microcontroladores Esquema el´etrico e circuitos importantes ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 2 / 27
  3. 3. Arquitetura de Microcontroladores Multiplexa¸c˜ao nos terminais do microcontrolador Ex: o oitavo terminal do PIC18F4550. Pode ser configurado como terminal: de entrada ou sa´ıda referente ao primeiro bit da porta E (RE0) de leitura anal´ogica pertencente ao quinto conversor anal´ogico - digital (AN5) utilizado para enviar um clock externo de comunica¸c˜ao paralela (CK1SPP) ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 3 / 27
  4. 4. Arquitetura de Microcontroladores Registros de configura¸c˜ao do microcontrolador Registros de configura¸c˜ao do microcontrolador ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 4 / 27
  5. 5. Arquitetura de Microcontroladores Esquema el´etrico e circuitos importantes ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 5 / 27
  6. 6. Arquitetura de Microcontroladores Registros de configura¸c˜ao do microcontrolador 1 // c o n f i g . h 2 #ifndef CONFIG_H 3 #define CONFIG_H 4 // P l l d e s l i g a d o 5 code char at 0x300000 CONFIG1L = 0x01 ; 6 // O s c i l a d o r c/ c r i s t a l ext erno HS 7 code char at 0x300001 CONFIG1H = 0x0C ; 8 // Watchdog c o n t r o l a d o por s o f t w a r e 9 code char at 0x300003 CONFIG2H = 0x00 ; 10 // Sem programa¸c˜ao em baixa tens˜ao 11 code char at 0x300006 CONFIG4L = 0x00 ; 12 #endif //CONFIG H ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 6 / 27
  7. 7. Programa¸c˜ao dos Perif´ericos Programa¸c˜ao dos Perif´ericos . . . In theory, there is no difference between theory and practice; In practice, there is. Chuck Reid ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 7 / 27
  8. 8. Programa¸c˜ao dos Perif´ericos Perif´ericos dispon´ıveis Sa´ıda Barramento de Led’s Display de 7 segmentos Display LCD 2x16 Sa´ıdas PWM Entrada Teclado 4*4 Conversor AD Outros Serial RS232 Tratador de Interrup¸c˜oes Watchdog ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 8 / 27
  9. 9. Programa¸c˜ao dos Perif´ericos Barramento de Leds ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 9 / 27
  10. 10. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 10 / 27
  11. 11. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador O microcontrolador PIC 18F4550 possui 5 portas PORTA: bidirecional com 7 bits PORTB: bidirecional com 8 bits PORTC: bidirecional com 7 bits PORTD: bidirecional com 8 bits PORTE: 3 bits bidirecionais e 1 bit apenas entrada ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 11 / 27
  12. 12. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador Bit número PORTB 0 Terminal Físico 33 1 34 2 35 3 36 4 37 5 38 6 39 7 40 ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 12 / 27
  13. 13. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 37 Trisb:4 Leitor Gravador 4Trisb:4 = 1 = 0 = 0 = 1 < 2volts = 0 > 3volts = 1 PORTB Abrir datasheet do PIC18f4550 na pagina 110. ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 13 / 27
  14. 14. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador Porta Endere¸co dos dados Endere¸co de configura¸c˜ao (TRIS) PORTA 0xF80 0xF92 PORTB 0xF81 0xF93 PORTC 0xF82 0xF94 PORTD 0xF83 0xF95 PORTE 0xF84 0xF96 ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 14 / 27
  15. 15. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1 // i n i c i o do programa 2 void main ( void ) 3 { 4 // d e f i n i m o s como : 5 // ( unsigned char ) p o i s os 8 b i t s representam v a l o r e s 6 // ( v o l a t i l e ) as v a r i ´a v e i s podem mudar a qualquer momento 7 // ( near ) i n d i c a que o r e g i s t r o e s t a na mem´oria de dados 8 v o l a t i l e near unsigned char ∗PORTD = 0xF83 ; 9 v o l a t i l e near unsigned char ∗TRISD = 0xF95 ; 10 // configurando todos os pinos como s a´ı d a s 11 // 0 = s a´ı d a ( Output ) 12 // 1 = entrada ( Input ) 13 ∗TRISD = 0b00000000 ; 14 // l i g a apenas os quatro ´u l t i m o s l e d s 15 ∗PORTD = 0b11110000 ; 16 //mant´em o sistema l i g a d o i n d e f i n i d a m e n t e 17 f o r ( ; ; ) ; 18 } ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 15 / 27
  16. 16. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1 // d e f i n e s para p o r t a s de entrada e s a´ı d a 2 #define PORTD (∗( v o l a t i l e near unsigned char ∗) 0xF83 ) 3 #define TRISD (∗( v o l a t i l e near unsigned char ∗) 0xF95 ) 4 // i n i c i o do programa 5 void main ( void ) 6 { 7 // configurando todos os pinos como s a´ı d a s 8 TRISD = 0b00000000 ; 9 // l i g a apenas os quatro ´u l t i m o s l e d s 10 PORTD = 0b11110000 ; 11 //mant´em o sistema l i g a d o i n d e f i n i d a m e n t e 12 f o r ( ; ; ) ; 13 } ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 16 / 27
  17. 17. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador Vantagens no uso dos #defines Utiliza¸c˜ao n˜ao requer uso do *, pois j´a est´a incluso no define Economiza mem´oria ram. Criando uma vari´avel ´e necess´ario reservar um espa¸co para armazenar o valor do ponteiro. A defini¸c˜ao pode ser feita em apenas um arquivo do tipo header. Os outros arquivos que precisem utilizar estas defini¸c˜oes devem apenas incluir este header. A mudan¸ca de arquitetura ´e mais simples. Criando apenas um arquivo com os defines ´e mais simples migrar o c´odigo de uma arquitetura para outra. Aten¸c˜ao O tamanho do programa final est´a intimamente ligado ao compilador utilizado. Dependendo das otimiza¸c˜oes que s˜ao (ou n˜ao) realizadas, o programa pode ficar maior com o uso dos defines. ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 17 / 27
  18. 18. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1 // b a s i c o . h 2 // fun¸c˜oes de b i t 3 #define BitSet ( arg , bit ) (( arg ) |= (1<<bit ) ) 4 #define BitClr ( arg , bit ) (( arg ) &= ˜(1<<bit ) ) 5 #define BitFlp ( arg , bit ) (( arg ) ˆ= (1<<bit ) ) 6 #define BitTst ( arg , bit ) (( arg ) & (1<<bit ) ) 7 8 // d e f i n e s para r e g i s t r o s e s p e c i a i s 9 #define PORTA (∗( v o l a t i l e near unsigned char ∗) 0xF80 ) 10 #define PORTB (∗( v o l a t i l e near unsigned char ∗) 0xF81 ) 11 #define PORTC (∗( v o l a t i l e near unsigned char ∗) 0xF82 ) 12 #define PORTD (∗( v o l a t i l e near unsigned char ∗) 0xF83 ) 13 #define PORTE (∗( v o l a t i l e near unsigned char ∗) 0xF84 ) 14 15 #define TRISA (∗( v o l a t i l e near unsigned char ∗) 0xF92 ) 16 #define TRISB (∗( v o l a t i l e near unsigned char ∗) 0xF93 ) 17 #define TRISC (∗( v o l a t i l e near unsigned char ∗) 0xF94 ) 18 #define TRISD (∗( v o l a t i l e near unsigned char ∗) 0xF95 ) 19 #define TRISE (∗( v o l a t i l e near unsigned char ∗) 0xF96 ) ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 18 / 27
  19. 19. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1 // b a s i c o . h 2 #define INTCON (∗( v o l a t i l e near unsigned char ∗) 0xFF2 ) 3 #define INTCON2 (∗( v o l a t i l e near unsigned char ∗) 0xFF1 ) 4 #define PIE1 (∗( v o l a t i l e near unsigned char ∗) 0xF9D ) 5 #define PIR1 (∗( v o l a t i l e near unsigned char ∗) 0xF9E ) 6 7 #define TMR0L (∗( v o l a t i l e near unsigned char ∗) 0xFD6 ) 8 #define TMR0H (∗( v o l a t i l e near unsigned char ∗) 0xFD7 ) 9 #define T0CON (∗( v o l a t i l e near unsigned char ∗) 0xFD5 ) 10 11 #define SPPCON (∗( v o l a t i l e near unsigned char ∗) 0xF65 ) 12 #define SPPCFG (∗( v o l a t i l e near unsigned char ∗) 0xF63 ) 13 14 #define ADCON2 (∗( v o l a t i l e near unsigned char ∗) 0xFC0 ) 15 #define ADCON1 (∗( v o l a t i l e near unsigned char ∗) 0xFC1 ) 16 #define ADCON0 (∗( v o l a t i l e near unsigned char ∗) 0xFC2 ) 17 #define ADRESL (∗( v o l a t i l e near unsigned char ∗) 0xFC3 ) 18 #define ADRESH (∗( v o l a t i l e near unsigned char ∗) 0xFC4 ) ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 19 / 27
  20. 20. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1 // b a s i c o . h 2 #define RCSTA (∗( v o l a t i l e near unsigned char ∗) 0xFAB ) 3 #define TXSTA (∗( v o l a t i l e near unsigned char ∗) 0xFAC ) 4 #define TXREG (∗( v o l a t i l e near unsigned char ∗) 0xFAD ) 5 #define RCREG (∗( v o l a t i l e near unsigned char ∗) 0xFAE ) 6 #define SPBRG (∗( v o l a t i l e near unsigned char ∗) 0xFAF ) 7 #define SPBRGH (∗( v o l a t i l e near unsigned char ∗) 0xFB0 ) 8 #define BAUDCON (∗( v o l a t i l e near unsigned char ∗) 0xFB8 ) 9 #define RCON (∗( v o l a t i l e near unsigned char ∗) 0xFD0 ) 10 11 #define WDTCON (∗( v o l a t i l e near unsigned char ∗) 0xFD1 ) 12 13 #define T2CON (∗( v o l a t i l e near unsigned char ∗) 0xFCA ) 14 #define PR2 (∗( v o l a t i l e near unsigned char ∗) 0xFCB ) 15 #define CCP2CON (∗( v o l a t i l e near unsigned char ∗) 0xFBA ) 16 #define CCPR2L (∗( v o l a t i l e near unsigned char ∗) 0xFBB ) 17 #define CCP1CON (∗( v o l a t i l e near unsigned char ∗) 0xFBD ) 18 #define CCPR1L (∗( v o l a t i l e near unsigned char ∗) 0xFBE ) 19 20 // fun¸c˜ao para limp ar o watchdog 21 #define CLRWTD () _asm CLRWDT _endasm ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 20 / 27
  21. 21. Programa¸c˜ao dos Perif´ericos Configura¸c˜ao dos perif´ericos ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 21 / 27
  22. 22. Programa¸c˜ao dos Perif´ericos Configura¸c˜ao dos perif´ericos Term. Descri¸c˜ao Configurar como Fun¸c˜ao 2 RA0/AN0 AN0 Potenciˆometro / Sen- sor de Temperatura 4 RA2/AN2/VREF-/CVREF RA2 Display 2 7 RA5/AN4/SS/C2OUT RA5 Display 1 8 RE0/AN5/CK1SPP RE0 RS-LCD / Display 3 9 RE1/AN6/CK2SPP RE1 EN-LCD 10 RE2/AN7/OESPP RE2 RW-LCD / Display 4 13 OSC1/CLKI OSC1 Cristal 14 OSC2/CLKO/RA6 OSC2 16 RC1/T1OSI/CCP2/UOE CCP2 Aquecedor 17 RC2/CCP1/P1A CCP1 Ventilador / Buzzer 19 RD0/SPP0 RD0 Barramento de dados para o LCD/7seg/Led 20 RD1/SPP1 RD1 21 RD2/SPP2 RD2 22 RD3/SPP3 RD3 ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 22 / 27
  23. 23. Programa¸c˜ao dos Perif´ericos Configura¸c˜ao dos perif´ericos Term. Descri¸c˜ao Configurar como Fun¸c˜ao 25 RC6/TX/CK TX/RC6 RS232/I2C 26 RC7/RX/DT/SDO RX RS232 27 RD4/SPP4 RD4 Barramento de dados para o LCD / 7seg / Led 28 RD5/SPP5/P1B RD5 29 RD6/SPP6/P1C RD6 30 RD7/SPP7/P1D RD7 33 RB0/AN12/INT0/SDI/SDA RB0/SDA Sa´ıdas para alimenta¸c˜ao do teclado, 0 e 1 para I2C 34 RB1/AN10/INT1/SCK/SCL RB1/SCL 35 RB2/AN8/INT2/VMO RB2 36 RB3/AN9/CCP2/VPO RB3 37 RB4/AN11/KBI0/CSSPP RB4 Entradas para leitura do teclado 38 RB5/KBI1/PGM RB5 39 RB6/KBI2/PGC RB6 40 RB7/KBI3/PGD RB7 ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 23 / 27
  24. 24. Programa¸c˜ao dos Perif´ericos Configura¸c˜ao dos perif´ericos 1 TRISA = 0b00000010 ; // c o n f i g . os t e r m i n a i s como entrada e s a´ı d a 2 ADCON1 = 0b00001110 ; // apenas o p r i m e i r o t e r m i n a l ´e a n a l ´o g i c o 3 4 TRISB = 0b11110000 ; // c o n f i g . os t e r m i n a i s como entrada e s a´ı d a 5 INTCON = 0b11000101 ; // c o n f i g . com i n t e r r u p ¸c ˜a o h a b i l i t a d a 6 INTCON = 0b00000000 ; // c o n f i g . sem i n t e r r u p ¸c ˜a o 7 INTCON2 = 0b00000001 ; 8 SPPCFG = 0b00000000 ; //RB0−4 c o n t r o l a d o s p e l a porta B 9 10 TRISC = 0b10000000 ; // t e r m i n a i s s˜ao sa´ıdas , s´o RC7 ´e entrada 11 CCP1CON = 0b00001100 ; // c o n f i g . o 2o t e r m i n a l como PWM 12 CCP2CON = 0b00001100 ; // c o n f i g . o 3o t e r m i n a l como PWM 13 TXTA = 0b00101100 ; // c o n f i g . a t r a n s m i s s˜a o de dados da s e r i a l 14 RCSTA = 0b10010000 ; // c o n f i g . a recep¸c˜ao de dados da s e r i a l 15 BAUDCON = 0b00001000 ; // c o n f i g . sistema de v e l o c i d a d e da s e r i a l 16 SPBRGH = 0b00000000 ; // c o n f i g . para 56k 17 SPBRG = 0b00100010 ; // c o n f i g . para 56k 18 19 TRISD = 0b00000000 ; // c o n f i g . os t e r m i n a i s como s a´ı d a 20 21 TRISE = 0b00000000 ; // c o n f i g . os t e r m i n a i s como s a´ı d a ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 24 / 27
  25. 25. Programa¸c˜ao dos Perif´ericos Barramento de Leds ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 25 / 27
  26. 26. Programa¸c˜ao dos Perif´ericos Barramento de Leds ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 26 / 27
  27. 27. Programa¸c˜ao dos Perif´ericos Barramento de Leds Biblioteca de acesso aos leds: Inicializa¸c˜ao do dispositivo Armazenamento de vari´aveis internas (endere¸cos) Escrita/Leitura do estado dos leds ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 27 / 27

×