por zielpunkt » 01 Mai 2007 19:16
Não se recomenda chamar funções externas ou executar códigos muito complexos dentro de uma interrupção, isso como regra geral de programação. Segundo o FAQ da CCS, essa mensagem ocorre porque o compilador desliga a interrupção quando existe determinada função dentro da interrupção (por ex, 'delay_ms(100)' que também é chamada fora da interrupção.
Então, se vc chama essa função durante a execução normal do programa, a interrupção é automaticamente desligada para evitar o efeito de 'reentrancia' que pode fazer o programa se perder. Não devemos esquecer que o PIC é muito limitado em termos de stack e que o compilador não pode fazer milagres sobre isso. O que se pode fazer é, sempre que possível, sinalizar, dentro da interrupção, que ela ocorreu (setar um flag, por ex) e tratar o evento em outro ponto do programa.
É isso.
"Talento é mais barato que sal. O que separa a pessoa talentosa da bem-sucedida é muito trabalho duro." [ Stephen King ]