Página 1 de 1

ISR_PIC6f873a

MensagemEnviado: 27 Ago 2015 01:02
por juniorlucival
Boa noite, amigos, estou fazendo uma rotina em um pic 16f873a, e estou usando timer1 com interrupção, vejam, eu tenho na rotina principal, uma varredura de valores e atualiza variáveis que ao entrar na interrupção atualiza o valor do timer1, o código funcionou, mas vejam esse pic tem duas paginas de programa, uma até 0x7ff e de 0x800 ao final, quando o interrupt ocorre quando a rotina principal esta na segunda pagina, ao retornar do interrupt ele volta em um local errado, já conferi pelo mplab e o pcl e o pclath estão sendo
salvo corretamente, mas ao retornar ele vai para um ponto aleatório na rotina principal, estou fazendo em asm, na primeira pagina tudo ok, mas na segunda pagina, além de não retornar no lugar correto gie e todos os registradores da interrupção são resetados. Amigos não quero uma análise do código, se os senhores já tiveram a mesma dificuldade por favor post a dica.

Re: ISR_PIC6f873a

MensagemEnviado: 27 Ago 2015 07:46
por andre_luis
juniorlucival escreveu:Amigos não quero uma análise do código, se os senhores já tiveram a mesma dificuldade por favor post a dica.


Analisar o código seria inevitável, pois você certamente não está acessando o registrador no banco correto.

Re: ISR_PIC6f873a

MensagemEnviado: 27 Ago 2015 15:57
por juniorlucival
Sim isso eu verifiquei, e mesmo verificando acresci um banksel em todos registradores, e se fosse banco errado como na primeira pagina do programa funciona tudo corretamente ? farei um video para ficar mais claro e irei postar, gostaria muito de ajuda, sei que e um problema simples para os senhores, mas nao posso continuar estudando sem estar certo de que o erro e meu. Obrigado pela resposta,

Re: ISR_PIC6f873a

MensagemEnviado: 27 Ago 2015 23:19
por juniorlucival
Boa noite amigos, eu encontrei o problema era simples mas gostaria de compartilhar com amigos, vai que tem outro ai com a mesma dúvida e é bom pra ficar atento. Na instrução da minha interrupção havia uma instrução goto, e toda vez que a interrupção ocorria na primeira pagina do programa tudo bem, mas se fosse na segunda pagina, ela considerava o pclath atual e direcionava para dentro do programa, bastou atualizar o pclath antes do goto e tudo voltou ao normal. Obrigado ao amigo que me deu atenção. E a todos do fórum.

Re: ISR_PIC6f873a

MensagemEnviado: 28 Ago 2015 19:02
por andre_luis
Quem bom que resolveu, mas sempre possivel evita o GOTO, pois quebra a estrutura do programa, além de voce ficar viciado nos atalhos imposiveis de analisar.