Página 1 de 1

INTERR. EXTERNA N FUNCIONA NIVAL ALTO PIC12F629

MensagemEnviado: 05 Jun 2017 20:48
por eloyfm
Ola pessoal..
Eu tenho que fazer um programinha que de um pulso em um led a casa segundo com o 12F629 . Isso deve ser colocado em duas peças. com a interrupção externa preciso sincronizar as duas peças . Eu consegui fazer funcionar muito bem dando o pulso negativo. Mas não segui fazer isso com o pulso positivo. Aparentemente parece facil e até funciona no proteus, mas no hardware não.. Eu vejo o pulso positivo com 5V e o controlador não reage.. Abaixo o programinha
note que ele faz o pulso , quando termina ele transforma o GPIO2 em saida e da um pulso, logo volta o GPIO em entrada e fica esperando algum pulso. Quando ocorre a interrupção ele volta o programa para o inicio.. Quando conecta duas peças ou varias elas se sincronizam.

cpp code
#include <12F629.h> 
#fuses INTRC_IO, NOWDT, NOMCLR, PUT, BROWNOUT
#use delay(clock=8000000)

//#define chave PIN_A2 /// gpio 2

#use fast_io(A)

int conta=0;
int chave;

#INT_EXT
void chave()
{

delay_ms(230);
conta=26;
}

#int_timer0
void timer0 (void)
{

conta++;
if (conta>=26)
{

output_high(PIN_A5);
delay_ms(300);
output_low(PIN_A5);
delay_ms(390);

conta=0;
if(conta == 0 )
{
set_tris_a(0b00000000);
output_high (pin_a2);
delay_ms(10);
output_low (pin_a2);
set_tris_a(0b00000100);
}

}

set_timer0(3);

}



void main()
{
set_tris_a(0b00000100);
output_a(0b00000000);

ext_int_edge(1,L_TO_H);
clear_interrupt(INT_EXT);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
setup_timer_0(rtcc_internal|rtcc_div_256);
set_timer0(3);
enable_interrupts(int_timer0);

while (true)
{

}

}

Re: INTERR. EXTERNA N FUNCIONA NIVAL ALTO PIC12F629

MensagemEnviado: 06 Jun 2017 06:31
por Fervolt
colocou um resistor de pull-down no pino da interrupção externa?
Caso não saiba, ligue um resistor de 10k entre o pino da interrupção e GND.

Att

Sent from my SM-G925I using Tapatalk

Re: INTERR. EXTERNA N FUNCIONA NIVAL ALTO PIC12F629

MensagemEnviado: 06 Jun 2017 15:41
por eloyfm
Incrivelmente a coisa é bem estranha, mas talvez explicando alguém já me ajude identificar. Eu alimento o 12F629 com 12V e logo com um LM78L05.. Quando ele esta configurado para pulso negativo na INT_EXT funciona bem. Ocorre que eu precisei mudar para INT_EXT positivo.. Então coloquei um Pull-Down de 10K . Aplico pulso positivo nele de +5V e até já tentei colocar um Zener de 5,1V com um resitor para baixar a corrente e aplicar +12V, fazendo que termine em +5V no GPIO2.. Entrada do INT_EXT.. Ele não lê o pulso positivo nem a pal.. Aí o mais interessante é que se eu toco ele nos +5V mesmo do pino 1 do 12F629 ele tambem não lê, mas se eu toco em outro GPIO que uso com Pull_up ou MCLR.. eu vejo no osciloscópio que ele recebe somente 2,5V mas mesmo assim ele lê o pulso positivo.. Ou seja.. Se eu encosto ele em qualquer outro GPIO com PUL-UP de 10K ele lê o Pulso e faz a INT_EXT.. Eu já tentei de tudo mas não vai de jeito nenhum.. Até direto sem nenhum resistor ele não funciona.. e veja que eu coloco o TRISA em 1 (0b00000100) como entrada para esperar o pulso positivo.... certamente não vou desistir, mas espero conseguir esse ano ainda.. kkkk.. Obrigado...

Re: INTERR. EXTERNA N FUNCIONA NIVAL ALTO PIC12F629

MensagemEnviado: 07 Jun 2017 08:01
por andre_luis
Independente de qualquer analise mais profunda da causa real desse problema, nesse código aí há algumas praticas não recomendadas, como utilização de delay em loop fechado dentro do vetor da interrução.

Re: INTERR. EXTERNA N FUNCIONA NIVAL ALTO PIC12F629

MensagemEnviado: 08 Jun 2017 11:37
por eloyfm
Certamente o codigo tem muito que acertar, mas minha maior duvida é o problema que nao aparece numa simulação. Tudop funcionou bem, mas no real world a coisa não vai com o positivo.. Já no negativo tudo bem... Como pode o IO receber os +5V positivo da mesma fonte do PIC e não reconhecer como interrupção de entrada ?

Re: INTERR. EXTERNA N FUNCIONA NIVAL ALTO PIC12F629

MensagemEnviado: 08 Jun 2017 13:48
por andre_luis
Por "funcionar-na-simulação" voce quer dizer que a fez por exemplo num Proteus da vida ?

Re: INTERR. EXTERNA N FUNCIONA NIVAL ALTO PIC12F629

MensagemEnviado: 14 Jun 2017 13:20
por eloyfm
Sim. Num proteus da vida. Com pulso negativo sempre funcionou perfeitamente. O problema é conseguir funcionar com o pulso positivo.