Página 1 de 1

Escrever na SRAM

MensagemEnviado: 07 Jun 2017 04:32
por Vonnilmam
Olá a todos.

Por favor tirem uma dúvida sobre o atmega 8.

Como eu faço para fazer uma escrita ou leitura na SRAM do Atmega 8, isso no endereço 0x0060 em diante, de forma indireta.

Só para explicar melhor: No pic, eu declaro um nome atribuo esse nome ao endereço fisico da posição SRAM, tipo:

0x20 zezinho
0x21 luluzinha
....e assim vai.

Mas como eu faço isso no atmega,

Eu estou utilizando ASSEMBLER do avrstudio 4.

Obrigado

Re: Escrever na SRAM

MensagemEnviado: 07 Jun 2017 09:26
por tcpipchip
tenta um destes

volatile char * const port_a = (volatile char *) 0x1C;

OU

volatile char port_a @ 0x1C;

OU

#define PORTA (* (volatile char *) 0x1C)

OU

unsigned char a @0x001C

Re: Escrever na SRAM

MensagemEnviado: 09 Jun 2017 09:05
por Vonnilmam
Fico agradecido TCPIPCHIP.


Mas estou tentando aprender a mexer com o ATMEGA em ASM, eu queria saber como fazer isso em assembler.

Mas mesmo assim fico eternamente grato pela atenção

Obrigado

Re: Escrever na SRAM

MensagemEnviado: 09 Jun 2017 15:24
por tcpipchip

Re: Escrever na SRAM

MensagemEnviado: 09 Jun 2017 22:26
por Vonnilmam
Epa...

Eu havia lido esse post que você me enviou, mas não tinha entendido. Mas agora relendo com mais atenção, notei que a SRAM interna se comporta como se fosse EXTERNA, ou seja eu não consigo acessar ela de forma DIRETA, como seria no caso do PICs, onde se pode acessar toda a SRAM de forma direta ou indireta.

Muito interessante,

Então se eu entendi, se eu quiser decrementar uma posição da SRAM, tenho que fazer isso de forma indireta, lendo o endereço dessa SRAM, decrementar o seu conteúdo e depois gravar o resultado novamente na posição manipulada.

Se é isso que eu entendi, ufa, dá trabalho...kkk

Pensando assim, acho mais inteligente brincar em C...rss

Obrigado tcpipchip.

Re: Escrever na SRAM

MensagemEnviado: 09 Fev 2018 15:45
por Vicente
Escreve 0x55 em 0x0060:
ldi r31,0x00
ldi r30,0x60
ldi r16,0x55
st z,r16

Lê dado de 0x0060 em r16:
ldi r31,0x00
ldi r30,0x60
ld r16,z