Página 1 de 1
Configurando o RTC na hora da gravação (LPC2138)

Enviado:
19 Jun 2007 18:41
por lrfad2
Boa noite pessoal!
As coisas ficarim bem mais fáceis pra mim se na hora da gravação eu conseguisse configurar o RTC, com a data e a hora atual.
Pensei em fazer isso por um arquivo de texto gerado em Delphi. Mas o problema que na produção eles teriam que recompilar a cada gravação, que é inviável.
Alguem tem alguma ideia de como fazer isso?

Enviado:
20 Jun 2007 14:26
por Ander_sil
Cara isso é complicado, mas eu acho que o unico jeito seria fazer uma aplicação no PC (Delphi), e carimbar o arquivo binario com a data e hora do PC, na hora de gravar no chip, isso em um local conhecido da memória onde o aplicativo poderia ir nesse endereço e atualizar os dados, isso seria possivel com um programa de gravação fornecido pelo fabricante do chip, por exemplo a Atmel fornece a DLL do programador SAMPROG e com essa DLL e a DLL do j-link, faria um software "gravador".
Esse software, quando ao ser carregado pelo fimrware carimba na mesma hora a data e hora e grava o arquivo .bin no chip. affff.
Deve ser o unico jeito, mas é uma suposição.
até+

Enviado:
21 Jun 2007 09:22
por helton
Você pode alterar o arquivo *.hex também. Coloque no software uma data e hora atual gravada na flash interna, e toda vez que você for gravar um chip, execute um software que altere a posição de memória inserindo a data e hora atual, chame o gravador ( pelo software mesmo ), e faça o donwload do firmware com a data e hora atual...

Enviado:
21 Jun 2007 15:18
por lrfad2
mas como se interpreta o arquivo hex?
Ex:
:0400000500000000F7
:020000040000FA
Alguem já fez isso? Deu certo?

Enviado:
21 Jun 2007 22:14
por gibim
Minha solução para programação de um firmware com data e hora razoavelmente atualizados:
Fiz um programa em dos que lê um arquivo *hex para a memória;
Localiza uma determinada região de memória pré formatada;
Lê o timer atual do PC
Grava nesta região de memória do arquivo *hex o novo valor;
Recalcula o CheckSum das linhas alteradas do arquivo *.hex;
Salva o conteúdo da memória no arquivo a ser gravado no CHIPS LPC2138.
Aguardar 10 segundos para uma nova leitura e carregamento.
Portanto, essa rotina, funciona de modo independente do meu gravador, uma vez que ele é encarregada de atualizar periodicamente o meu arquivo *hex. E com uma precisão de 10 segundos, sei corretamente a hora e momento que determinado software foi gravado. Além de me ajustar a hora atual.
O único detalhe é você definir corretamente um segmento de memória e localizar-lo dentro do arquivo, formatar corretamente a data e hora e tudo funcionará.
Espero que possa ajudar em algo.
Abraços.

Enviado:
21 Jun 2007 22:26
por gibim

Enviado:
29 Jun 2007 09:05
por lrfad2
Gibim,
essas dicas foram geniais... muito obrigado

Enviado:
29 Jun 2007 09:20
por andre_luis
Olha, sei que são "mundos" diferentes, mas já fiz algo parecido com o PIC.
No momento que eu compilava, e gravava o programa no PIC via ICSP, a diretiva __TIME__ e __DATE__ programavam uma área da FLASH do PIC, e após gravar, ele imediatamente inicializava ressetado; E nesse instante, eu pegava o valor da FLASH e colocava no RTC externo.
+++

Enviado:
29 Jun 2007 11:06
por Ander_sil
Olá André, mas nesse seu caso a data e a hora é referente à compilação do programa, ou seja, serve quando voçe compila e logo em seguida grava o chip.
No caso do pessoal aí a dúvida é, pegar um arquivo executavel .HEX e inserir a data e hora da gravação via jtag.
até+

Enviado:
29 Jun 2007 15:04
por gibim
É que no caso dos CHIPS LPC2138, quando vc acaba de gravar, e entra no modo de operação, já no mesmo instante, o CHIPS pega o valor contido na FLASH, que nunca mudará, e programa uma única vez na memória do RTC, voltando a ser zerado toda vez que a pilha do RTC for arrancada.
Ou seja: Desde que o aparelho entre em funcionamento no instante seguinte à programação, os valores serão carregados e permanecerão na memória. Restando apenas o caso do seu zeramente quando a pilha for arrancada.
Não existe milagre, temos que nos conformar com as possibilidades.
Abraços

Enviado:
29 Jun 2007 15:17
por andre_luis
O que pode-se tentar fazer - e vai dar um pouco de trabalho - seria 'mapear' numa posição fixa da memória flash, a sequencia de bytes relacionados à data/hora, podendo no ato da compilacao, ficar vago, ou seja, zerado.
Depois, criar um programinha que substituísse no arquivo .HEX a data/hora pela data/hora atual do PC ( não esquecendo de re-calcular o cheksum ).
Assim, quando o camarada fosse gravar, chamaria o seu programinha .BAT que iria antes da gravacao, fazer a correcao acima.
+++