acesso à memória e registros

30
Ponteiros e Arquitetura de Microcontroladores Prof.MSc.Rodrigo Maximiano Antunes de Almeida Universidade Federal de Itajub´ a [email protected] ELT024 Ponteiros e Arquitetura de Microcontroladores [email protected] 1 / 30

Upload: rodrigo-almeida

Post on 04-Jul-2015

647 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Acesso à memória e registros

Ponteiros e Arquitetura de Microcontroladores

Prof.MSc.Rodrigo Maximiano Antunes de Almeida

Universidade Federal de Itajuba

[email protected]

ELT024 Ponteiros e Arquitetura de [email protected] 1 / 30

Page 2: Acesso à memória e registros

Linguagem COperacoes com Bits

Revisao

ELT024 Ponteiros e Arquitetura de [email protected] 2 / 30

Page 3: Acesso à memória e registros

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

Page 4: Acesso à memória e registros

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

Page 5: Acesso à memória e registros

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

Page 6: Acesso à memória e registros

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

Page 7: Acesso à memória e registros

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

Page 8: Acesso à memória e registros

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

Page 9: Acesso à memória e registros

Linguagem COperador & e Operador *

ELT024 Ponteiros e Arquitetura de [email protected] 9 / 30

Page 10: Acesso à memória e registros

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

Page 11: Acesso à memória e registros

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

Page 12: Acesso à memória e registros

Arquitetura de Microcontroladores

Arquitetura de Microcontroladores

ELT024 Ponteiros e Arquitetura de [email protected] 12 / 30

Page 13: Acesso à memória e registros

ELT024 Ponteiros e Arquitetura de [email protected] 13 / 30

Page 14: Acesso à memória e registros

Arquitetura de MicrocontroladoresAcesso a memoria

Acesso a memoria

ELT024 Ponteiros e Arquitetura de [email protected] 14 / 30

Page 15: Acesso à memória e registros

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

Page 16: Acesso à memória e registros

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

Page 17: Acesso à memória e registros

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

Page 18: Acesso à memória e registros

ELT024 Ponteiros e Arquitetura de [email protected] 18 / 30

Page 19: Acesso à memória e registros

Arquitetura de MicrocontroladoresClock e tempo de instrucao

Clock e tempo de instrucao

ELT024 Ponteiros e Arquitetura de [email protected] 19 / 30

Page 20: Acesso à memória e registros

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

Page 21: Acesso à memória e registros

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

Page 22: Acesso à memória e registros

Arquitetura de MicrocontroladoresEsquema eletrico e circuitos importantes

Esquema eletrico e circuitos importantes

ELT024 Ponteiros e Arquitetura de [email protected] 22 / 30

Page 23: Acesso à memória e registros

Arquitetura de MicrocontroladoresEsquema eletrico e circuitos importantes

ELT024 Ponteiros e Arquitetura de [email protected] 23 / 30

Page 24: Acesso à memória e registros

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

Page 25: Acesso à memória e registros

Arquitetura de MicrocontroladoresMultiplexacao nos terminais do microcontrolador

Multiplexacao nos terminais domicrocontrolador

ELT024 Ponteiros e Arquitetura de [email protected] 25 / 30

Page 26: Acesso à memória e registros

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

Page 27: Acesso à memória e registros

Arquitetura de MicrocontroladoresRegistros de configuracao do microcontrolador

Registros de configuracao domicrocontrolador

ELT024 Ponteiros e Arquitetura de [email protected] 27 / 30

Page 28: Acesso à memória e registros

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

Page 29: Acesso à memória e registros

Arquitetura de MicrocontroladoresEsquema eletrico e circuitos importantes

ELT024 Ponteiros e Arquitetura de [email protected] 29 / 30

Page 30: Acesso à memória e registros

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