Autor Tema: carrito bluetoothh  (Leído 2701 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado George.G

  • PIC10
  • *
  • Mensajes: 3
carrito bluetoothh
« en: 17 de Mayo de 2019, 01:42:46 »
hola que tal espero se encuetren bien.
soy nuevo con pics y en el foro quisiera saber si me pueden ayudar tengo dudas con mi proyecto el cual es el siguiente:
tengo que hacer un carrito controlado por bluetooth con una aplicacion creada por mi.
la aplicacion ya esta, mi carrito tambien pero el problema esta en que a la hora de conectar mi celular con el modulo bluetooth no hay interaccion entre el modulo bluetooth y el pic, el pic que estoy utilizando es un 18F4550 y mi programacion es en ensamblador.

le pregunte pero me dicen que hay un desface en la comunicacion serial y quisiera ver si me pueden ayudar a encontrar mi error.
en la implementacion fisica no hace nada.
el codigo que estoy utilizando es el siguiente:

Código: ASM
  1. ;***************Control de motor por PWM dezpliegue de RPM en 7 segmentos************
  2.                
  3.                         LIST P=18F4550                  ;Directiva para definir el pricesador
  4.                          #include <P18F4550.INC> ;Definici?n de variables especificas del procesador
  5.  
  6.  
  7. ;************************************************************************************
  8. ;Bits de configuraci?n
  9.                
  10.                         CONFIG FOSC = INTOSC_EC ;Oscilador INT usado por el uC , XT usado por el USB   
  11.                         CONFIG BOR = OFF        ;BROWNOUT RESET DESHABILITADO          
  12.                         CONFIG PWRT = ON        ;PWR UP Timer habilitado               
  13.                         CONFIG WDT = OFF        ;Temporizador vigia apagado            
  14.                         CONFIG MCLRE=OFF        ;Reset apagado         
  15.                         CONFIG PBADEN=OFF              
  16.                         CONFIG LVP = OFF
  17.  
  18.  
  19. ;************************************************************************************
  20.  
  21.  
  22. ;Definici?n de variables
  23.                
  24.     CBLOCK      0x000                           ;ejemplo de definici?n de variables en RAM de acceso   
  25.     flags                      
  26.     sdato
  27.     ENDC                                        ;fin del bloque de constantes
  28.  
  29.  
  30. ;************************************************************************************
  31.  
  32.                         ORG             0x0000                  ;vector de reset
  33.                         bra             inicio                 
  34. inicio                  ORG             0x0008
  35.                         goto            SIRD
  36.                         org             0x0020
  37.                         bsf             OSCCON,IRCF2,0
  38.                         bcf             OSCCON,IRCF1,0
  39.                         bcf             OSCCON,IRCF0,0          ;oscilador interno a 1MHz                                      
  40.                         movlw           0x0F
  41.                         movwf           ADCON1,0                ;puertos digitales 8                                   
  42.                         clrf            PORTC,0                 ;limpiamos el puerto C                                 
  43.                         clrf            PORTD,0                 ;limpiamos el puerto D                                 
  44.                         clrf            TRISD,0                 ;Puerto D como salida                                  
  45.                         movlw            0xC0
  46.                         movwf           INTCON,0
  47.                         bsf             RCON,IPEN,0
  48.  
  49. ;**************Configuraci?n  PWM1************************************************
  50.  
  51.  
  52.                         movlw   d'155'
  53.                         movwf   PR2,0                   ;periodo pwm 10ms
  54.                         movlw   0x00
  55.                         movwf   CCPR1L,0                ;Duty Cycle inicia en 0%
  56.                         bcf     TRISC,2,0               ;pin CCP1 salida
  57.                         movlw   0x06
  58.                         movwf   T2CON,0                 ;Timer2 encendido y preescaler x 16
  59.                         movlw   0x0C
  60.                         movwf   CCP1CON,0               ;Modo PWM
  61.  
  62. ;**************Configuraci?n PWM2*********************************************
  63.  
  64.                         movlw   0x00
  65.                         movwf   CCPR2L,0                ;Duty Cycle inicia en 0%
  66.                         bcf     TRISC,1,0               ;pin CCP2 salida
  67.                         movlw   0x0C
  68.                         movwf   CCP2CON,0               ;Modo PWM
  69.  
  70. ;**************Configuraci?n Serial EUSART************************************
  71.                
  72.                        
  73.                         bsf     TRISC,7,0               ;RC7 pin RX
  74.                         bsf     PIE1,RCIE,0             ;Habilita interrupcion de recepcion de datos           
  75.                         bsf     IPR1,RCIP,0             ;Alta prioridad de interrupcion
  76.                         movlw   0x26                   
  77.                         movwf   TXSTA,0                 ;Tx modo asincrono,high speed con registro TSR vacio
  78.                         movlw   0x90
  79.                         movwf   RCSTA,0                 ;Recepcion habilitada de 8 bits
  80.                         movlw   0x08
  81.                         movwf   BAUDCON,0               ;Detecci?n automatica desactivada 16bit baud rate generate
  82.                         clrf    SPBRGH,0
  83.                         movlw   d'25'
  84.                         movwf   SPBRG                   ;Comunicaci?n serial a 9600 baudios
  85.                         bsf     TRISC,6,0               ;RC6 pin TX
  86.  
  87.  
  88. ;*******Guardando valores de DCycle y codigo de 7 segmentos para usar DirIndirecto*********            
  89.                
  90.  
  91.                         clrf    TBLPTRL,0
  92.                         movlw   0x03
  93.                         movwf   TBLPTRH,0
  94.                         clrf    TBLPTRU,0               ;tblptr direccion 0x000300
  95.                         LFSR    FSR0, 400h              ;Direccionamos el primer valor en direccion 400h de FSR0
  96. next                    tblrd   *+                      ;lee tabla y aumenta en uno el apuntador
  97.                         movff   TABLAT,POSTINC0         ;mueve lo del registro tablat al registro FSR0 e incrementa el apuntador
  98.                         movf    FSR0L,W,0
  99.                         xorlw   0x07                    ;*******Son los valores para********
  100.                         btfss   STATUS,Z,0              ;******* el ciclo de trabajo************
  101.                         bra     next
  102.                         LFSR    FSR0, 400H              ;colocamos el apuntodor FSR0 en la direccion 400h
  103. ;**********************Programa**************************************************
  104.  
  105.  
  106. inc                     btfss flags,0,0
  107.                         bra   dec
  108.                         btfss PORTD,0,0
  109.                         bra   incv
  110.                         clrf  PORTD,0
  111.                         bra   inc1
  112. incv                    movf  CCPR1L,W,0
  113.                         xorwf CCPR2L,W,0
  114.                         btfsc STATUS,Z,0
  115.                         bra   inc1
  116.                         movlw 0x00
  117.                         cpfseq CCPR1L,0
  118.                         bra   compCCPR2
  119.                         movff CCPR2L,CCPR1L
  120.                         clrf  flags,0
  121.                         bra   inc
  122. compCCPR2               movlw 0x00
  123.                         cpfseq CCPR2L,0
  124.                         bra   inc1
  125.                         movff CCPR1L,CCPR2L
  126.                         clrf  flags,0
  127.                         bra   inc
  128. inc1                    movlw 0x05
  129.                         cpfseq FSR0L,0
  130.                         bra   INCDuty
  131.                         movff INDF0, CCPR1L
  132.                         clrf  flags,0
  133.                         movff INDF0, CCPR2L
  134.                         bra   inc
  135. INCDuty                 movff PREINC0, CCPR1L
  136.                         clrf  flags,0
  137.                         movff INDF0, CCPR2L
  138.                         bra   inc
  139. dec                     btfss flags,1,0
  140.                         bra   rev
  141.                         movlw 0x00
  142.                         cpfseq FSR0L,0
  143.                         bra   dec1
  144.                         clrf  flags,0
  145.                         bra   inc
  146. dec1                    movff POSTDEC0, CCPR1L
  147.                         clrf  flags,0
  148.                         movff INDF0, CCPR2L
  149.                         bra   inc
  150. rev                     btfss flags,2,0
  151.                         bra   stp
  152.                         movlw 0x00
  153.                         movwf FSR0L,0
  154.                         movff FSR0L,0
  155.                         movff INDF0, CCPR1L
  156.                         movff INDF0, CCPR2L
  157.                         bsf   PORTD,0,0
  158.                         bsf   PORTD,1,0
  159.                         clrf  flags,0
  160.                         bra   inc
  161. stp                     btfss flags,3,0
  162.                         bra   izq
  163.                         clrf  PORTD,0
  164.                         movlw 0x00
  165.                         movwf FSR0L,0
  166.                         movff FSR0L,0
  167.                         movff INDF0, CCPR1L
  168.                         movff INDF0, CCPR2L
  169.                         clrf  flags,0
  170.                         bra   inc
  171. izq                     btfss   flags,4,0
  172.                         bra     der
  173.                         movlw   0x00
  174.                         cpfseq  CCPR2L,0
  175.                         bra     izq1
  176.                         movff   CCPR1L, CCPR2L
  177. izq1                    clrf    flags,0
  178.                         clrf    CCPR1L,0
  179.                         clrf    PORTD,0
  180.                         bra     inc
  181. der                     btfss   flags,5,0
  182.                         bra     inc
  183.                         movlw   0x00
  184.                         cpfseq  CCPR1L,0
  185.                         bra     der1
  186.                         movff   CCPR2L,CCPR1L
  187. der1                    clrf    flags,0
  188.                         clrf    CCPR2L,0
  189.                         clrf    PORTD,0
  190.                         bra      inc
  191.                
  192.                
  193.  
  194. ;**************Servicio de interrupcio Recepcion de dato serial**************************************
  195.  
  196. SIRD                    btfss   PIR1,RCIF,0             ;verifica si la interrupcion fue por Recepcion de dato serial          
  197.                         bra     endd                   
  198.                         bcf     PIR1,RCIF,0             ;limpiamos bandera de interrupcion por recepcion de dato
  199.                         movff   RCREG,sdato             ;movemos el dato recibido a un registro para compararlo posteriormente
  200.                         movlw   0x41
  201.                         cpfseq  sdato,0                 ;verificamos si se recibio la letra A
  202.                         bra     compF                   ;sino salta a otra comparaci?n
  203.                         bsf     flags,0,0               ;Activamos bandera para acelerar
  204.                         bra     endd
  205. compF                   movlw   0x46                   
  206.                         cpfseq  sdato,0                 ;verificamos si se recibio la letra F
  207.                         bra     compR                   ;sino salta a otra comparaci?n
  208.                         bsf     flags,1,0               ;Activamos bandera para desacelerar    
  209.                         bra     endd                   
  210. compR                   movlw   0x52                   
  211.                         cpfseq  sdato,0                 ;verificamos si se recibio la letra R
  212.                         bra     compS                   ;sino salta a otra comparaci?n
  213.                         bsf     flags,2,0               ;Activamos bandera de reversa
  214.                         bra     endd                   
  215. compS                   movlw   0x53                   
  216.                         cpfseq  sdato,0                 ;verificamos si se recibio la letra S
  217.                         bra     compI                   ;sino salta a otra comparaci?n
  218.                         bsf     flags,3,0               ;Activamos bandera de stop
  219.                         bra     endd
  220. compI                   movlw   0x44
  221.                         cpfseq  sdato,0                 ;verificamos si se recibio la letra I
  222.                         bra     compD                   ;sino salta a otra comparaci?n
  223.                         bsf     flags,4,0               ;Activamos bandera para dar vuelta a la izquierda
  224.                         bra     endd
  225. compD                   movlw   0x49
  226.                         cpfseq  sdato,0                 ;verificamos si se recibio la letra D
  227.                         bra     endd                    ;sino saltamos al fin del servicio de interrupci?n
  228.                         bsf     flags,5,0               ;Activamos bandera para dar vuelta a la derecha
  229. endd                    retfie  FAST
  230.  
  231.  
  232. ;*****************Codigo exadecimal para 7 seg y variacion de pwm**********************************
  233.                        
  234.                         org 0x300                       ;La directiva DB sirve para definir un byte a partir de la direccion especificada por ORG
  235.                         DB      0X00,0x5D,0x6C,0x7C,0x8C,0x9B,0xAB
  236.                         END

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:carrito bluetoothh
« Respuesta #1 en: 17 de Mayo de 2019, 11:19:32 »
No se cual es tu modulo Bluetooth, no se si necesitas enviarle algo antes o si directamente comienza la transmision.


Respecto al codigo
Lo primero que veo es esto:


Código: ASM
  1. ORG             0x0000                  ;vector de reset
  2.                         bra             inicio                  
  3. inicio                  ORG             0x0008
  4.                         goto            SIRD


¿Por que tu inicio va a la rutina de interrupción ?


Código: ASM
  1. SIRD                    btfss   PIR1,RCIF,0             ;verifica si la interrupcion fue por Recepcion de dato serial          
  2.                         bra     endd                    
  3.                         bcf     PIR1,RCIF,0             ;limpiamos bandera de interrupcion por recepcion de dato
  4.                         movff   RCREG,sdato             ;movemos el dato recibido a un registro para compararlo posteriormente

Si es la única interrupción, por que preguntas por el flag?, el FLAG de la UART se limpia al momento de leer el RCREG, por lo tanto el BCF estaria de mas.
Esto no es tu problema obviamente.

Es lo unico que puedo decirte sobre la parte del bluethoot. Estas seguro que no recibe nada ?
No tenes algun conversor USB a TTL para ver que es lo que envia o recibe el modulo bluethoot?

Desconectado George.G

  • PIC10
  • *
  • Mensajes: 3
Re:carrito bluetoothh
« Respuesta #2 en: 17 de Mayo de 2019, 14:08:37 »
El modulo bluetooth que estoy utilizando es un HC - 05.

En la primera rutina que mencionas disculpa tuve un error al traspasar el codigo el inicio va aqui.
Código: ASM
  1. ;************************************************************************************
  2.                         ORG             0x0000                          ;vector de reset
  3.                         bra             inicio
  4.                         ORG             0x0008
  5.                         goto            SIRD
  6.                         org             0x0020
  7.  
  8. inicio                  bsf             OSCCON,IRCF2,0
  9.                         bcf             OSCCON,IRCF1,0
  10.                         bcf             OSCCON,IRCF0,0          ;oscilador interno a 1MHz
  11.                         movlw           0x0F
  12.                         movwf           ADCON1,0                        ;puertos digitales
  13.                         clrf            PORTC,0                         ;limpiamos el puerto C
  14.                         clrf            PORTD,0                         ;limpiamos el puerto D
  15.                         clrf            TRISD,0                         ;Puerto D como salida
  16. ;************************************************************************************


con respecto a lo demas ya corregi lo de la interrupcion.

Código: ASM
  1. SIRD                    btfss   PIR1,RCIF,0             ;verifica si la interrupcion fue por Recepcion de dato serial          
  2.                         bra     endd                   
  3.                         movff   RCREG,sdato             ;movemos el dato recibido a un registro para compararlo posteriormente
  4.                         movlw   0x41



pero no hace nada. aveces al desconectar el bluetooth se queda girando una rueda.
lamentablemente no tengo un convertidor de USB a TTL

una pregunta mi codigo estaria bien ? si defino bien la Configuración Serial EUSART?
« Última modificación: 17 de Mayo de 2019, 14:12:10 por George.G »

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 128
Re:carrito bluetoothh
« Respuesta #3 en: 02 de Junio de 2019, 11:40:10 »
Hola George G.
Precisamente tengo el modulo bluetooth delante mio, y veo que tiene  la alimentacion entre 3 y 6 voltios pero la comunicacion RX, TX a niveles  de 3,3 voltios, quiza  por ahi te venga el problema, otra duda que me surje es si no tienes que parear el modulo bluetooth con el dispositivo que estes controlando.

Si por ejemplo estas  controlandolo atraves del movil, el microcontrolador tiene que meterle los comandos AT para  al modulo bluetooth para que se pareje con el movil.

No tengo experiencia en estos modulos en ensamblador  pero  a lo mejor pudieran ir por ahi los tiros .

Un saludo.