Ponteiros e Arquitetura de Microcontroladores
Prof.MSc.Rodrigo Maximiano Antunes de Almeida
Universidade Federal de Itajuba
ELT024 Ponteiros e Arquitetura de [email protected] 1 / 30
Linguagem COperacoes com Bits
Operacao Bit set
Passo a Passo
1 char bit = 2 ;2 char mascara ;3 mascara = 1 << bit ;4 arg = arg | mascara ;
Uma linha 1 arg = arg | (1<<bit )
Com define 1 #define BitSet ( arg , bit ) ( ( arg ) |= (1<<bit ) )
ELT024 Ponteiros e Arquitetura de [email protected] 3 / 30
Linguagem COperacoes com Bits
Operacao Bit clear
Passo a Passo
1 char bit = 2 ;2 char mascara ;3 mascara = 1 << bit ;4 arg = arg & ˜mascara ;
Uma linha 1 arg = arg & ˜(1<<bit )
Com define 1 #define BitClr ( arg , bit ) ( ( arg ) &= ˜(1<<bit ) )
ELT024 Ponteiros e Arquitetura de [email protected] 4 / 30
Linguagem COperacoes com Bits
Operacao Bit flip
Passo a Passo
1 char bit = 2 ;2 char mascara ;3 mascara = 1 << bit ;4 arg = arg ˆ mascara ;
Uma linha 1 arg = arg ˆ (1<<bit )
Com define 1 #define BitFlp ( arg , bit ) ( ( arg ) ˆ= (1<<bit ) )
ELT024 Ponteiros e Arquitetura de [email protected] 5 / 30
Linguagem COperacoes com Bits
Operacao Bit test
Passo a Passo
1 char bit = 2 ;2 char mascara ;3 mascara = 1 << bit ;4 arg = arg & mascara ;
Uma linha 1 i f ( arg & (1<<bit ) ) { }
Com define 1 #define BitTst ( arg , bit ) ( ( arg ) & (1<<bit ) )
ELT024 Ponteiros e Arquitetura de [email protected] 6 / 30
Ponteiros e Referencia
Ponteiros
sao variaveis que guardam um endereco (localizacao) de memoria
os tipos de valores colocados nos enderecos de memoria sao definidosna declaracao de um ponteiro
e esse tipo que indica ao compilador a quantidade de memorianecessaria para armazenar os valores
uma variavel do tipo ponteiro aponta para uma variavel de umdeterminado tipo (char, int, float, double, . . .)
e necessario na declaracao de um ponteiro, especificar para qual tipode variavel ele ira apontar
os ponteiros sao declarados com um * antes do nome da variavel
Sintaxe
tipo *nomeVariavel;
ELT024 Ponteiros e Arquitetura de [email protected] 7 / 30
Ponteiros e Referencia
1 i n t ∗aux ;2 f l o a t ∗temp ;3 char ∗pont ;
aux, temp e pont sao variaveisque armazenam enderecos dememoria e nao valores do tipoint, float, char
* e usado quando deseja-seacessar o valor que esta naposicao de memoria e nao aoendereco da memoria
ELT024 Ponteiros e Arquitetura de [email protected] 8 / 30
Linguagem COperador & e Operador *
ELT024 Ponteiros e Arquitetura de [email protected] 9 / 30
Linguagem COperador & e Operador *
O operador & e o operador * sao utilizados quando se trabalha componteiros
Operador &
obtem sempre o endereco de uma variavel (endereco de)
como os ponteiros tambem sao variaveis eles tambem ocupammemoria
pode-se obter o endereco do ponteiro e ter ponteiros para ponteiros(multiplos *)
Operador *
o operador * faz o contrario do operador &
dado um ponteiro, o operador * acessa o conteudo apontado por ele
ELT024 Ponteiros e Arquitetura de [email protected] 10 / 30
Linguagem COperador & e Operador *
Exemplo 01 - Ponteiro que referencia um inteiro
1 #include<stdio . h>2 i n t main ( i n t argc , char ∗argv [ ] ) {3 i n t x=10;4 i n t ∗p1 = &x ; // p o n t e i r o para um i n t e i r o56 printf ( "x = %d\n\n" , x ) ;7 ∗p1 = 2 0 ; // ou p1 [ 0 ] = 2 0 ;89 printf ( "p1 = %u\n" , p1 ) ;
10 printf ( "x = %d\n" , x ) ;11 printf ( "*p1 = %d\n" , ∗p1 ) ;12 printf ( "p1[0] = %d\n\n" , p1 [ 0 ] ) ;13 r e t u r n 0 ;14 } // endMain
ELT024 Ponteiros e Arquitetura de [email protected] 11 / 30
Arquitetura de Microcontroladores
Arquitetura de Microcontroladores
ELT024 Ponteiros e Arquitetura de [email protected] 12 / 30
ELT024 Ponteiros e Arquitetura de [email protected] 13 / 30
Arquitetura de MicrocontroladoresAcesso a memoria
Acesso a memoria
ELT024 Ponteiros e Arquitetura de [email protected] 14 / 30
Arquitetura de MicrocontroladoresAcesso a memoria
Total de memoria disponıvel depende:
Do tamanho da palavra de dadosDo tamanho do ”apontador”Total de memoria embutida no chipTotal de memoria anexada a placa (modo expandido)
A arquitetura Harvard possui dois barramentos
MemoriaDados
ELT024 Ponteiros e Arquitetura de [email protected] 15 / 30
Arquitetura de MicrocontroladoresAcesso a memoria
Stack 1
Stack 31
ResetBaixa prioridadeAlta prioridade
Memória EEPROM
Não implementado
...GPR1
GPR3
GPR4
GPR2
Não implementado
SFR
0x00000x00080x0018
0x00280x7FFF
0X80000X1FFFFF
0x0000x0FF
0x2000x2FF
0x3000x3FF
0x1000x1FF
...
0xF600xFFF
Vet
or d
eIn
terr
upçã
o
ELT024 Ponteiros e Arquitetura de [email protected] 16 / 30
Arquitetura de MicrocontroladoresAcesso a memoria
Algumas posicoes podem ser de ”tipos”diferentes
RAMROMEEPROM
Algumas nao funcionam como uma memoria tradicional
SFRVetor de interrupcao
Algumas nem sao memorias
Portas de entrada e saıdaRegistros de timers
ELT024 Ponteiros e Arquitetura de [email protected] 17 / 30
ELT024 Ponteiros e Arquitetura de [email protected] 18 / 30
Arquitetura de MicrocontroladoresClock e tempo de instrucao
Clock e tempo de instrucao
ELT024 Ponteiros e Arquitetura de [email protected] 19 / 30
Arquitetura de MicrocontroladoresClock e tempo de instrucao
Multiplicacao de inteiros Multiplicacao de fracionarios
1 A = 123456;2 B = 34567;3 C = A x B ;4 //C = 426750355256 // 1 . M u l t i p l i c a r os ←↩
numeros7 // 1234568 // ∗ 345679 // 4267503552
1 A = 1.23456 x 10 ˆ 52 B = 3.4567 x 10 ˆ 43 C = A x B
4 //C = 4.267503552 x 10 ˆ956 // 1 . C o n v e r t e r para o mesmo ←↩
e x p o e n t e7 // 12.3456 x 10 ˆ 48 // 3 .4567 x 10 ˆ 59 // 2 . M u l t i p l i c a r as m a n t i s s a s ←↩
somar o e x p o e n t e10 // 12.3456 x 10 ˆ 411 // x 3 .4567 x 10 ˆ 412 // 42.67503552 x 10 ˆ 813 // 3 . C o r r i g i r q u a n t i d a d e de ←↩
c a s a s d e c i m a i s14 // 4.267503552 x 10 ˆ 9
ELT024 Ponteiros e Arquitetura de [email protected] 20 / 30
Arquitetura de MicrocontroladoresClock e tempo de instrucao
Operacao com: Quantidade Total de tarefas
1 tarefa 104 104
2 tarefas 63 126
3 tarefas 21 63
4 tarefas 12 48
Total 200 341
ELT024 Ponteiros e Arquitetura de [email protected] 21 / 30
Arquitetura de MicrocontroladoresEsquema eletrico e circuitos importantes
Esquema eletrico e circuitos importantes
ELT024 Ponteiros e Arquitetura de [email protected] 22 / 30
Arquitetura de MicrocontroladoresEsquema eletrico e circuitos importantes
ELT024 Ponteiros e Arquitetura de [email protected] 23 / 30
Arquitetura de MicrocontroladoresEsquema eletrico e circuitos importantes
Alimentacao
Depende do modeloPIC18F4550, entre 2 e 5,5 volts
Clock
Xc ExternoRC ExternoRC InternoFonte de clock externa
ICSP
Programacao na propria placaPermite debugUtiliza alguns pinos do microcontrolador
ELT024 Ponteiros e Arquitetura de [email protected] 24 / 30
Arquitetura de MicrocontroladoresMultiplexacao nos terminais do microcontrolador
Multiplexacao nos terminais domicrocontrolador
ELT024 Ponteiros e Arquitetura de [email protected] 25 / 30
Arquitetura de MicrocontroladoresMultiplexacao 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 analogica pertencente ao quinto conversor analogico - digital(AN5)utilizado para enviar um clock externo de comunicacao paralela(CK1SPP)
ELT024 Ponteiros e Arquitetura de [email protected] 26 / 30
Arquitetura de MicrocontroladoresRegistros de configuracao do microcontrolador
Registros de configuracao domicrocontrolador
ELT024 Ponteiros e Arquitetura de [email protected] 27 / 30
Arquitetura de MicrocontroladoresRegistros de configuracao do microcontrolador
O microcontrolador e configurado atraves de registros especiais
Existem registros que:
alteram o funcinamento basico do microcontroladormodificam o modo de operacao de um terminalalteram as caracterısticas dos perifericos disponıveis
ELT024 Ponteiros e Arquitetura de [email protected] 28 / 30
Arquitetura de MicrocontroladoresEsquema eletrico e circuitos importantes
ELT024 Ponteiros e Arquitetura de [email protected] 29 / 30
Arquitetura de MicrocontroladoresRegistros de configuracao do microcontrolador
1 // c o n f i g . h2 #ifndef CONFIG_H
3 #define CONFIG_H
4 // P l l d e s l i g a d o5 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 HS7 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 e9 code char at 0x300003 CONFIG2H = 0x00 ;
10 // Sem programac ao em b a i x a t e n s a o11 code char at 0x300006 CONFIG4L = 0x00 ;12 #endif //CONFIG H
ELT024 Ponteiros e Arquitetura de [email protected] 30 / 30