Moderadores: andre_luis, 51, guest2003, Renie
rsdias escreveu:Pessoal olha eu de novo, desculpem mas estou começando e tenho muitas dúvidas e só tenho a ajuda de vcs aqui do forum, estou tentando fazer o seguinte, usando um pino do microcontrolador com uma chave e usando a interrupção preciso que quando ocorra a interrupção por pressionar este botão se acione um rele em outro pino, e quando eu pressionar denovo este mesmo botão este relé deve ser desacionado, como posso fazer esta rotina? É possível? Aguardo a ajuda de vcs e mais uma vez obrigado.
TRATA_INTERRUPCAO_BT
movlw MASK_RELAY ; Define de máscara, suponhamos que é RA1, será b'00000010' então
xorlw PORTA,f ; Xor, inverte o bit, liga/desliga
goto FIM_INTERRUPCAO
#define RELE1 PORTAbits.RA1 ( verifique isso, varia de compilador para compilador, este exemplo é como o C30 entende )
void trataIntBr ( void )
{
RELE1 != RELE1;
}
joao escreveu:Ola phophollety,
Como eu sempre falo, eu não trabalho com PIC a várias decadas(ok, é apenas 2 anos, mas nada como aumentar um pouco!)
Ele falou de interrupção. Não seria aquela outra interrupção que para o programa e entra numa área de memória específica?
Os exemplos que vc deu eu entendi que vc apenas leu o bit do botão, mas não usar uma interrupção do programa.
Posso estar enganado, mas de qualquer maneira, pode explicar um pouco mais?
[]'s
rsdias escreveu:Pino 6 - RB0 -> Botão
Pino 18 - RA1 -> Relé via transistor
; Quando for inicializar o seu pic, não se esqueça de ajustar a interrupção
bsf INTCON,INTE ; Habilita Interrupção
bsf OPTION_REG, INTEDG ; Interrupção ocorrerá na subida
;*----------------------------------------------------------------*
; Vetor de interrupção
;*----------------------------------------------------------------*
ORG 0x04
movwf wregTemp
swapf STATUS,w
movwf statusTemp
banksel TMR0
btfsc INTCON, INTF
goto INTF_INT
SAI_ISR
swapf statusTemp,w
movwf STATUS
swapf wregTemp,f
swapf wregTemp,w
retfie // Retorna da interrupção
INTF_INT
bcf INTCON,INTF ; Limpa a interrupção
movlw b'00000010' ; Máscara para inverte
xorlw PORTA,f ; Inverteu o rele
goto SAI_ISR ; RETORNA, feito
rsdias escreveu:Desculpe a insistencia, mas como faço debounce na interrupção? Poderia me explicar ou me enviar um código para que eu entenda, Muiiittiisssimo obrigado.
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante