1) O documento discute pontos sobre arquitetura de microcontroladores e operações com bits na linguagem C. 2) Inclui explicações sobre ponteiros, operadores & e *, acesso à memória, clock e tempo de instrução, esquema elétrico e circuitos importantes. 3) Também apresenta detalhes sobre registros de configuração para definir o funcionamento básico e periféricos do microcontrolador.
1. Ponteiros e Arquitetura de Microcontroladores
Prof.MSc.Rodrigo Maximiano Antunes de Almeida
Universidade Federal de Itajub´a
rodrigomax@unifei.edu.br
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 1 / 30
2. Linguagem C
Opera¸c˜oes com Bits
Revis˜ao
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 2 / 30
3. Linguagem C
Opera¸c˜oes com Bits
Opera¸c˜ao 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 Microcontroladoresrodrigomax@unifei.edu.br 3 / 30
4. Linguagem C
Opera¸c˜oes com Bits
Opera¸c˜ao 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 Microcontroladoresrodrigomax@unifei.edu.br 4 / 30
5. Linguagem C
Opera¸c˜oes com Bits
Opera¸c˜ao 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 Microcontroladoresrodrigomax@unifei.edu.br 5 / 30
6. Linguagem C
Opera¸c˜oes com Bits
Opera¸c˜ao 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 Microcontroladoresrodrigomax@unifei.edu.br 6 / 30
7. Ponteiros e Referˆencia
Ponteiros
s˜ao vari´aveis que guardam um endere¸co (localiza¸c˜ao) de mem´oria
os tipos de valores colocados nos endere¸cos de mem´oria s˜ao definidos
na declara¸c˜ao de um ponteiro
´e esse tipo que indica ao compilador a quantidade de mem´oria
necess´aria para armazenar os valores
uma vari´avel do tipo ponteiro aponta para uma vari´avel de um
determinado tipo (char, int, float, double, . . .)
´e necess´ario na declara¸c˜ao de um ponteiro, especificar para qual tipo
de vari´avel ele ir´a apontar
os ponteiros s˜ao declarados com um * antes do nome da vari´avel
Sintaxe
tipo *nomeVariavel;
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 7 / 30
8. Ponteiros e Referˆencia
1 i n t ∗aux ;
2 f l o a t ∗temp ;
3 char ∗pont ;
aux, temp e pont s˜ao vari´aveis
que armazenam endere¸cos de
mem´oria e n˜ao valores do tipo
int, float, char
* ´e usado quando deseja-se
acessar o valor que est´a na
posi¸c˜ao de mem´oria e n˜ao ao
endere¸co da mem´oria
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 8 / 30
9. Linguagem C
Operador & e Operador *
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 9 / 30
10. Linguagem C
Operador & e Operador *
O operador & e o operador * s˜ao utilizados quando se trabalha com
ponteiros
Operador &
obt´em sempre o endere¸co de uma vari´avel (endere¸co de)
como os ponteiros tamb´em s˜ao vari´aveis eles tamb´em ocupam
mem´oria
pode-se obter o endere¸co do ponteiro e ter ponteiros para ponteiros
(m´ultiplos *)
Operador *
o operador * faz o contr´ario do operador &
dado um ponteiro, o operador * acessa o conte´udo apontado por ele
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 10 / 30
11. Linguagem C
Operador & 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 o
5
6 printf ( "x = %dnn" , x ) ;
7 ∗p1 = 20; //ou p1 [ 0 ] = 20;
8
9 printf ( "p1 = %un" , p1 ) ;
10 printf ( "x = %dn" , x ) ;
11 printf ( "*p1 = %dn" , ∗p1 ) ;
12 printf ( "p1[0] = %dnn" , p1 [ 0 ] ) ;
13 return 0;
14 } // endMain
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 11 / 30
15. Arquitetura de Microcontroladores
Acesso `a mem´oria
Total de mem´oria dispon´ıvel depende:
Do tamanho da palavra de dados
Do tamanho do ”apontador”
Total de mem´oria embutida no chip
Total de mem´oria anexada `a placa (modo expandido)
A arquitetura Harvard possui dois barramentos
Mem´oria
Dados
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 15 / 30
16. Arquitetura de Microcontroladores
Acesso `a mem´oria
Stack 1
Stack 31
Reset
Baixa prioridade
Alta prioridade
Memória EEPROM
Não implementado
...
GPR1
GPR3
GPR4
GPR2
Não implementado
SFR
0x0000
0x0008
0x0018
0x0028
0x7FFF
0X8000
0X1FFFFF
0x000
0x0FF
0x200
0x2FF
0x300
0x3FF
0x100
0x1FF
...
0xF60
0xFFF
Vetorde
Interrupção
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 16 / 30
17. Arquitetura de Microcontroladores
Acesso `a mem´oria
Algumas posi¸c˜oes podem ser de ”tipos”diferentes
RAM
ROM
EEPROM
Algumas n˜ao funcionam como uma mem´oria tradicional
SFR
Vetor de interrup¸c˜ao
Algumas nem s˜ao mem´orias
Portas de entrada e sa´ıda
Registros de timers
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 17 / 30
18. ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 18 / 30
19. Arquitetura de Microcontroladores
Clock e tempo de instru¸c˜ao
Clock e tempo de instru¸c˜ao
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 19 / 30
20. Arquitetura de Microcontroladores
Clock e tempo de instru¸c˜ao
Multiplica¸c˜ao de inteiros Multiplica¸c˜ao de fracion´arios
1 A = 123456;
2 B = 34567;
3 C = A x B ;
4 //C = 4267503552
5
6 // 1. M u l t i p l i c a r os ←
n´umeros
7 // 123456
8 // ∗ 34567
9 // 4267503552
1 A = 1.23456 x 10 ˆ 5
2 B = 3.4567 x 10 ˆ 4
3 C = A x B
4 //C = 4.267503552 x 10 ˆ9
5
6 // 1. Converter para o mesmo ←
expoente
7 // 12.3456 x 10 ˆ 4
8 // 3.4567 x 10 ˆ 5
9 // 2. M u l t i p l i c a r as mantissas ←
somar o expoente
10 // 12.3456 x 10 ˆ 4
11 // x 3.4567 x 10 ˆ 4
12 // 42.67503552 x 10 ˆ 8
13 // 3. C o r r i g i r quantidade de ←
casas decimais
14 // 4.267503552 x 10 ˆ 9
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 20 / 30
21. Arquitetura de Microcontroladores
Clock e tempo de instru¸c˜ao
Opera¸c˜ao 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 Microcontroladoresrodrigomax@unifei.edu.br 21 / 30
22. Arquitetura de Microcontroladores
Esquema el´etrico e circuitos importantes
Esquema el´etrico e circuitos importantes
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 22 / 30
24. Arquitetura de Microcontroladores
Esquema el´etrico e circuitos importantes
Alimenta¸c˜ao
Depende do modelo
PIC18F4550, entre 2 e 5,5 volts
Clock
Xc Externo
RC Externo
RC Interno
Fonte de clock externa
ICSP
Programa¸c˜ao na pr´opria placa
Permite debug
Utiliza alguns pinos do microcontrolador
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 24 / 30
25. Arquitetura de Microcontroladores
Multiplexa¸c˜ao nos terminais do microcontrolador
Multiplexa¸c˜ao nos terminais do
microcontrolador
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 25 / 30
26. 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 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 26 / 30
27. Arquitetura de Microcontroladores
Registros de configura¸c˜ao do microcontrolador
Registros de configura¸c˜ao do
microcontrolador
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 27 / 30
28. Arquitetura de Microcontroladores
Registros de configura¸c˜ao do microcontrolador
O microcontrolador ´e configurado atrav´es de registros especiais
Existem registros que:
alteram o funcinamento b´asico do microcontrolador
modificam o modo de opera¸c˜ao de um terminal
alteram as caracter´ısticas dos perif´ericos dispon´ıveis
ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 28 / 30
30. 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 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 30 / 30