Opção de inicialização

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Opção de inicialização

Mensagempor RAWeigel » 29 Set 2016 10:55

Olá,

Acho que não entendi o funcionamento do flag /POR (Power-on reset) do PCON (PIC16F628) no DataSheet.
Necessito que ao ligar o PIC, execute determinada função. Se o PIC já estiver ligado e for dado um RESET (pino MCRL), ele execute outra função.
Alguém já trabalhou com este flag? Posso usa-lo desta forma?
Richard
Avatar do usuário
RAWeigel
Byte
 
Mensagens: 300
Registrado em: 11 Out 2006 16:14
Localização: Rio de Janeiro - RJ

Re: Opção de inicialização

Mensagempor andre_luis » 29 Set 2016 12:15

Sim, voce pode usar esse flag para saber qual foi a origem do resset.
Por exemplo, se fosse um reset por Watchdog em teoria não deveria acionar esse bit.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Opção de inicialização

Mensagempor RAWeigel » 29 Set 2016 13:18

Bom, através de uma dica de outro post do fórum, cheguei a função RESTART_CAUSE().

A principio está funcionando para o que preciso, ou seja:
Ligo o PIC pela primeira vez, o LED permanece desligado.
Pressiono o RESET (pino MRCL) o LED acende.

Segue código didático feito em CCS:

Código: Selecionar todos
// Verificação da causa de reinicialização.
// 29/9/16 / CCS.
//
#include <16f628a.h> //........................................................ Biblioteca básica do PIC.

#fuses NOPROTECT //............................................................ Leitura do código protegida.
#fuses NOCPD //................................................................ Leitura da EEPROM permitida.
#fuses NOBROWNOUT //........................................................... BROWNOUT desabilitado.
#fuses NOWDT //................................................................ WATCH DOG Desativado.
#fuses NOPUT //................................................................ PUT (Power Up Timer) Desativado.
#fuses MCLR //................................................................. Pino MASTER CLEAR ativado.
#fuses NOLVP //................................................................ Programação em baixa tensão desabilitada.
#fuses INTRC_IO //............................................................. Oscilador Interno e dois pinos de I/O liberados.

#define LED PIN_A4 //.......................................................... LED acende com VSS.

///////////////////////////////////////////////////////////////////////////////
void main() //................................................................. Função Inicial (Inicialização).
{
   if (restart_cause()== NORMAL_POWER_UP) //................................... Verifica a inicialização. Se for normal...
   {
      output_high(LED); //..................................................... Desliga o LED.
   }
   else
   {
      output_low(LED); //...................................................... Se foi pelo MRCL (ou outra causa), Liga o LED.
   }
   setup_vref(false); //....................................................... Desabilita tensões de referencia.
   setup_comparator(NC_NC_NC_NC); //........................................... Desabilita comparadores.
 
   while(true) //.............................................................. Loop Principal do programa.
   {
     
   } //........................................................................ Fim do TRUE.
} //........................................................................... Fim do MAIN.

Richard
Avatar do usuário
RAWeigel
Byte
 
Mensagens: 300
Registrado em: 11 Out 2006 16:14
Localização: Rio de Janeiro - RJ


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x