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 

Exibições: 6155

Responder esta

Respostas a este tópico

 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

boa noite jose
acbei de colocar o resistor e o capacitor mas num deu em nada
o enio me deu a ideia de colocar um resistor de 4k7 entre a saida e o 5v pode ser que o sensor que eu estou usando seja coletor aberto por isso sempre fica em 0v amanha eu vou colocar este resistor e ve se funciona e colocar o resultado aqui tambem vallew
galera tive que trocar o sensor pois eu acredito que o outro deu pau
como vcs podem ver o pic ja esta reconhecendo os sinais do controle agora eu vou mexer no codigo para identificar cada uma das teclas e executar funções pensa num cara que ta empolgado rsrsrs
Enio  tinha me indicado o resistor de 4k7 so que eu num tinha ele e fiz associação e consegui 4k4 sera que num tem problema
assim que eu fazer o codigo e deixar ele funfando legal eu coloco os resultados

 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

 

Danilo a saida do sensor é invertida, ou seja os niveis sao invertidos. Talvez seja isso o seu problema. Dei uma estudada no RC5 verifiquei que o toogle tem uma "pegadinha", se voce apertar por exemplo a tecla 1 o toogle vai estar em nivel logico"0" se vc apertar novamente a tecla 1 ele troca para o nivel "1" e depois se apertar novamente ele troca para o "0", so que se vc apertar outra tecla qualquer quando vc voltar a  apertar a tecla 1, independentemente do ultimo nivel o toogle vai voltar para o primeiro nivel logico que era o "0". Isso serve para todas as teclas.

  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   
;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço