Página 1 de 1

ao ligar o INT rda o pic trava pic16F628A

MensagemEnviado: 06 Jul 2008 02:11
por cristian
fiz um codigo aqui e estou a 2 dias sem resolver uns travamentos no pic do nada


e descobrir q ao ligar a int do usart o pic trava to usando CCS 4.068 MPlab 7.52

o que fazer ja q preciso dessa int


void main()
{
delay_ms(1000);
#ZERO_RAM
output_A(0);
output_b(0);
SET_TRIS_A(0b00011001);//tudo entrada
SET_TRIS_b(0b0000000);//tudo entrada

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64);
set_timer0(131);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,200,1);
setup_comparator(NC_NC_NC_NC);
setup_ccp1(CCP_off);
setup_vref(FALSE);
enable_interrupts(GLOBAL);
//enable_interrupts(int_rda);

printf("leitor\r");
modo=0;
col=0;
output_high(pin_a1);//inverte rotação
output_high(pin_a2);
do
{
if(!input(pin_a4))
{
modo=1;
}
}while(!modo);
output_low(pin_a1);
output_low(pin_a2);

while (1)
{
/*output_high(pin_a1);
delay_ms(500);
output_low(pin_a1);
delay_ms(500);
}*/

MensagemEnviado: 06 Jul 2008 12:06
por fabim
experimenta limpar o flag de int, antes de ligar o gie e a int de usart.



Fabim

MensagemEnviado: 07 Jul 2008 16:11
por tcpipchip
Cade o tratador de Interrupção (HANDLER INTERRUPT)

MensagemEnviado: 13 Jul 2008 21:06
por cristian
#int_RDA
void usart(void)
{
on_motor;
printf("rx\r");
delay_ms(1000);
off_motor;
}

coloquei isso so pra testar o pic fica o tempo todo nesta rotina o q fazer

usart

MensagemEnviado: 14 Jul 2008 14:42
por David Henrique
1º Evite colar comandos "delay_ms(xx)" dentro das interrupções.
2º A interrupção acontece ao receber cada byte, assim você deve colocar o comando para ler um byte. ex: BYTE_IN=GETC();
3º É sempre bom limpar o flag da interrupção:
CLEAR_INTERRUPT(INT_RDA);

MensagemEnviado: 14 Jul 2008 15:49
por cristian
eu sei sobre o uso do delay foi so pra ver onde tava o erro

simulei no proteus e nao tenho problema mas no hardware apresenta

retirei esta rotina da interrupçao e mesmo assim o pic trava so em ativa a interrup do RDA

sera um problema no pic ja usei 2 diferente estava usando o CCS agora estou fazendo mikroc pra ver se era o compilador

com o osciloscopio vi que recebia alguma coisa no pino RB2 RX entao desliguei tudo do pino e continua sera uma assombraçao configurei os pinos direito mas mesmo assim