Ir ao conteúdo
  • Cadastre-se

Transmissão / Recepção Bluetooth com dois PIC16F628A


Posts recomendados

Olá a todos, sou novo por aqui, e venho por meio deste pedir a ajuda em um problema que estou tendo em um projeto. É o seguinte:

Estou utilizando dois PIC16F628A, sendo um transmissor e o outro receptor e dois módulos HC-05, um como mestre e o outro como escravo, o compilador para o programa dos PICs é o MPLAB IDE e a programação em Assembly. Os PICs estão trabalhando com um oscilador externo (cristal) de 12 Mhz, todos os componentes estão configurados para um Baud Rate de 38400 bps.

A intenção é utilizar 4 botões no transmissor e 4 Leds para teste no receptor. Quando um botão é pressionado acende 2 leds selecionados no programa, a cada botao os 2 leds alternam, e quando não há botões pressionados os leds não acendem.

O teste foi realizado antes sem os módulos Bluetooth, os pics foram programados para uma comunicação serial assíncrona, e utilizando os terminais RX e TX, os leds não acendiam como desejado, um deles sempre ficava aceso, e os outros nao acendiam como desejado, o teste foi feito com o bluetooth e funcionou da mesma forma.

A solução foi acrescentar uma rotina de tempo na programação do receptor que destacarei quando mostrar o código, desta forma os pics sem os bluetooth funcionaram perfeitamente como desejado, mas com o bluetooth não funciona, parece q ele trava ao receber a informaçao, se eu deixo um botao pressionado e reinicio o circuito receptor, ele acende os leds desejados e não realizada mais nada, se faço o mesmo procedimento com outro botao, ele acende os leds desejados com o determinado botao e trava. 

Antes da nova rotina de tempo o bluetooth funcionava perfeitamente, e até com boa distancia, mas não com os leds desejados.

Alguém teria uma ideia do que pode estar causando este problema? Ja tentei resolver de todas as formas que meu breve conhecimento permitiu.

 

Código do receptor: (sem as configurações iniciais)

 

INICIO
    BANK1            
    MOVLW    B'00111111'
    MOVWF    TRISA        
    MOVLW    B'00000110'
    MOVWF    TRISB    
    MOVLW    B'10000100'
    MOVWF    OPTION_REG    
    MOVLW    B'00000000'
    MOVWF    INTCON        
    BANK0
    MOVLW   B'00000111'
    MOVWF   CMCON

    CLRF    PORTA    
    CLRF    PORTB    


MAIN
    CALL RECEBER
    GOTO MAIN
    
RECEBER
    BANK1
    BSF TXSTA,BRGH
    MOVLW .19
    MOVWF SPBRG
    BCF TXSTA,SYNC
    BANK0
    BSF RCSTA,SPEN
    BSF RCSTA,SREN
    BSF RCSTA,CREN
    CALL MOSTRAR
    RETURN

 

MOSTRAR
    MOVLW B'11110000'
    ANDWF RCREG,W
    MOVWF PORTB
    CALL  TEMPO ;<<< Modificação que ser a fonte do problema (nova rotina de tempo)
    RETURN

 

TEMPO

     movlw       .215
     movwf       Reg_1
     movlw       .156
     movwf       Reg_2
     decfsz      Reg_1,F
     goto        $-1
     decfsz      Reg_2,F
     goto        $-3
     RETURN

    

     END  

 

 

Código do transmissor: (sem configurações iniciais)

 

MAIN
    BTFSS BT1
    GOTO $+2
    GOTO AJUSTE1
    BTFSS BT2
    GOTO $+2
    GOTO AJUSTE2
    BTFSS BT3                                                                                                                                          
    GOTO $+2
    GOTO AJUSTE3
    BTFSS BT4
    GOTO $+2
    GOTO AJUSTE4
    MOVLW B'00000000'
    MOVWF TXREG
    CALL ENVIAR
    GOTO MAIN


AJUSTE1
    MOVLW B'10100000'
    MOVWF TXREG
    CALL ENVIAR
    GOTO MAIN

 

AJUSTE2
    MOVLW B'01010000'
    MOVWF TXREG
    CALL ENVIAR
    GOTO MAIN

 

AJUSTE3
    MOVLW B'10010000'
    MOVWF TXREG
    CALL ENVIAR
    GOTO MAIN

 

AJUSTE4
    MOVLW B'01100000'
    MOVWF TXREG
    CALL ENVIAR
    GOTO MAIN

 

ENVIAR
    BANK1
    BSF TXSTA,BRGH
    MOVLW .19
    MOVWF SPBRG
    BCF TXSTA,SYNC
    BANK0
    BSF RCSTA,SPEN
    BANK1
    BSF TXSTA,TXEN
    BTFSS TXSTA,TRMT
    GOTO $-1
    BANK0
    CALL TEMPO
    RETURN


TEMPO

    movlw       .215
    movwf       Reg_1
    movlw       .156
    movwf       Reg_2
    decfsz      Reg_1,F
    goto        $-1
    decfsz      Reg_2,F
    goto        $-3
    RETURN


    END  

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...