ao ligar o INT rda o pic trava pic16F628A

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

ao ligar o INT rda o pic trava pic16F628A

Mensagempor cristian » 06 Jul 2008 02:11

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);
}*/
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor fabim » 06 Jul 2008 12:06

experimenta limpar o flag de int, antes de ligar o gie e a int de usart.



Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor tcpipchip » 07 Jul 2008 16:11

Cade o tratador de Interrupção (HANDLER INTERRUPT)
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor cristian » 13 Jul 2008 21:06

#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
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

usart

Mensagempor David Henrique » 14 Jul 2008 14:42

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);
David Henrique
Nibble
 
Mensagens: 68
Registrado em: 17 Jun 2008 08:05

Mensagempor cristian » 14 Jul 2008 15:49

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
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba


Voltar para PIC

Quem está online

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

x