Esta é uma descrição do código e da forma como este está organizado.
O código não vai ser colocado aqui, pois acredito que uma boa descrição das várias etapas é mais importante, além do mais pode ser feito em várias linguagens com MCU diferentes, etc...

  1. Iniciar o sistema (configurações de clock, ADC, etc.);
  2. Iniciar a biblioteca da EEPROM (deste caso 24AA128);
  3. Fazer ciclo 'for' para que o 25 primeiros endereços sejam colocados a zeros. Como já tinha dito, é aqui que vai ser guardado o valor do último ciclo com valor de temperatura válido;
  4. Fazer um ciclo 'while' que incorpora: incremento de endereço, leitura do sensor, verificação se é temperatura negativa ou positiva, escrever na memória pela ordem descrita no post anterior, guardar o número de ciclos feito até ao momento, etc;
  5. O ciclo 'while' em cima será interrompido quando houver algo disponível na porta serial. Neste caso, quando for enviado o comando '123' ele sairá do ciclo;
  6. Após sair do ciclo, é perguntado se se pretende 'descarregar os dados?'. A resposta deverá ser 'SIM', caso contrário a pergunta é feita novamente;
  7. Depois de confirmar é feita a soma dos valores guardados nos primeiros 25 endereços, para saber qual o número de ciclos de leitura (ou ciclos de escrita que foram feitos);
  8. Sabendo o número de ciclos, entra-se num ciclo 'while' que vai buscar dados à memória, obter a temperatura (ver post anterior) e envia-la via serial. Quando o número de ciclos de leitura, for igual ao número limite de ciclos de escrita, o 'while' termina;
  9. Por último fica-se a aguardar um reset ao circuito;

Esta é a ordem de eventos no código de teste. Deste até ao código final várias coisas terão de ser aperfeiçoadas.

Falta ligar um cristal de 32KHz, configurar interrupções de forma a que cada leitura de temperatura seja feita de 15 em 15min, iniciar com um 'pulsador', etc.

A imagem seguinte ilustra uma pequena demonstração do código teste num simulador.

Clicar na imagem para ver maior


0 Responses so far.

Enviar um comentário