Gravar uma variável na EEPROM interna ou externa

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Gravar uma variável na EEPROM interna ou externa

Mensagempor RaioLaser » 07 Ago 2014 17:31

Boa tarde!

Galera, eu estou desenvolvendo um programa para Vending Machines a qual necessitam de um limite de vendas.
A maquina funciona através de um motor que libera o produto.
A cada vez que o motor gira a variável limite é acrescida.

O programa inteiro está funcionando normalmente, porém, por conta desse limite surgiu um problema.
Se por um acaso a máquina é desligada, esse limite volta pra zero.

Por conta disso é preciso gravar e ler essa variável limite em uma memoria EEPROM 24LC00 ou então na memoria EEPROM interna do chip.
Procurei em vários lugares mas o que eu consegui fazer foi apenas gravar frases e palavras e não variáveis.
Olhei alguns tópicos que utilizavam os registradores EECON e outros WMCON para gravar na eeprom interna, só que pelo SDCC não consegui acessar nenhum desses registradores.

Vocês têm algumas dicas?

Estou escrevendo em linguagem C. (Não entendo de Assembly)
Eu utilizo o 89s52 e SDCC.

Agradeço desde já pela ajuda!
Matheus S. S.
RaioLaser
Bit
 
Mensagens: 11
Registrado em: 07 Ago 2014 16:55

Re: Gravar uma variável na EEPROM interna ou externa

Mensagempor tcpipchip » 07 Ago 2014 22:05

Mande uma mensagem PV que entro em contato contigo.
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Gravar uma variável na EEPROM interna ou externa

Mensagempor lopesjm » 08 Ago 2014 00:05

Olá RaioLaser,

Tem uma memória com tecnologia ferromagnética, onde o número de escritas é praticamente ilimitado.

O fabricante era a Ramtron, mas foi adquirida pela Cypress. Já usei uma memória dessas. Usei uma paralela. Tinha um macete pra poder acessá-la como se fosse uma RAM.

www.cypress.com/nonvolatile/?source=CY-ENG-HEADER

Vê se ajuda.

[]s
Jorge
lopesjm
Byte
 
Mensagens: 133
Registrado em: 26 Out 2006 12:40

Re: Gravar uma variável na EEPROM interna ou externa

Mensagempor tcpipchip » 08 Ago 2014 19:50

se quiseres, eu tenho uma de 8kb aqui...
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Gravar uma variável na EEPROM interna ou externa

Mensagempor andre_luis » 08 Ago 2014 21:12

Matheus,


Chegou a dar uma olhada nesse programa aqui ? Ajuda 8051+I2C ???
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Gravar uma variável na EEPROM interna ou externa

Mensagempor RaioLaser » 11 Ago 2014 00:09

Muito obrigado pelas respostas!
Infelizmente trabalhar com outro tipo de memória não será possível.
Só posso utilizar essas duas opções mesmo, eeprom interna ou externa.

André, estarei dando uma olhada amanhã neste tópico, não o tinha visto, muito obrigado!
Qualquer dúvida eu volto aqui, mas toda informação ainda é bem vinda!

Abraços!
RaioLaser
Bit
 
Mensagens: 11
Registrado em: 07 Ago 2014 16:55

Re: Gravar uma variável na EEPROM interna ou externa

Mensagempor Red Neck Guy » 11 Ago 2014 09:41

Antigamente o 89s52 não tinha memória eeprom interna, mudou?
Se você for utilizar uma memória 24cxx externa basta utilizar as funções primitivas de escrita/leitura.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: Gravar uma variável na EEPROM interna ou externa

Mensagempor lopesjm » 11 Ago 2014 10:31

Olá Raio Laser,

Bom, espero que tenha visto as opções da Cypress (Ramtrom). www.cypress.com/?mpn=FM24C04B-G

"High-endurance 100 trillion (1014) read/writes"

Ou ainda usar um circuito que identifique que houve queda de energia e grave essa variável em e2prom comum. O circuito detector pode usar interrupção externa. A alimentação nesse período que a energia acabou pode ser feita por um supercap, capacitor de alguns Faradays para mcu, só pra fazer essa tarefa, pois seria uma interrupção de alta prioridade para o 8051 e levaria muito pouco tempo para executar, antes da alimentação do supercap se esgotar. Lembrando que o at89s52 consome cerca de 11mA em operação, se não me engano.

[]s
Jorge
lopesjm
Byte
 
Mensagens: 133
Registrado em: 26 Out 2006 12:40

Re: Gravar uma variável na EEPROM interna ou externa

Mensagempor RaioLaser » 13 Ago 2014 12:52

É realmente o 89s52 não tem EEPROM, foi um descuido meu.

Então a única opção será utilizar uma 24LC00 ou 24LC04.

Jorge, não tem como eu utlizar essas opções pois estou criando um programa para um hardware já desenvolvido e nele consta as memorias 24LC00 e 24LC04, mas muito obrigado pela ajuda!

Agora vou a luta pra conseguir entender o funcionamento dessas memorias eeproms!

Obrigado!
RaioLaser
Bit
 
Mensagens: 11
Registrado em: 07 Ago 2014 16:55

Re: Gravar uma variável na EEPROM interna ou externa

Mensagempor andre_luis » 13 Ago 2014 14:05

RaioLaser escreveu:É realmente o 89s52 não tem EEPROM, foi um descuido meu.


Existem opções pino-compatível da ATMEL para a família 89C52, como por exemplo o super-vitaminado 89C51RD2:

"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Gravar uma variável na EEPROM interna ou externa

Mensagempor lopesjm » 13 Ago 2014 18:37

Ola RaioLaser,

Entendi o seu problema. Você chegou a olhar as memórias FM Serial (I2C) da Cypress que passei ?

Copiei isto do site, caso não tenha visto:

FM24C04B: 4-Kbit (512 × 8) Serial (I2C) F-RAM

Last Updated: 05/02/2014
Version: *F


4-Kbit (512 × 8) Serial (I2C) F-RAM

Features

4-Kbit ferroelectric random access memory (F-RAM) logically organized as 512 × 8
Fast 2-wire Serial interface (I2C)
Low power consumption
Voltage operation: VDD = 4.5 V to 5.5 V
Industrial temperature: -40 °C to +85 °C
8-pin small outline integrated circuit (SOIC) package
Restriction of hazardous substances (RoHS) compliant
For more, see pdf

Functional Overview

The FM24C04B is a 4-Kbit nonvolatile memory employing an advanced ferroelectric process. A ferroelectric random access memory or F-RAM is nonvolatile and performs reads and writes similar to a RAM. It provides reliable data retention for 151 years while eliminating the complexities, overhead, and system-level reliability problems caused by EEPROM and other nonvolatile memories.

A não ser pelo pino 1, os outros pinos me parecem compatíveis com a memória 24c00. Nesse caso, creio que altera apenas o endereço lógico. Aí precisa ver o detalhe no DS.

[]s
Jorge
lopesjm
Byte
 
Mensagens: 133
Registrado em: 26 Out 2006 12:40


Voltar para 8051

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x