Buscar

elt024 05 programacaoDosPerifericos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Outros materiais