Baixe o app para aproveitar ainda mais
Prévia do material em texto
Ponteiros e Arquitetura de Microcontroladores Prof.Rodrigo Maximiano Antunes de Almeida Universidade Federal de Itajuba´ rodrigomax@unifei.edu.br ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 1 / 32 Linguagem C Operac¸o˜es com Bits Revisa˜o ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 2 / 32 Linguagem C Operac¸o˜es com Bits Operac¸a˜o 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 / 32 Linguagem C Operac¸o˜es com Bits Operac¸a˜o 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 / 32 Linguagem C Operac¸o˜es com Bits Operac¸a˜o 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 / 32 Linguagem C Operac¸o˜es com Bits Operac¸a˜o 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 / 32 Linguagem C Ponteiros e Refereˆncias Ponteiros e Refereˆncias ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 7 / 32 Ponteiros e Refereˆncia Ponteiros sa˜o varia´veis que guardam um enderec¸o (localizac¸a˜o) de memo´ria os tipos de valores colocados nos enderec¸os de memo´ria sa˜o definidos na declarac¸a˜o de um ponteiro e´ esse tipo que indica ao compilador a quantidade de memo´ria necessa´ria para armazenar os valores uma varia´vel do tipo ponteiro aponta para uma varia´vel de um determinado tipo (char, int, float, double, . . .) e´ necessa´rio na declarac¸a˜o de um ponteiro, especificar para qual tipo de varia´vel ele ira´ apontar os ponteiros sa˜o declarados com um * antes do nome da varia´vel Sintaxe tipo *nomeVariavel; ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 8 / 32 Ponteiros e Refereˆncia 1 i n t ∗aux ; 2 f l o a t ∗temp ; 3 char ∗pont ; aux, temp e pont sa˜o varia´veis que armazenam enderec¸os de memo´ria e na˜o valores do tipo int, float, char * e´ usado quando deseja-se acessar o valor que esta´ na posic¸a˜o de memo´ria e na˜o ao enderec¸o da memo´ria ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 9 / 32 Linguagem C Operador & e Operador * ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 10 / 32 Linguagem C Operador & e Operador * O operador & e o operador * sa˜o utilizados quando trabalhamos com ponteiros Operador & obte´m o enderec¸o da varia´vel escrita depois do operador (enderec¸o de) como os ponteiros tambe´m sa˜o varia´veis eles ocupam memo´ria pode-se obter o enderec¸o do ponteiro e ter ponteiros para ponteiros (mu´ltiplos *) Operador * o operador * faz o contra´rio do operador & dado um ponteiro, o operador * acessa o conteu´do apontado por ele ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 11 / 32 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 = %d\n\n" , x ) ; 7 ∗p1 = 2 0 ; // ou p1 [ 0 ] = 2 0 ; 8 9 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 Microcontroladoresrodrigomax@unifei.edu.br 12 / 32 Arquitetura de Microcontroladores Arquitetura de Microcontroladores ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 13 / 32 ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 14 / 32 Arquitetura de Microcontroladores Acesso a` memo´ria Acesso a` memo´ria ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 15 / 32 Arquitetura de Microcontroladores Acesso a` memo´ria Total de memo´ria dispon´ıvel depende: Do tamanho da palavra de dados Do tamanho do ”apontador” Total de memo´ria embutida no chip Total de memo´ria anexada a` placa (modo expandido) A arquitetura Harvard possui dois barramentos Memo´ria Dados ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 16 / 32 Arquitetura de Microcontroladores Acesso a` memo´ria 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 V et or d e In te rr up çã o ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 17 / 32 Arquitetura de Microcontroladores Acesso a` memo´ria Algumas posic¸o˜es podem ser de ”tipos”diferentes RAM ROM EEPROM Algumas na˜o funcionam como uma memo´ria tradicional SFR Vetor de interrupc¸a˜o Algumas nem sa˜o memo´rias Portas de entrada e sa´ıda Registros de timers ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 18 / 32 ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 19 / 32 Arquitetura de Microcontroladores Clock e tempo de instruc¸a˜o Clock e tempo de instruc¸a˜o ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 20 / 32 Arquitetura de Microcontroladores Clock e tempo de instruc¸a˜o Multiplicac¸a˜o de inteiros Multiplicac¸a˜o de fraciona´rios 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 ←↩ nu´meros 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 . C o n v e r t e r para o mesmo ←↩ e x p o e n t e 7 // 12.3456 x 10 ˆ 4 8 // 3 .4567 x 10 ˆ 4 9 // 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 e 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 q u a n t i d a d e de ←↩ c a s a s d e c i m a i s 14 // 4.267503552 x 10 ˆ 9 ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 21 / 32 Arquitetura de Microcontroladores Clock e tempo de instruc¸a˜o Operac¸a˜o 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 22 / 32 Arquitetura de Microcontroladores Esquema ele´trico e circuitos importantes Esquema ele´trico e circuitos importantes ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 23 / 32 Arquitetura de Microcontroladores Esquema ele´trico e circuitos importantes ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br24 / 32 Arquitetura de Microcontroladores Esquema ele´trico e circuitos importantes Alimentac¸a˜o Depende do modelo PIC18F4550, entre 2 e 5,5 volts Clock Xc Externo RC Externo RC Interno Fonte de clock externa ICSP Programac¸a˜o na pro´pria placa Permite debug Utiliza alguns pinos do microcontrolador ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 25 / 32 Arquitetura de Microcontroladores Multiplexac¸a˜o nos terminais do microcontrolador Multiplexac¸a˜o nos terminais do microcontrolador ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 26 / 32 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 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 27 / 32 Arquitetura de Microcontroladores Registros de configurac¸a˜o do microcontrolador Registros de configurac¸a˜o do microcontrolador ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 28 / 32 Arquitetura de Microcontroladores Registros de configurac¸a˜o do microcontrolador O microcontrolador e´ configurado atrave´s de registros especiais Existem registros que: alteram o funcinamento ba´sico do microcontrolador modificam o modo de operac¸a˜o de um terminal alteram as caracter´ısticas dos perife´ricos dispon´ıveis ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 29 / 32 Arquitetura de Microcontroladores Esquema ele´trico e circuitos importantes ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 30 / 32 Arquitetura de Microcontroladores Registros de configurac¸a˜o do microcontrolador 1 // c o n f i g . h 2 // u t i l i z a n d o o SDCC 3 . 3 3 #ifndef CONFIG_H 4 #define CONFIG_H 5 6 #pragma config MCLRE=ON 7 #pragma config OSC=HS 8 #pragma config WDT=OFF 9 #pragma config LVP=OFF 10 #pragma config PBADEN=OFF 11 #pragma config DEBUG=OFF 12 13 #endif //CONFIG H ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 31 / 32 Arquitetura de Microcontroladores Registros de configurac¸a˜o do microcontrolador 1 // c o n f i g . h 2 // u t i l i z a n d o o SDCC 2 . 9 3 #ifndef CONFIG_H 4 #define CONFIG_H 5 6 // P l l d e s l i g a d o 7 code char at 0x300000 CONFIG1L = 0x01 ; 8 // 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 9 code char at 0x300001 CONFIG1H = 0x0C ; 10 // Watchdog c o n t r o l a d o por s o f t w a r e 11 code char at 0x300003 CONFIG2H = 0x00 ; 12 // Sem programac¸ a˜o em b a i x a t e n s a˜ o 13 code char at 0x300006 CONFIG4L = 0x00 ; 14 15 #endif //CONFIG H ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 32 / 32
Compartilhar