Página 1 de 1

Gravar uma variável na EEPROM interna ou externa

MensagemEnviado: 07 Ago 2014 17:31
por RaioLaser
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.

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

MensagemEnviado: 07 Ago 2014 22:05
por tcpipchip
Mande uma mensagem PV que entro em contato contigo.

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

MensagemEnviado: 08 Ago 2014 00:05
por lopesjm
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

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

MensagemEnviado: 08 Ago 2014 19:50
por tcpipchip
se quiseres, eu tenho uma de 8kb aqui...

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

MensagemEnviado: 08 Ago 2014 21:12
por andre_luis
Matheus,


Chegou a dar uma olhada nesse programa aqui ? Ajuda 8051+I2C ???

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

MensagemEnviado: 11 Ago 2014 00:09
por RaioLaser
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!

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

MensagemEnviado: 11 Ago 2014 09:41
por Red Neck Guy
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.

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

MensagemEnviado: 11 Ago 2014 10:31
por lopesjm
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

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

MensagemEnviado: 13 Ago 2014 12:52
por RaioLaser
É 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!

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

MensagemEnviado: 13 Ago 2014 14:05
por andre_luis
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:


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

MensagemEnviado: 13 Ago 2014 18:37
por lopesjm
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