Ir ao conteúdo
  • Cadastre-se

Iniciar programa de onde parou caso seja desligado!


tehuan

Posts recomendados

Boa noite caros amigos!

Perdoe-me caso esteja criando um tópico duplicado. Mas não sei nem pelo o que pesquisar para sanar minha dúvida.

Eu criei um projetinho bem bacana com a ajuda dos amigos aqui do fórum, ta funcionando perfeitamente. Meu projeto incrementa e decrementa valores em determinadas variáveis, trabalha com timer0, timer1, ascende um display triplo de sete segmentos e mais algumas coisas. Agora caso acabe a energia ele inicia do zero. Eu queria saber se tem como iniciar a programação de onde parou, se o pic tem essa função de manter a programação. O que devo estudar caso essa função exista.

Pic 16f628a Programação em C CCS

Agradeço a ajuda!

Link para o comentário
Compartilhar em outros sites

Não existe forma prática de se fazer isso. Você além de ter que salvar o contador de endereço iria precisar gravar a memória RAM inteira. É impossível fazer isso em tempo de execução por dois motivos: Memórias não voláteis como eeproms e Flash são bem lerdas para se programar em comparação com o tempo de execução do pic, e essas memórias têm limite de gravação (entre 10mil e 1milhão de ciclos de escrita).

O ideal é gravar apenas o necessário, e somente na hora em que o dispositivo for desligado.

Link para o comentário
Compartilhar em outros sites

Não sei se existe um jeito por software, mas eu fiz algo parecido uma vez. Depois do regulador de tensão 7805, eu coloquei dois capacitores de placa mãe de 3300uf/10V, gosto deles porque eles são pequenos e com bastante capacitância, pois bem, dois deles totalizam 6600uf, depois de desligado a energia, o pic ainda funciona uns 2,5 segundos.

Ai a estratégia é colocar uma porta A/D monitorando a tensão antes do regulador de tensão (usando um divisor resistivo é claro, pra não queimar a entrada do PIC)

Exemplo: se sua fonte é de 12V exata, então 12V tem que ser 5V na entrada do PIC, se a fonte cair pra 6V, na entrada do PIC vai dar 2,5V, ai você faz um IF pra se a tensão na porta A/D for menor que 2,5V, gravar a variável.

O único incoveniente é que você não pode deixar delays grandes no meio do programa, se não a tensão pode cair e ele ainda está preso neste delay e não da tempo de gravar a sua variável.

PS: não ligue LEDs e Displays depois do mesmo 7805 do PIC, se não o capacitor vai descarregar mais rapidamente.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Não sei qual PIC você está usando, mas você pode usar a ideia do chacalgbi mas com interrupção do módulo comparador (grande parte dos PICs têm comparador analógico). Assim você pode comparar a saída do 7805 com sua entrada, habilite a interrupção do comparador por mudança, quando a tensão de entrada for menor que a de saída, a interrupção ocorre, e na rotina da interrupção você salva o valor necessário na eeprom.

Na hora de iniciar o programa você carrega o valor gravador na eeprom.

Caso o seu circuito precisar de muita corrente nos 5V, faça uma alimentação separada para o PIC utilizando um 78L05.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...