Autor Tema: D705A y tira de leds RGB  (Leído 1948 veces)

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

Desconectado macedo

  • PIC18
  • ****
  • Mensajes: 270
D705A y tira de leds RGB
« en: 13 de Septiembre de 2012, 15:47:40 »
Hola tengo una tira de leds RGB que tiene el controlador de DMS D70A (es parecido al LPD6803) y estoy queriendo programarla con un PIC2550, pero no me sale!.
Esta es la tira:



Solo dos entradas el clock y el dato, en el datasheet dice esto:
Citar
① The first 32 bits of "0" is the start frame data, followed by data frame. at the rising edge of cin,the high bit of start frame is sent first, then the low bit.
②The D705 next to the controller receives the first data frame, the frame contains one start bit of ‘1’ and three sets gray scale data of 5 bits for RGB.
③After the data read into the D705s,the controller sents the corresponding pulse to D705s.then the new data go into effect.

① Los primeros 32 bits de "0" son los datos de la trama de inicio, seguido por la trama de datos. en el flanco ascendente de cin, el bit alto de la trama de inicio se envía en primer lugar, luego el bit bajo.
② El D705 junto al controlador recibe la primera trama de datos, la trama contiene un bit de inicio de '1 'y tres conjuntos de datos de escala de grises de 5 bits para RGB.
③ Después de la lectura de datos en los D705s, el controlador senta el impulso que corresponde a D705s.then los nuevos datos en vigor.

Mi transmición la hago por SPI y no se si la estoy configurando bien, se las paso:
Código: ASM
  1. CFG_SPI
  2.         movlw   b'00100000'     ; SPI Config
  3.         movwf   SSPCON1         ; WCOL  = 0 Disable
  4.                                 ; SSPOV = 0 Disable
  5.                                 ; SSPEN = 1 Enable            ******
  6.                                 ; CKP   = 0 Idle is a low Level
  7.                                 ; SSPM3:SSPM0 = 0000 SPI clock /4
  8.  
  9.     movlw   B'10000000'         ; Set up SPI port, SPI master,
  10.         movwf   SSPSTAT             ; SMP  = 1
  11.                                 ; CKE  = 0
  12.                                 ; D/A  = 0 NC  I2C
  13.                                 ; P    = 0 NC  I2C
  14.                                 ; S    = 0 NC  I2C
  15.                                 ; R/W  = 0 NC  I2C
  16.                                 ; UA   = 0 NC  I2C
  17.                                 ; BF   = 0 FLAG
  18.  
  19.  
  20.         clrf    SSPCON2,ACCESS      ; Deshabilito el modulo MSSP I2C, BANKED=1 ACCESS=0
  21.         bcf     UCON,USBEN,ACCESS       ; Desactiva el modulo USB

Mi tabla de envio de datos:
Código: ASM
  1. SEC1      DT B'00000001',B'00000000',0XAA   ; apagado
  2. SEC2      DT B'00100001',B'00000000',0XAA   ; rojo
  3. SEC3      DT B'00000001',B'00000100',0XAA   ; verde
  4. SEC4      DT B'00000001',B'10000000',0XAA   ; azul
Así lo envió:
Código: ASM
  1. TX_SECUENCIA
  2.         movff   MsnAddressUpper,TBLPTRU
  3.         movff   MsnAddressHigh,TBLPTRH
  4.         movff   MsnAddressLow,TBLPTRL
  5.  
  6. CARGO_SECUENCIA
  7.     TBLRD*+                         ; Leo la tabla
  8.     movff        TABLAT,TEMP_SEND            ; Cargo el dato
  9.     MOVLW   0XAA      
  10.     XORWF   TEMP_SEND,W      
  11.     BTFSC   STATUS,Z                ;SI LOS DATOS NO SON IGUALES,
  12.     GOTO    COMANDO_FIN
  13.     CALL     TX_SPI                     ; y lo envió
  14.     TBLRD*+                         ; Leo la tabla nuevamente para saltearme un dato
  15.     movff    TABLAT,TEMP_SEND        ; Cargo el dato
  16.     CLRF    TEMP_SEND               ; y lo borro
  17.     bra     CARGO_SECUENCIA         ; Vuelvo a empezar
  18.  
  19. COMANDO_FIN
  20.     RETLW   0X00                        ; Vuelve al programa principal.
  21.  
  22. TX_SPI
  23.     bcf        PIR1,SSPIF                      ; borra flag interrupción
  24.     movFf     TEMP_SEND, SSPBUF    ; Transmision por puerto SPI        
  25.  
  26. SPI_DELAY
  27.      NOP
  28.      NOP
  29.      btfss    PIR1,SSPIF                 ; Espera a que se envie el dato
  30.      goto     SPI_DELAY
  31.      bcf      PIR1,SSPIF                        ; borra flag interrupción
  32.      RETLW   0X00

El "1" que se repite en todos es el "start bit"
Cuando envio las secuencias y todas son iguales no hay problema ya que me muestra correctamente los colores pero al enviarla una de cada ahi los colores se mezclan y no corresponden a lo que envió creo que estoy perdiendo algún bit o se están corriendo de la trama que opinan?
Saludos

Desconectado macedo

  • PIC18
  • ****
  • Mensajes: 270
Re: D705A y tira de leds RGB
« Respuesta #1 en: 14 de Septiembre de 2012, 12:44:56 »
Hola el problema estaba en la configuracion del SPI, tiene que estar asi;
Código: ASM
  1. CFG_SPI
  2.         movlw   b'00100000'     ; SPI Config
  3.         movwf   SSPCON1         ; WCOL  = 0 Disable
  4.                                 ; SSPOV = 0 Disable
  5.                                 ; SSPEN = 1 Enable            
  6.                                 ; CKP   = 0 Idle is a low Level
  7.                                 ; SSPM3:SSPM0 = 0000 SPI clock /4
  8.  
  9.     movlw   B'11000000'         ; Set up SPI port, SPI master,
  10.     movwf   SSPSTAT             ; SMP  = 1
  11.                                 ; CKE  = 1 Transmit de active to idle
  12.                                 ; D/A  = 0 NC  I2C
  13.                                 ; P    = 0 NC  I2C
  14.                                 ; S    = 0 NC  I2C
  15.                                 ; R/W  = 0 NC  I2C
  16.                                 ; UA   = 0 NC  I2C
  17.                                 ; BF   = 0 FLAG
  18.  
  19.     clrf     SSPCON2,ACCESS      ; Deshabilito el modulo MSSP I2C, BANKED=1 ACCESS=0
  20.     bcf      UCON,USBEN,ACCESS   ; Desactiva el modulo USB

El CKE y el CKP estaban mal seteados, pero ahora funciona y va bien.
Saludos

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: D705A y tira de leds RGB
« Respuesta #2 en: 14 de Septiembre de 2012, 13:27:13 »
Que cosas permite hacer esta tira y donde la conseguiste??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado macedo

  • PIC18
  • ****
  • Mensajes: 270
Re: D705A y tira de leds RGB
« Respuesta #3 en: 17 de Septiembre de 2012, 10:22:30 »
Hola la conseguí en Microelectronica SH., por congreso en capital federal, y lo que se te ocurra podes hacer, que se prenda toda de un color o que valle cambiando a todos los colores que corra un color con otro fijo como de fondo, sos vos el limite. Lo bueno es que no programas el PWM que controla los leds, lo hace el integrado vos solo le das el comando de que hacer y listo.

Un ejemplo:


Te paso de donde saque algo: http://learn.adafruit.com/digital-led-strip/overview

Saludos :D