Apos fazer meu 1307 funcionar tranquilamente com a ajuda do Mestre Sobral, usando a biblioteca DS1307

(http://labdegaragem.com/forum/topics/simulador-de-presen-a-residenc...)

passeio para uma dificuldade que parecia simples...mas nao consegui solucionar,  seria utilizar os 55

bytes de RAM disponiveis no proprio chip 1307...vi que alguns na internet se valem do "wire" pra acessar a ram, tentei os comandos mas nao consegui...haveria na propria biblioteca DS1307 instrucoes proprias para escrever/ler na RAM?algo que facilitaria esse processo?

Grato

Barrica

Exibições: 834

Responder esta

Respostas a este tópico

Caro Eduardo,

segundo o manual do DS1307, basta endereçar os endereços de 08 a 3F. Veja o texto abaixo:

RTC AND RAM ADDRESS MAP
Table 2 shows the address map for the DS1307 RTC and RAM registers. The RTC registers are located in address
locations 00h to 07h. The RAM registers are located in address locations 08h to 3Fh. During a multibyte access,
when the address pointer reaches 3Fh, the end of RAM space, it wraps around to location 00h, the beginning of
the clock space.

Ajudou? Abraço,

Henrique

consulte sempre um engenheiro eletrônico

Ola Henrique,

muito obrigado por ajudar, mas de fato estava querendo escrever na RAM do ds1307 usando comandos diretos da biblioteca DS1307...

por exemplo:

para escrever nos registros 00h a 06h(ajustando o tempo), na biblioteca ja possui os comandos ...

 // RTC.set(DS1307_SEC,0);
 // RTC.set(DS1307_MIN,45);
 // RTC.set(DS1307_HR,14);
 // RTC.set(DS1307_DOW,6);
 // RTC.set(DS1307_DATE,25);
 // RTC.set(DS1307_MTH,5);
 // RTC.set(DS1307_YR,13);

se houve alguma instrucao direta para escrever/ler na RAM, facil como essas seria muito bacana...algo como

RTC.writeCTCRam(XXh,y)   / escreve o dado y no endereco XXh da RAM do 1307

RTC.readCTCRam(XXh, z)  /retorna o dado do endereco xxh na variavel z

ou se nao houver na biblioteca, sera que alguem saberia fazer isso, ou algo parecido???

abracao

Caro Eduardo,

se entendi direito, os parâmetros relativos ao RTC devem estar definidos num arquivo chamado DS1307.h ou coisa parecida. Defina um endereço base para o acesso à RAM assim ó ----> #define  RTC_RAM  8  .... e tente usar os mesmos comandos para os demais registros do RTC, por exemplo:

RTC.set(RTC_RAM+ 5,123);

RTC.get(RTC_RAM+ 5,xxx);

Pelo pouco que vi, pode ser que funcione.

Boa sorte! Abraço,

Henrique

Henrique foi muito estranho testar esses codigos...

realmente a biblioteca os possue, porem NAO funciona!!! pelo menos nao consegui fazer funcionar,

no Verify passa beleza..mas nao grava ou le os dados...

dai achei uns codigos usando o WIRE escrevendo diretamente e lendo diretamente, mas funcou!!!

os que eu testei esta mais explicado no link abaixo:

read/write RAM do 1307 -wire

pouco mais complicado mas funciona!!!ele sempre convert decimal para bcd e bcd pra decimal...mas se os codigos que voce funcionasse seria muito 10!!!grato pela ajuda

Eduardo, 

Não entendi uma coisa: vc está usando arduino, qual a vantagem de utilizar a RAM do 1307? 

Valeu!

Pois eh Ricardao...to vendo que ta mais pra usar essa EEPROM do Arduino se nao ela vai acabar enferrujando!!!

mas pensei nisso agora, apos sua pergunta pois estava pensando que era um desperdicio nao usar a RAM do DS1307, ou concentrar todas as informacoes de tempo somente ai...mas pensando melhor o negocio seria ser pratico e usar essa EEPROM do Arduino mesmo...mas fica ai um tema pra quem quiser se divertir um pouco...

Grande abraco

Nossa nao sabia que a EEPROM eh limitada, veja:

" The EEPROM memory has a specified life of 100,000 write/erase cycles, so you may need to be careful about how often you write to it."

talves seje uma boa ideia saber usar essa RAM!!!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço