Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programac¸a˜o dos Perife´ricos Prof.MSc.Rodrigo Maximiano Antunes de Almeida Universidade Federal de Itajuba´ rodrigomax@unifei.edu.br ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 1 / 27 Arquitetura de Microcontroladores Esquema ele´trico e circuitos importantes ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 2 / 27 Arquitetura de Microcontroladores Multiplexac¸a˜o 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 analo´gica pertencente ao quinto conversor analo´gico - digital (AN5) utilizado para enviar um clock externo de comunicac¸a˜o paralela (CK1SPP) ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 3 / 27 Arquitetura de Microcontroladores Registros de configurac¸a˜o do microcontrolador Registros de configurac¸a˜o do microcontrolador ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 4 / 27 Arquitetura de Microcontroladores Esquema ele´trico e circuitos importantes ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 5 / 27 Arquitetura de Microcontroladores Registros de configurac¸a˜o 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 e x t e r n o 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 programac¸ a˜o em b a i x a t e n s a˜ o 11 code char at 0x300006 CONFIG4L = 0x00 ; 12 #endif //CONFIG H ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 6 / 27 Programac¸a˜o dos Perife´ricos Programac¸a˜o dos Perife´ricos . . . In theory, there is no difference between theory and practice; In practice, there is. Chuck Reid ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 7 / 27 Programac¸a˜o dos Perife´ricos Perife´ricos 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 Interrupc¸o˜es Watchdog ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 8 / 27 Programac¸a˜o dos Perife´ricos Barramento de Leds ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 9 / 27 Programac¸a˜o dos Perife´ricos Acesso a`s portas do microcontrolador ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 10 / 27 Programac¸a˜o dos Perife´ricos Acesso a`s portas do microcontrolador O microcontrolador PIC 18F4520 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 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 11 / 27 Programac¸a˜o dos Perife´ricos Acesso a`s 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 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 12 / 27 Programac¸a˜o dos Perife´ricos Acesso a`s portas do microcontrolador 37 Trisb:4 Leitor Gravador 4Trisb:4 = 1 = 0 = 0 = 1< 2volts = 0> 3volts = 1 PORTB Abrir datasheet do PIC18f4520 na pagina 105. ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 13 / 27 Programac¸a˜o dos Perife´ricos Acesso a`s portas do microcontrolador Porta Enderec¸o dos dados Enderec¸o de configurac¸a˜o (TRIS) PORTA 0xF80 0xF92 PORTB 0xF81 0xF93 PORTC 0xF82 0xF94 PORTD 0xF83 0xF95 PORTE 0xF84 0xF96 ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 14 / 27 Programac¸a˜o dos Perife´ricos Acesso a`s portas do microcontrolador 1 // i n i c i o do programa 2 v o i d main ( v o i d ) 3 { 4 // d e f i n i m o s como : 5 // ( u n s i g n e d c h a r ) p o i s os 8 b i t s r e p r e s e n t a m 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 q u a l q u e r momento 7 // ( n e a r ) i n d i c a que o r e g i s t r o e s t a na memo´ria de dados 8 v o l a t i l e near uns igned char ∗PORTD = 0xF83 ; 9 v o l a t i l e near uns igned char ∗TRISD = 0xF95 ; 10 // c o n f i g u r a n d o t o d o s os p i n o s como s a ı´ d a s 11 // 0 = s a ı´ d a ( Output ) 12 // 1 = e n t r a d a ( I n p u t ) 13 ∗TRISD = 0b00000000 ; 14 // l i g a apenas os q u a t r o u´ l t i m o s l e d s 15 ∗PORTD = 0b11110000 ; 16 //mante´m o s i s t e m a 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 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 15 / 27 Programac¸a˜o dos Perife´ricos Acesso a`s portas do microcontrolador 1 // d e f i n e s para p o r t a s de e n t r a d a e s a ı´ d a 2 #define PORTD (∗ ( v o l a t i l e near uns igned char ∗) 0xF83 ) 3 #define TRISD (∗ ( v o l a t i l e near uns igned char ∗) 0xF95 ) 4 // i n i c i o do programa 5 v o i d main ( v o i d ) 6 { 7 // c o n f i g u r a n d o t o d o s os p i n o s como s a ı´ d a s 8 TRISD = 0b00000000 ; 9 // l i g a apenas os q u a t r o u´ l t i m o s l e d s 10 PORTD = 0b11110000 ; 11 //mante´m o s i s t e m a 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 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 16 / 27 Programac¸a˜o dos Perife´ricos Acesso a`s portas do microcontrolador Vantagens no uso dos #defines Utilizac¸a˜o na˜o requer uso do *, pois ja´ esta´ incluso no define Economiza memo´ria ram. Criando uma varia´vel e´ necessa´rio reservar um espac¸o para armazenar o valor do ponteiro. A definic¸a˜o pode ser feita em apenas um arquivo do tipo header. Os outros arquivos que precisem utilizar estas definic¸o˜es devem apenas incluir este header. A mudanc¸a de arquitetura e´ mais simples. Criando apenas um arquivo com os defines e´ mais simples migrar o co´digo de uma arquitetura para outra. Atenc¸a˜o O tamanho do programa final esta´ intimamente ligado ao compilador utilizado. Dependendo das otimizac¸o˜es que sa˜o (ou na˜o) realizadas, o programa pode ficar maior com o uso dos defines. ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 17 / 27 Programac¸a˜o dos Perife´ricos Acesso a`s portas do microcontrolador 1 // b a s i c o . h 2 // f u n c¸ o˜ e s 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 uns igned char ∗) 0xF80 ) 10 #define PORTB (∗ ( v o l a t i l e near uns igned char ∗) 0xF81 ) 11 #define PORTC (∗ ( v o l a t i l e near uns igned char ∗) 0xF82 ) 12 #define PORTD (∗ ( v o l a t i l e near uns igned char ∗) 0xF83 ) 13 #define PORTE (∗ ( v o l a t i l e near uns igned char ∗) 0xF84 ) 14 15 #define TRISA (∗ ( v o l a t i l e near uns igned char ∗) 0xF92 ) 16 #define TRISB (∗ ( v o l a t i l e near uns igned char ∗) 0xF93 ) 17 #define TRISC (∗ ( v o l a t i l e near uns igned char ∗) 0xF94 ) 18 #define TRISD (∗ ( v o l a t i l e near uns igned char ∗) 0xF95 ) 19 #define TRISE (∗ ( v o l a t i l e near uns igned char ∗) 0xF96 ) ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 18 / 27 Programac¸a˜o dos Perife´ricos Acesso a`s portas do microcontrolador 1 // b a s i c o . h 2 #define INTCON (∗ ( v o l a t i l e near uns igned char ∗) 0xFF2 ) 3 #define INTCON2 (∗ ( v o l a t i l e near uns igned char ∗) 0xFF1 ) 4 #definePIE1 (∗ ( v o l a t i l e near uns igned char ∗) 0xF9D ) 5 #define PIR1 (∗ ( v o l a t i l e near uns igned char ∗) 0xF9E ) 6 7 #define TMR0L (∗ ( v o l a t i l e near uns igned char ∗) 0xFD6 ) 8 #define TMR0H (∗ ( v o l a t i l e near uns igned char ∗) 0xFD7 ) 9 #define T0CON (∗ ( v o l a t i l e near uns igned char ∗) 0xFD5 ) 10 11 #define SPPCON (∗ ( v o l a t i l e near uns igned char ∗) 0xF65 ) 12 #define SPPCFG (∗ ( v o l a t i l e near uns igned char ∗) 0xF63 ) 13 14 #define ADCON2 (∗ ( v o l a t i l e near uns igned char ∗) 0xFC0 ) 15 #define ADCON1 (∗ ( v o l a t i l e near uns igned char ∗) 0xFC1 ) 16 #define ADCON0 (∗ ( v o l a t i l e near uns igned char ∗) 0xFC2 ) 17 #define ADRESL (∗ ( v o l a t i l e near uns igned char ∗) 0xFC3 ) 18 #define ADRESH (∗ ( v o l a t i l e near uns igned char ∗) 0xFC4 ) ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 19 / 27 Programac¸a˜o dos Perife´ricos Acesso a`s portas do microcontrolador 1 // b a s i c o . h 2 #define RCSTA (∗ ( v o l a t i l e near uns igned char ∗) 0xFAB ) 3 #define TXSTA (∗ ( v o l a t i l e near uns igned char ∗) 0xFAC ) 4 #define TXREG (∗ ( v o l a t i l e near uns igned char ∗) 0xFAD ) 5 #define RCREG (∗ ( v o l a t i l e near uns igned char ∗) 0xFAE ) 6 #define SPBRG (∗ ( v o l a t i l e near uns igned char ∗) 0xFAF ) 7 #define SPBRGH (∗ ( v o l a t i l e near uns igned char ∗) 0xFB0 ) 8 #define BAUDCON (∗ ( v o l a t i l e near uns igned char ∗) 0xFB8 ) 9 #define RCON (∗ ( v o l a t i l e near uns igned char ∗) 0xFD0 ) 10 11 #define WDTCON (∗ ( v o l a t i l e near uns igned char ∗) 0xFD1 ) 12 13 #define T2CON (∗ ( v o l a t i l e near uns igned char ∗) 0xFCA ) 14 #define PR2 (∗ ( v o l a t i l e near uns igned char ∗) 0xFCB ) 15 #define CCP2CON (∗ ( v o l a t i l e near uns igned char ∗) 0xFBA ) 16 #define CCPR2L (∗ ( v o l a t i l e near uns igned char ∗) 0xFBB ) 17 #define CCP1CON (∗ ( v o l a t i l e near uns igned char ∗) 0xFBD ) 18 #define CCPR1L (∗ ( v o l a t i l e near uns igned char ∗) 0xFBE ) 19 20 // f u n c¸ a˜ o para l i m p a r o watchdog 21 #define CLRWTD ( ) _asm CLRWDT _endasm ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 20 / 27 Programac¸a˜o dos Perife´ricos Configurac¸a˜o dos perife´ricos ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 21 / 27 Programac¸a˜o dos Perife´ricos Configurac¸a˜o dos perife´ricos Term. Descric¸a˜o Configurar como Func¸a˜o 2 RA0/AN0 AN0 Potencioˆmetro / 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 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 22 / 27 Programac¸a˜o dos Perife´ricos Configurac¸a˜o dos perife´ricos Term. Descric¸a˜o Configurar como Func¸a˜o 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 alimentac¸a˜o 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 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 23 / 27 Programac¸a˜o dos Perife´ricos Configurac¸a˜o dos perife´ricos 1 TRISA = 0b00000010 ; // c o n f i g . os t e r m i n a i s como e n t r a d a 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 e n t r a d a 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 p o r t a B 9 10 TRISC = 0b10000000 ; // t e r m i n a i s s a˜o s a ı´ d a s , s o´ RC7 e´ e n t r a d a 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 r e c e p c¸ a˜ o de dados da s e r i a l 15 BAUDCON = 0b00001000 ; // c o n f i g . s i s t e m a 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 56 k 17 SPBRG = 0b00100010 ; // c o n f i g . para 56 k 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 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 24 / 27 Programac¸a˜o dos Perife´ricos Barramento de Leds ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 25 / 27 Programac¸a˜o dos Perife´ricos Barramento de Leds ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 26 / 27 Programac¸a˜o dos Perife´ricos Barramento de Leds Exerc´ıcio Criar uma biblioteca para os leds Pode fazer uso do basico.h e config.h ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 27 / 27 Programac¸a˜o dos Perife´ricos Barramento de Leds Biblioteca de acesso aos leds: Inicializac¸a˜o do dispositivo Armazenamento de varia´veis internas (enderec¸os) Escrita/Leitura do estado dos leds ELT024 Programac¸a˜o dos Perife´ricos rodrigomax@unifei.edu.br 28 / 27
Compartilhar