• Welcome to LusoRobótica - Robótica em Português.
 

Arduino + EEPROM i2c

Started by tr3s, 26 de January de 2009, 14:24

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

antonio_jose

Muito interessante

Está muito bem explicado

;D

Reonarudo

Atenção que a memória interna EEPROM do arduino tem um nº de escritas e leituras limitado eu se for programar um rede neuronal num arduino esgotava as escritas e leituras todas
Leonardo Marques

TigPT

Todas as memórias tem um tempo de vida, se utilizares muito intensivamente uma pen por exemplo, também se danificam sectores. No fundo são as propriedades químicas dos componentes que se vão perdendo por estarem constantemente a comutar de estado.

Reonarudo

Pois é, o que quis dizer é que a memória do arduino tem um tempo de vida muito reduzido
Leonardo Marques

Njay

Apenas as memórias persistentes do mega168 têm uma vida limitada. Desde que utilizado sempre dentro das especificações, o fabricante (ATMEL) garante que:

1) A memória de programa (FLASH) pode ser escrita/apagada pelo menos 10000 vezes

2) A memória de dados (EEPROM) pode ser escrita/apagada pelo menos 100000 vezes

Estes valores são aquilo a que se chama "endurance". Pode parecer muito mas se escrevessem dados na EEPROM 1 vez por segundo ela só durava 1 dia e umas horas. Portanto estas memórias são para ser usadas só esporádicamente, como por exemplo para guardar configurações do utilizador de umas utilizações para as outras.

A ATMEL também dá outra especificação que é a "data retention", e que indica durante quanto tempo a memória "segura" os dados guardados . No caso dos AVRs modernos esses valores são

1) Pelo menos 20 anos se a temperatura ambiente for mantida a 85ºC
2) Pelo menos 100 anos se a temperatura ambiente for mantida a 25ºC

A temperatura reduz o tempo de retenção; quanto mais quente, menos tempo aguenta (os dados derretem, lol). Entre os 2 valores acima há uma "curva". Não sei se é linear, mas se fosse, isto queria dizer por exemplo que a (25+85)/2= 55ºC a retenção seria de pelo menos (100+20)/2= 60 anos.

Estes valores são dados para todas as memórias "EEPROM". A EEPROM i2c de que fala a mensagem original também terá estes valores na sua datasheet.

tr3s

Quote from: Njay on 07 de June de 2009, 13:04
...

Estes valores são dados para todas as memórias "EEPROM". A EEPROM i2c de que fala a mensagem original também terá estes valores na sua datasheet.

Exactamente Njay!  :D (Como sempre, tudo super bem explicado!)
No post inicial , há uma altura em que comparo as EEPROM da Microchip com as da Atmel e chego a referir a característica dos ciclos de escrita/leitura serem finitos e da capacidade de retenção de dados com o tempo! :)
Tr3s
Daniel Gonçalves

Reonarudo

Em vez de usar eeproms não compensaria usar sdcards? ??? ::)
Leonardo Marques

metRo_

Quote from: Reonarudo on 08 de June de 2009, 13:29
Em vez de usar eeproms não compensaria usar sdcards? ??? ::)

Os sdcards nunca testei mas duvido que seja mais simples que estas memorias, estas memorias são a coisa mais simples que há :)

TigPT

Eu ando agora a preparar um tutorial para SD card com Arduino, mas estou a ter uns problemas com o controlo de FAT.

Depois quando estiver tudo a funcionar posto ;)

tr3s

O código que é preciso para poderes escrever e ler em SD cards é muito grande pelo que já li... Enche a memoria quase toda! Tigpt, tu que tas a fazer experiências, quanto te ocupa?
Tr3s
Daniel Gonçalves

TigPT


Reonarudo

Então nem é assim tanto e se for feita uma boa API é tão simples de usar como outra memoria qualquer tem a desvantagem de ocupar mais memória mas tem a vantagem de ser facilmente substituível.
Leonardo Marques

tr3s

Quote from: Reonarudo on 08 de June de 2009, 14:42
Então nem é assim tanto e se for feita uma boa API é tão simples de usar como outra memoria qualquer tem a desvantagem de ocupar mais memória mas tem a vantagem de ser facilmente substituível.

Eu acho que é difícil justificares o uso de SD em situações em que podes utilizar uma EEPROM. Repara que num ATmega128 com o bootloader do Arduino estás a ocupar METADE da memória de código disponível apenas para ler e escrever num SD... Já para não falar que se usa um sistema de ficheiros antigo e ultrapassado/obsoleto chamado FAT... Mais, pelo que tenho lido não funciona muito bem nem imlpementa todas as funcionalidades do sistema de ficheiros (criação de ficheiros, directorias etc).
O que entendes por "ser facilmente substituivel"? ???
Tr3s
Daniel Gonçalves

TigPT

É bom para se quisermos fazer logs bastante grandes de dados, como por exemplo, gravar temperatura e pressão atmosférica a cada meio segundo.

Contudo não é fácil utilizar, e do que consigo nem dá para criar pastas ou ficheiros, o ficheiro tem que já existir para podermos adicionar-lhe dados.

Quando conseguir meter a funcionar posto.

tr3s

Claro, mas o que eu disse foi "acho que é difícil justificares o uso de SD em situações em que podes utilizar uma EEPROM", repara "situações em que podes utilizar uma EEPROM"! :P
Tr3s
Daniel Gonçalves