fala galera do ldg
ó eu aqui novamente procurando ajuda kkkk
é o seguinte estou precisando criar um sistema que receba um sinal de um controle remoto daqueles usados em televisores ou mesmo um controle universal
eu tava analisando e percebi que poderia receber estes sinais atraves do timer0,1 do pic mais anda não tenho ideia de como criar este artificio no codigo eu sei que posso habilitar a interrupção para receber este sinal mais o que acontece é que assim que o primeiro pulso bater no pino eu ja travo a execução do programa e consequentemente paro o restante do recebmento do trem de pulsos gerado pelo controle o que eu posso fazer sera que se eu usar o canal seial do pic eu consigo receber todos os sinais?
desde ja agradeço
Tags:
Blz Danilo mas eu digo para colocar o led direto na saida do sensor para saber se ele esta recebendo o sinal do controle, se receber o sinal ele piscará, testei agora pouco em casa e funcionou.
Testa ai e depois comente se deu certo. Abraço
Danilo nao tem problema nenhum pois aqui eu usei um resistor de 2k2 na saida e funcionou normalmente, inclusive aquela forma de onda que foi feita no osciloscopio pela placa de som, é dele com o resistro de 2k2. Realmente essse sensores sao open coletor e precisam de resistor de pull up, algumas portas do pic tem a opção de ativar os resistores internos delas. Abraço.
jose
vc saberia me dizer a ordem em que estes sinais sao enviados tipo
comando+endereço+toogle+ startbit ou
startbit+toogle+endereço+comando
pois eu ja tinha uma logica criada mas não ta funcionando ta muito louco rsrsrs
tipo tecla1 liga rele 1 marca flag de rele1; tecla1 novamente desliga rele1 e limpa flag de rele1
segue link para o protocolo RC5
Cara fiz diversos testes no osciloscopio caseiro que tenho aqui com um controle de tv philips para poder encontrar a logica pois cada hora vinha com um trem de pulso diferente.
Agora a ordem e como esta no link que o Enio passou: start, toogle, endereço, comando.
certo veja so o que eu estou fazendo
os 8 primeiros bis que são referente ao start+toogle+adres eu estou descartando
e so estou capturando os ultimos 6 (melhor tentando) que são o proprio comando da tecla apertada ontem eu criei uma tabela de compara
MOVLW B'00001111'
ANDWF FLAGCIR,W
ADDWF PCL,F
GOTO MAIN
GOTO C_1
GOTO C_2
GOTO C_3
GOTO C_4
GOTO C_5
GOTO C_6
GOTO C_7
GOTO C_8
GOTO C_9
GOTO C_0
mais num funciono agora estou tentando isso
galera estou pensando em mudar de estrategia hoje meu sensor de ir esta ligado no ra0 do pic estou pensando em mudar isso e colocar ele no ra4 que incrementa o timer 0 ai é so eu configurar o tipo de incremento e o prescaler do timer zero ai o que eu faço e o seguinte crio uma rotina que fica monitorando o nl do ra4 se for 1 eu rotaciono o bit da minha variavel se for 0 eu seto um bit da minha variavel ou entam eu so conto o tempo do tmr0 e faço alguas comparação o que vcs acham estou pensando em fazer isto porque eu ja criei 3 rotinas diferentes e nenhuma delas ta funcionado eo meu codigo ja passou de 400 linhas vcs ja sabem como estam as minhas caimbras celebrais se alguem tiver uma ideia posta ai pra ver se me surge uma luz
jose eu estive dando uma olhada na net e vi que este protocolo sirc e bem mais facil de decodifica e eu sempre com a minha mania de pegar sempre o mais dificil mais eu num vo desistir eu vou decodificar esse rc5 de qualquer geito nem que eu tenha que matar o diretor da philips rsrsrsrsrs
boa noite pessoal vo colocar aqui a rotina de recebmento e se vcs poderem dar uma olhada pra ver o vcs acham eu ficarei grato acabei de escrever essa rotina e amanhã eu vou carregar ele no pic e ver o que da
LE_BIT
STARTBIT1
BTFSS IR
GOTO ERRO
BTFSC IR
GOTO $-1
BSF _7
CALL TEMPOFREQ1
STARTBIT2
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
BSF _6
CALL TEMPOFREQ1
TOOGLEBIT
BTFSC IR
GOTO TOOGLEBIT1
GOTO TOOGLEBIT0
TOOGLEBIT0
BTFSS IR
GOTO $-1
RLF STARTBIT
CALL TEMPOFREQ1
GOTO $+6
TOOGLEBIT1
BTFSC IR
GOTO $-1
INCF STARTBIT
CALL TEMPOFREQ1
A4
BTFSC IR
GOTO $+5
BTFSS IR
GOTO $-1
RLF STARTBIT
GOTO $+6
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
INCF STARTBIT
A3
BTFSC IR
GOTO $+5
BTFSS IR
GOTO $-1
RLF STARTBIT
GOTO $+6
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
INCF STARTBIT
A2
BTFSC IR
GOTO $+5
BTFSS IR
GOTO $-1
RLF STARTBIT
GOTO $+6
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
INCF STARTBIT
A1
BTFSC IR
GOTO $+5
BTFSS IR
GOTO $-1
RLF STARTBIT
GOTO $+6
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
INCF STARTBIT
A0
BTFSC IR
GOTO $+5
BTFSS IR
GOTO $-1
RLF STARTBIT
GOTO $+6
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
INCF STARTBIT
C5
BTFSC IR
GOTO $+5
BTFSS IR
GOTO $-1
RLF FLAGCIR
GOTO $+6
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
INCF FLAGCIR
C4
BTFSC IR
GOTO $+5
BTFSS IR
GOTO $-1
RLF FLAGCIR
GOTO $+6
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
INCF FLAGCIR
C3
BTFSC IR
GOTO $+5
BTFSS IR
GOTO $-1
RLF FLAGCIR
GOTO $+6
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
INCF FLAGCIR
C2
BTFSC IR
GOTO $+5
BTFSS IR
GOTO $-1
RLF FLAGCIR
GOTO $+6
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
INCF FLAGCIR
C1
BTFSC IR
GOTO $+5
BTFSS IR
GOTO $-1
RLF FLAGCIR
GOTO $+6
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
INCF FLAGCIR
C0
BTFSC IR
GOTO $+5
BTFSS IR
GOTO $-1
RLF FLAGCIR
GOTO $+6
BTFSS IR
GOTO $-1
BTFSC IR
GOTO $-1
INCF FLAGCIR
RETURN
Danilo, consegui decodificar o codigo RC5 do controle da philips que tenho aqui, liguei um display de 07 segmentos no pic e ele mostra a tecla que eu pressionei. Vou terminar de fazer os comentarios no codigo .asm e logo depois eu posto aqui pra vc dar uma olhada.
Abraço
Ta ai pessoal, video com a demonstração e a rotina em assembly usada para decodificar.
http://www.youtube.com/watch?v=6rFEOA9IIQ4
loop0 ;
movlw .10 ;
movwf vr1 ; Rotina para esperar + ou -
loop1 ; 10ms sem nehum pulso para
call _1ms ; identificar START
btfss input ;
goto loop0 ;
decfsz vr1,1 ;
goto loop1 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; START
btfsc input ;espera nivel 0 para prosseguir
goto $-1 ;
call _1ms ; se depois de 1ms nivel for 0
btfss input ; nao é START e
goto loop0 ; volta ao inicio
clrf vrendereço ;apaga variaveis
clrf vrdados
btfsc input ;espera nivel 0 para prosseguir
goto $-1 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; TOOGLE
call _1ms ; depois de 1ms testa nivel
call ve_bit ;
bcf bit_t ;se for baixo toogle 0
btfsc STATUS,C ;se for alto toogle 1
bsf bit_t
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; ENDEREÇO
movlw .5 ;quantidade de bits
movwf vr1 ;no endereço
loop_endereço
call _1ms ;depois de _1ms testa nivel
call ve_bit
rlf vrendereço,1 ;coloca bit na variavel
decfsz vr1,1 ;decrementa quantidade de bits
goto loop_endereço
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; DADOS
movlw .6 ;quantidade de bits
movwf vr1 ;em dados
loop_dados
call _1ms ;depois de 1ms testa nivel
call ve_bit
rlf vrdados,1 ;coloca bit na variavel
decfsz vr1,1
goto loop_dados
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; TRATAMENTO DADOS
movf vrdados,0
call tabela ;chama tabela display 7 segmentos
movwf segmentos ;coloca em PORTB
btfsc bit_t ;testa bit toogle
bsf segmentos,7 ;se for "1" liga ponto decimal
bcf display1 ;liga comum do display
call _1seg ;espera 1 segundo para visualizar
bsf display1 ;apaga display
goto loop0
;*****************************
; SUB ROTINAS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; VER BIT
ve_bit
btfss input ;testa bit
goto bit_0
goto bit_1
bit_0
bcf STATUS,C ;se bit é 0
btfss input ;espera nivel subir
goto $-1 ;para sair
return
bit_1
bsf STATUS,C ;se bit é 1
btfsc input ;espera nivel baixar
goto $-1 ;para sair
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; TABELA DISPLAY 7 SEGMENTOS
tabela
movwf aux ;
bcf STATUS,C ;Rotina para saber se numero
movlw .16 ;é maior que a tabela
subwf aux,0 ;se for maior que tabela
btfsc STATUS,C ;volta com
retlw B'01000000' ;caracter -
movf aux,0
addwf PCL,1
RETLW B'00111111' ;numero 0
RETLW B'00000110' ;numero 1
RETLW B'01011011' ;numero 2
RETLW B'01001111' ;numero 3
RETLW B'01100110' ;numero 4
RETLW B'01101101' ;numero 5
RETLW B'01111101' ;numero 6
RETLW B'00000111' ;numero 7
RETLW B'01111111' ;numero 8
RETLW B'01101111' ;numero 9
RETLW B'01110111' ;letra A
RETLW B'01111100' ;letra b
RETLW B'01011000' ;letra c
RETLW B'01011110' ;letra d
RETLW B'01111001' ;letra E
RETLW B'01110001' ;letra F
;;;;;;;;;;;;;;;;;;;;;;;;;;;
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por