Página 1 de 1

Organização da memoria interna do PIc 16F877A

MensagemEnviado: 11 Dez 2009 07:12
por antonio
Pessoal tudo bem!!

É o seguinte..... estou com duvida de como è organizados os dados na eeprom interna do PIC! ou seja no exemplo abaixo em write_eeprom(i,Texto[i]);o endereço " i " fica sempre com o valor zero (0) , ou seja o texto è todo escrito no primeiro endereço (0) ? ou são precisos 31 endereços (posiçoes)da eeprom para guardar o texto?

Assim;
address 0x00=E
address 0x01=E
address 0x02=p
address 0x03=r
address 0x04=o
address 0x05=m
;; atè ao final do texto
Confesso que estou confuso com este negocio por isso peço ajuda!!

Desde jà agradeço

void main(void){
int i,c;
char Dato;
char Texto[]=" EEPROM Interna Forum ASM ";// texto

// Caregamos Texto na EEPROM interna

for(i=0;i<=31;i++){
write_eeprom(i,Texto[i]);
}

MensagemEnviado: 11 Dez 2009 07:49
por aureo.oliveira
void main(void){
int i;
char Texto[]=" EEPROM Interna Forum ASM ";// texto

// Caregamos Texto na EEPROM interna

for(i=0;i<=31;i++){
write_eeprom(i,Texto[i]);
}
}
1- O indexador ´i´ sera incrementado ate 31 pelo comando ´for´
2- Sim usara 32 posições da memória eeprom (lembre-se do zero).
Você ja simulou esse exemplo?

MensagemEnviado: 11 Dez 2009 08:09
por antonio
Cara brigado por ajudar!

Não simulei não...não tenho ainda conhecimentos pra isso , se poder ajudar eh bem vindo , eu estou usando o CCs compiler e o proteus para minhas brincadeira!

olha só. então tanto acontece com carateres como digitos ou não? ou seja se queiser guardar o numero 245 na eeprom, ocupa tambem 3 posicoes da memoria, isto è 3 address de eeprom que eh 3x00FF, certo?

Estou usando o Pic 16F877A dei uma olhada no data e pelo que entendi tem a eeprom interna eh de 256 eddress(posicoes) de 8 byts eh certo ou errado !!


Mais uma vez agradeço

MensagemEnviado: 11 Dez 2009 14:47
por ze
oi. Nenhum engenheiro está a lhe ajudar pois isto é “muito” pra ele. Provavelmente por ser “difícil” demais pra sua cansada cabeça, “entende”? Ou se não estão ocupadérrimos d+ pra passar por cá (este é o caso, claro). Como não sou engo e nem tão ocupado assim, vejamos:
1º post teu
-no teu fonte lá de cima não precisa ir até 31. Basta que loop seja do tamanho da "string". tem 1 maneira de otimizar, mas não vem ao caso ainda
2º:
-caracteres ou dígitos: a eeprom não diferencia. Ela guarda o BYTE e num quer nem saber o que é. Você (o software) é quem vai definir sua utilização FORA da eeprom
-não. o 245 pode ser considerado 1 byte e portanto vai ocupar 1 posição só. (Se precisar separar veja num tópico recente o m.suasunga e eu fizemos um conluio pra separar os 3 dígitos pra ser exposto num lcd p.ex. nada a ver com gravar na eeprom, mas lhe poderá ser útil futuramente). Como deve saber 1 byte vai até 255 (0xff). Números até este valor cabem em 1 posição de eeprom.
-sim a eeprom do dito tem 256 posições de 8 BITS cada. Não confunda com BYTE
Sem querer ofender sugiro que dê uns passos pra trás e reveja os conceitos de bits, bytes, hexa, char, int, e afins.

Desculpe se não fui mui claro, mas esta é a única pergunta em todos estes anos de parceria que acho que sei responder com chance maior que 50% de estar certo.
Como sugestão de um psicólogo, tente logar-se com nome feminino (recadastra-te) pra fazer perguntas (tipo simples) e vai obter respostas até do que nem precisa e com muito mais rapidez. Conheço este time.
Ah, se quiser fazer um pisca led com pic...
abç

MensagemEnviado: 11 Dez 2009 15:43
por Djalma Toledo Rodrigues
Antônio

Se for 245 em Character ocupará 3 posições:
0x32, 0x34 e 0x35 Ver Código ASCII:

http://pt.wikipedia.org/wiki/ASCII

Se for o Valor 245 uma posição: 0xF5

DJ

MensagemEnviado: 11 Dez 2009 16:25
por ze
oi de novo. a explicação do dj está correta. mas o minino 2º entendi quer guardar apenas o nº 245 e ninguém em sã conciência o faria em forma de ascii dada a limitação da eeprom.
Onde escrevi caracteres ou dígitos subtenda-se alfanuméricos e numéricos ascii e puramente números repectivamente. 1/2 confuso...sorry.
antigamente eu era meio confuso. hoje em dia num tenho mais tanta certeza.
abç & bfds II

MensagemEnviado: 11 Dez 2009 17:36
por antonio
brigado Pessoal!!

Lellis eu quando posto aqui alguma duvida, jà tenho pesquisando muito, e claro quando não acho nada de jeito entao passo por cah!

Mais no fundo foi esclarecida a minha duvida sim !

Espero não encher o saco de ningem com minha passagem por aqui e com minhas duvidas?

Eu nao soh proficional gosto da programação de microcontroladores,por isso os meus erros !

Pessoal soh mais esta!Tambem podemos guardar dados na eeprom da seguinte forma!
#rom 0x1100={1,2,3,4,5,6,7,8}; // Datos a guardar en la EEPROM

isto è começamos a guardar dados a partir da posiçao 0x1100 da eeprom, agora se eu quiser uardar em outras posiCoes como fazer?
Por exemplo para guardar nas posicoes seguintes outros dados ?


Um abraço

MensagemEnviado: 12 Dez 2009 22:13
por ze
ja que passei por cá...
ccs num sei, mas esta tua forma é parecida com a do hitech. mas veja que estes dados serão guardados como default durante a gravação apenas. ou seja não durante o run time (sistema funcionando). Pra este caso e eepromread e eepromwrite são indicadas.

Algum maluco do ccs poderá lhe confirmar...
abç

MensagemEnviado: 13 Dez 2009 06:33
por antonio
lellis escreveu:Algum maluco do ccs poderá lhe confirmar...
abç


Lellis tambem espero que passe por cá algum espert em CCS para clarificar isto ao minino!!

Agradeço por ter ajudado, vai dando sempre uma passado por cà a sempre em que ajudar¨!

Cara eu esteve estudando um pouco isso, e não teve sucesso , ou seja não ficou claro,se è soh durante a gravação , ou se pode no sisteme de funcionamente como vc falou!

Um abraço