mais de 2 interrupções em PIC18F

M

mayyur

Guest
Na pic lá para os níveis de interrupção que é de alta prioridade (0x18) e baixa prioridade (0x08) .. então, se houver interrupção de dois ou mais nesses níveis, então, como vai executá-lo pic .......... eu quero dizer se o ADC de interrupção e interrupção do timer e uma interrupção externa todos estão em um nível supor em alta prioridade de como irá lidar com pic esta interrupção ou estamos manully supor para lidar com esta interrupção através do software .......? thannx para a resposta ....
 
A resposta do PIC depende do seu software. Normalmente, quando uma interrupção é atendida, a interrupção globais permitem bit (ou a interrupção de alta ou baixa habilitar bits) torna-se 0, por isso impede a outras interrupções do mesmo nível. Mas flags de interrupção individuais permanecem 1 se interrompe correspondente ocorrer. PIC simplesmente salta para o endereço de interrupção. É o seu trabalho para pesquisar as bandeiras de interrupção e tomar medidas em conformidade. Normalmente, quando o trabalho é feito com uma interrupção, você reset (torná-lo 0) o bit de flag correspondente, em seguida, retornar da interrupção com o comando RETFIE. Isso também define o bit de habilitação global de interrupção, o qual foi reajustado pelo hardware para evitar interrupções recorrentes. Então, se havia um outro evento de interrupção enquanto você estava servindo o primeiro, então como você não redefinir a sua bandeira no seu serviço de interrupção passado, o programa volta para o endereço de interromper novamente. Assim, a seqüência de serviços de interrupção depende tanto da sua hora de chegada e sua ordem de sondagem (assumindo que interrompe mesma prioridade).
 
thanx para fazer a imagem clara de interrupção .......... isso significa que ao escrever o código eu vou ter que usar o endereço do vetor mesmo para isto mesmo prioity nível mais baixo por dois sub-rotina de interrupção prioridade im supor para dar o mesmo vetor endereço ou seja, 0x08 no meu caso para o temporizador e rotinas adc.
 
Mayyur, no PIC18, você tem dois vetores pré-definidos. A prioridade na prioridade 0x08 e 0x18 em baixo. Você pode tirar proveito disso e atribuir algumas das interrupções, como de alta prioridade e alguma prioridade tão baixo. Se você não quiser usar isso, você pode sempre apenas "sondagem" para a bandeira de interrupção. Assim, por exemplo, quando ocorre uma interrupção, você verifica se o bit TMR0IF está definido. Se for, o Timer 0 interrupção ocorreu. Se não, verificar o que outras fontes podem ser (INT0, ADC, EEWRITE .... etc.).
 

Welcome to EDABoard.com

Sponsor

Back
Top