Acesso à memória e registros

827 visualizações

Publicada em

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Acesso à memória e registros

  1. 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. 2. Linguagem C Opera¸c˜oes com Bits Revis˜ao ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 2 / 30
  3. 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. 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. 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. 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. 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. 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. 9. Linguagem C Operador & e Operador * ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 9 / 30
  10. 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. 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
  12. 12. Arquitetura de Microcontroladores Arquitetura de Microcontroladores ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 12 / 30
  13. 13. ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 13 / 30
  14. 14. Arquitetura de Microcontroladores Acesso `a mem´oria Acesso `a mem´oria ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 14 / 30
  15. 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. 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. 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. 18. ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 18 / 30
  19. 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. 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. 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. 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
  23. 23. Arquitetura de Microcontroladores Esquema el´etrico e circuitos importantes ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 23 / 30
  24. 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. 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. 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. 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. 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
  29. 29. Arquitetura de Microcontroladores Esquema el´etrico e circuitos importantes ELT024 Ponteiros e Arquitetura de Microcontroladoresrodrigomax@unifei.edu.br 29 / 30
  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

×