Página 1 de 1
Warning 216 Interrupts disabled during call to prevent re-en

Enviado:
14 Dez 2006 07:39
por charles
Interrupts disabled during call to prevent re-entrancy: (@delay_ms1)
Esta mensagem aparece quando compilo o programa,pq o a interrupção é desabilitada quando chamo um delay_ms no ccs? Tem como evitar??
Charles

Enviado:
30 Abr 2007 17:36
por buiz
Estou com o mesmo problema, alguem ja achou a solução, isso acontece somente no CCS versao 4.

Enviado:
30 Abr 2007 22:22
por kubiak
Charles,
Isso não acontece antes/até a versão do CCS 3.163, dela pra frente isso ocorre..
Porém somente quando se usa interrupção...
Para solucionar eu já usei essas Alternativas:
1) Usei a Versão CCS 3.163
2)Usei a Função delay_cycles(25); // At 20 mhz a 5us delay
3)Fazer sua função de Delay

Enviado:
01 Mai 2007 19:16
por zielpunkt
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.

Enviado:
02 Mai 2007 08:21
por buiz
Obrigado pelas dicas, programava tranquilo no CCS 3.2 agora com o CCS 4 ta gerando estes probleminhas.
Valeu!