Autor Tema: como configurar pic para shift register TLC5925?  (Leído 7259 veces)

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

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
como configurar pic para shift register TLC5925?
« en: 09 de Febrero de 2023, 10:11:30 »
Cordial saludo...
tan amables requiero hacer un montaje con shift register en cascada con TLC5925 de 16 bits.
tengo idea del la interconexion, salida de datos de uno con el data in del siguiente, inicialmente pense que la comunicacion seria SPI pero veo que la tecnica es ingresar los datos  y estos se desplazan con el flanco positivo del reloj  luego pasar a alto el "LE" y asi colocar los datos en la salida.
la idea es hacerlo con 12 de estos chips pero la idea es comenzar con 2 para ver el proceso.
creeria que puedo hacerlo con un pic de 8 bits y los datos almacenarlos en una variable de 16 y enviarlos.
como seria el proceso de envio de datos en el codigo, trabajo en CCS.
Gracias de antemano.
« Última modificación: 09 de Febrero de 2023, 10:14:42 por johenrod »
Si algo parece complicado... es por que esta mal explicado.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:como configurar pic para shift register TLC5925?
« Respuesta #1 en: 09 de Febrero de 2023, 12:47:53 »
Cordial saludo...
tan amables requiero hacer un montaje con shift register en cascada con TLC5925 de 16 bits.
tengo idea del la interconexion, salida de datos de uno con el data in del siguiente, inicialmente pense que la comunicacion seria SPI pero veo que la tecnica es ingresar los datos  y estos se desplazan con el flanco positivo del reloj  luego pasar a alto el "LE" y asi colocar los datos en la salida.
la idea es hacerlo con 12 de estos chips pero la idea es comenzar con 2 para ver el proceso.
creeria que puedo hacerlo con un pic de 8 bits y los datos almacenarlos en una variable de 16 y enviarlos.
como seria el proceso de envio de datos en el codigo, trabajo en CCS.
Gracias de antemano.

Lo que entiendo es que el TLC5925  es una especie de convertidor de serial a paralelo, y parecería que tiene un bus SPI pero parece que no es así.

En la Figura 1 de las hojas de datos, parece que muestra un ejemplo, de lo que tendrías que hacer.



Entonces tu deberías escribir un código, para escribir unos o ceros en terminales o pines del microntrolador para generar el reloj, y generar los datos en SDI. Cuando hayas completado los 16 bits enviados, OE pasaría a cero lógico (que iniciamente estaba en 1L) para colocar los datos seriales en las salidas en paralelo (OUT0, OUT1, ... OUT15)
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como configurar pic para shift register TLC5925?
« Respuesta #2 en: 09 de Febrero de 2023, 13:21:44 »
Gracias por tu respuesta DominusDRR,,,
si eso lo tengo mas o menos claro, lo que pasa es que el shif 5925 dice que trabaja a 30Mhz entonces no se si implementar comunicacion spi o hacerlo por instrucciones.
Si algo parece complicado... es por que esta mal explicado.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:como configurar pic para shift register TLC5925?
« Respuesta #3 en: 09 de Febrero de 2023, 13:26:26 »
Gracias por tu respuesta DominusDRR,,,
si eso lo tengo mas o menos claro, lo que pasa es que el shif 5925 dice que trabaja a 30Mhz entonces no se si implementar comunicacion spi o hacerlo por instrucciones.

Deberías leer las hojas de datos.

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como configurar pic para shift register TLC5925?
« Respuesta #4 en: 09 de Febrero de 2023, 13:38:01 »
es eso exactamente lo que no he podido implementar, tengo dudas con esos diagramas de tiempo.
Si algo parece complicado... es por que esta mal explicado.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:como configurar pic para shift register TLC5925?
« Respuesta #5 en: 09 de Febrero de 2023, 13:44:06 »
es eso exactamente lo que no he podido implementar, tengo dudas con esos diagramas de tiempo.

Esa frecuencia es un límite que el fabricante te proporciona y no es buena idea trabajar cerca o en los límites establecidos.

Lo ideal sería unos 20 o 25 MHz.

Si deseas trabajar con el módulo SPI, la pregunta es ¿Por qué tu obsesión por trabajar a 30MHz? ¿Acaso no puedes modificar la configuración SPI para trabajar a una frecuencia menor?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como configurar pic para shift register TLC5925?
« Respuesta #6 en: 09 de Febrero de 2023, 13:57:50 »
DominusDRR //no es que quiera a 30 mhz, es que no se como configurar o armar el programa.. solo desearia un ejemplo para poder comprender y poder implemantarlo.
Si algo parece complicado... es por que esta mal explicado.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:como configurar pic para shift register TLC5925?
« Respuesta #7 en: 09 de Febrero de 2023, 14:01:30 »
DominusDRR //no es que quiera a 30 mhz, es que no se como configurar o armar el programa.. solo desearia un ejemplo para poder comprender y poder implemantarlo.

Tu información es difusa, nadie es adivino para conocer con detalle tus intenciones.

Deberías indicar lo siguiente:

1. Microcontrolador que deseas utilizar.

2. Lenguaje que deseas utilizar para programar.

3. Software que deseas utilizar.

4. Indicar nivel de experiencia en los puntos desde el 1 al 3.


Una vez indicado eso alguien puede leerlo y podría empezar hacerte más preguntas y compartirte alguna idea inicial.

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como configurar pic para shift register TLC5925?
« Respuesta #8 en: 09 de Febrero de 2023, 14:21:11 »
DominusDRR //no es que quiera a 30 mhz, es que no se como configurar o armar el programa.. solo desearia un ejemplo para poder comprender y poder implemantarlo.

Tu información es difusa, nadie es adivino para conocer con detalle tus intenciones.

Deberías indicar lo siguiente:

1. Microcontrolador que deseas utilizar.

2. Lenguaje que deseas utilizar para programar.

3. Software que deseas utilizar.

4. Indicar nivel de experiencia en los puntos desde el 1 al 3.


Una vez indicado eso alguien puede leerlo y podría empezar hacerte más preguntas y compartirte alguna idea inicial.

Citar
tan amables requiero hacer un montaje con shift register en cascada con TLC5925 de 16 bits.
tengo idea del la interconexion, salida de datos de uno con el data in del siguiente, inicialmente pense que la comunicacion seria SPI pero veo que la tecnica es ingresar los datos  y estos se desplazan con el flanco positivo del reloj  luego pasar a alto el "LE" y asi colocar los datos en la salida.
la idea es hacerlo con 12 de estos chips pero la idea es comenzar con 2 para ver el proceso.
creeria que puedo hacerlo con un pic de 8 bits y los datos almacenarlos en una variable de 16 y enviarlos.
como seria el proceso de envio de datos en el codigo, trabajo en CCS.

creo que ahi esta claro, perdon si no me comprendes o no tienes tanta paciencia para nosotros los novatos.
Si algo parece complicado... es por que esta mal explicado.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:como configurar pic para shift register TLC5925?
« Respuesta #9 en: 09 de Febrero de 2023, 14:28:17 »
DominusDRR //no es que quiera a 30 mhz, es que no se como configurar o armar el programa.. solo desearia un ejemplo para poder comprender y poder implemantarlo.

Tu información es difusa, nadie es adivino para conocer con detalle tus intenciones.

Deberías indicar lo siguiente:

1. Microcontrolador que deseas utilizar.

2. Lenguaje que deseas utilizar para programar.

3. Software que deseas utilizar.

4. Indicar nivel de experiencia en los puntos desde el 1 al 3.


Una vez indicado eso alguien puede leerlo y podría empezar hacerte más preguntas y compartirte alguna idea inicial.

Citar
tan amables requiero hacer un montaje con shift register en cascada con TLC5925 de 16 bits.
tengo idea del la interconexion, salida de datos de uno con el data in del siguiente, inicialmente pense que la comunicacion seria SPI pero veo que la tecnica es ingresar los datos  y estos se desplazan con el flanco positivo del reloj  luego pasar a alto el "LE" y asi colocar los datos en la salida.
la idea es hacerlo con 12 de estos chips pero la idea es comenzar con 2 para ver el proceso.
creeria que puedo hacerlo con un pic de 8 bits y los datos almacenarlos en una variable de 16 y enviarlos.
como seria el proceso de envio de datos en el codigo, trabajo en CCS.

creo que ahi esta claro, perdon si no me comprendes o no tienes tanta paciencia para nosotros los novatos.

Lo siento, no leí las últimas líneas, eso sería en C y usando CCs.

Pero deberías explicar que PIC, pueda que no tengas modulo SPI el que deseas usar. Deberías indicar el tipo oscilador, para determinar que velocidades y retardos puedes generar.

En pocas, explicar el hardware que vas a diseñar.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como configurar pic para shift register TLC5925?
« Respuesta #10 en: 09 de Febrero de 2023, 14:37:53 »
lo que pasa es que no tengo pic elegido ya que no se que necesito para empezar, encontre un codigo donde no se utiliza el modulo spi (lo coloco al final creo que es pic_basic) y si se pudiera implementar asi solo necesitaria un pic con buena memoria de programa para colocar varias funciones. ( en este momento estoy tratando de pasarlo a ccs con un 12f1822. saludos..
Código: C
  1. /*
  2.  
  3.  * File:   main.c
  4.  
  5.  * Author: Sourav Gupta
  6.  
  7.  * By:- circuitdigest.com
  8.  
  9.  * Created on May 30, 2018, 2:26 PM
  10.  
  11.  */
  12.  
  13.  
  14. // PIC16F877A Configuration Bit Settings
  15.  
  16.  
  17. // 'C' source line config statements
  18.  
  19.  
  20. // CONFIG
  21.  
  22. #pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
  23.  
  24. #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
  25.  
  26. #pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
  27.  
  28. #pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
  29.  
  30. #pragma config LVP = OFF         // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
  31.  
  32. #pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
  33.  
  34. #pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
  35.  
  36. #pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
  37.  
  38.  
  39.  
  40.  
  41.  
  42. #include <xc.h>
  43.  
  44. /*
  45.  
  46.  Hardware related definition
  47.  
  48.  */
  49.  
  50. #define _XTAL_FREQ 20000000 //Crystal Frequency, used in delay
  51.  
  52. #define DATA_595 PORTBbits.RB0
  53.  
  54. #define STROBE_595 PORTBbits.RB1
  55.  
  56. #define CLK_595 PORTBbits.RB2
  57.  
  58. #define LED PORTBbits.RB3
  59.  
  60.  
  61. /*
  62.  
  63.  Other Specific definition
  64.  
  65.  */
  66.  
  67. void system_init(void);
  68.  
  69.  
  70. /*
  71.  
  72.  *This function will enable the Clock.
  73.  
  74.  */
  75.  
  76. void clock(void){
  77.  
  78.     CLK_595 = 1;
  79.  
  80.     __delay_us(500);
  81.  
  82.     CLK_595 = 0;
  83.  
  84.     __delay_us(500);
  85.  
  86. }
  87.  
  88.  
  89. /*
  90.  
  91.  *This function will strobe and enable the output trigger.
  92.  
  93.  */
  94.  
  95.  
  96. void strobe(void){
  97.  
  98.     STROBE_595 = 1;
  99.  
  100.     __delay_us(500);
  101.  
  102.     STROBE_595 = 0;
  103.  
  104.     }
  105.  
  106.  
  107. /*
  108.  
  109.  * This function will send the data to shift register
  110.  
  111.  */
  112.  
  113. void data_submit(unsigned int data){
  114.  
  115.     for (int i=0 ; i<8 ; i++){
  116.  
  117.         DATA_595 = (data >> i) & 0x01;
  118.  
  119.         clock();
  120.  
  121.     }
  122.  
  123.     strobe(); // Data finally submitted
  124.  
  125. }
  126.  
  127.  
  128. void main(void) {
  129.  
  130.     system_init(); // System getting ready    
  131.  
  132.     while(1){
  133.  
  134.         data_submit(0b00000000);
  135.  
  136.         __delay_ms(200);
  137.  
  138.         data_submit(0b10000000);
  139.  
  140.         __delay_ms(200);
  141.  
  142.         data_submit(0b01000000);
  143.  
  144.         __delay_ms(200);
  145.  
  146.         data_submit(0b00100000);
  147.  
  148.         __delay_ms(200);
  149.  
  150.         data_submit(0b00010000);
  151.  
  152.         __delay_ms(200);
  153.  
  154.         data_submit(0b00001000);
  155.  
  156.         __delay_ms(200);        
  157.  
  158.         data_submit(0b00000100);
  159.  
  160.         __delay_ms(200);
  161.  
  162.         data_submit(0b00000010);
  163.  
  164.         __delay_ms(200);
  165.  
  166.         data_submit(0b00000001);
  167.  
  168.         __delay_ms(200);
  169.  
  170.         data_submit(0xFF);        
  171.  
  172.         __delay_ms(200);
  173.  
  174.      }
  175.  
  176.     return;
  177.  
  178.     }
  179.  
  180.    
  181.  
  182. /*
  183.  
  184.  This Function is for system initialisations.
  185.  
  186.  */
  187.  
  188.  
  189. void system_init(void){
  190.  
  191.     TRISB = 0x00;  
  192.  
  193.     }
Si algo parece complicado... es por que esta mal explicado.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:como configurar pic para shift register TLC5925?
« Respuesta #11 en: 09 de Febrero de 2023, 15:24:14 »
lo que pasa es que no tengo pic elegido ya que no se que necesito para empezar, encontre un codigo donde no se utiliza el modulo spi (lo coloco al final creo que es pic_basic) y si se pudiera implementar asi solo necesitaria un pic con buena memoria de programa para colocar varias funciones. ( en este momento estoy tratando de pasarlo a ccs con un 12f1822. saludos..
Código: C
  1. /*
  2.  
  3.  * File:   main.c
  4.  
  5.  * Author: Sourav Gupta
  6.  
  7.  * By:- circuitdigest.com
  8.  
  9.  * Created on May 30, 2018, 2:26 PM
  10.  
  11.  */
  12.  
  13.  
  14. // PIC16F877A Configuration Bit Settings
  15.  
  16.  
  17. // 'C' source line config statements
  18.  
  19.  
  20. // CONFIG
  21.  
  22. #pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
  23.  
  24. #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
  25.  
  26. #pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
  27.  
  28. #pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
  29.  
  30. #pragma config LVP = OFF         // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
  31.  
  32. #pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
  33.  
  34. #pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
  35.  
  36. #pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
  37.  
  38.  
  39.  
  40.  
  41.  
  42. #include <xc.h>
  43.  
  44. /*
  45.  
  46.  Hardware related definition
  47.  
  48.  */
  49.  
  50. #define _XTAL_FREQ 20000000 //Crystal Frequency, used in delay
  51.  
  52. #define DATA_595 PORTBbits.RB0
  53.  
  54. #define STROBE_595 PORTBbits.RB1
  55.  
  56. #define CLK_595 PORTBbits.RB2
  57.  
  58. #define LED PORTBbits.RB3
  59.  
  60.  
  61. /*
  62.  
  63.  Other Specific definition
  64.  
  65.  */
  66.  
  67. void system_init(void);
  68.  
  69.  
  70. /*
  71.  
  72.  *This function will enable the Clock.
  73.  
  74.  */
  75.  
  76. void clock(void){
  77.  
  78.     CLK_595 = 1;
  79.  
  80.     __delay_us(500);
  81.  
  82.     CLK_595 = 0;
  83.  
  84.     __delay_us(500);
  85.  
  86. }
  87.  
  88.  
  89. /*
  90.  
  91.  *This function will strobe and enable the output trigger.
  92.  
  93.  */
  94.  
  95.  
  96. void strobe(void){
  97.  
  98.     STROBE_595 = 1;
  99.  
  100.     __delay_us(500);
  101.  
  102.     STROBE_595 = 0;
  103.  
  104.     }
  105.  
  106.  
  107. /*
  108.  
  109.  * This function will send the data to shift register
  110.  
  111.  */
  112.  
  113. void data_submit(unsigned int data){
  114.  
  115.     for (int i=0 ; i<8 ; i++){
  116.  
  117.         DATA_595 = (data >> i) & 0x01;
  118.  
  119.         clock();
  120.  
  121.     }
  122.  
  123.     strobe(); // Data finally submitted
  124.  
  125. }
  126.  
  127.  
  128. void main(void) {
  129.  
  130.     system_init(); // System getting ready    
  131.  
  132.     while(1){
  133.  
  134.         data_submit(0b00000000);
  135.  
  136.         __delay_ms(200);
  137.  
  138.         data_submit(0b10000000);
  139.  
  140.         __delay_ms(200);
  141.  
  142.         data_submit(0b01000000);
  143.  
  144.         __delay_ms(200);
  145.  
  146.         data_submit(0b00100000);
  147.  
  148.         __delay_ms(200);
  149.  
  150.         data_submit(0b00010000);
  151.  
  152.         __delay_ms(200);
  153.  
  154.         data_submit(0b00001000);
  155.  
  156.         __delay_ms(200);        
  157.  
  158.         data_submit(0b00000100);
  159.  
  160.         __delay_ms(200);
  161.  
  162.         data_submit(0b00000010);
  163.  
  164.         __delay_ms(200);
  165.  
  166.         data_submit(0b00000001);
  167.  
  168.         __delay_ms(200);
  169.  
  170.         data_submit(0xFF);        
  171.  
  172.         __delay_ms(200);
  173.  
  174.      }
  175.  
  176.     return;
  177.  
  178.     }
  179.  
  180.    
  181.  
  182. /*
  183.  
  184.  This Function is for system initialisations.
  185.  
  186.  */
  187.  
  188.  
  189. void system_init(void){
  190.  
  191.     TRISB = 0x00;  
  192.  
  193.     }

EL código me parece bastante bueno. El lenguaje es C. No estoy seguro pero me parece que CCS sólo utiliza lenguaje C. ¿En que lenguaje de programación tienes expereincia?

 Si no tienes hardware físico para probar su funcionamiento deberías verificar su funcionamiento en un simulador como Proteus (ver las formas de onda con el osciloscopio/analizador lógico)

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado uZYNQ

  • PIC16
  • ***
  • Mensajes: 123
Re:como configurar pic para shift register TLC5925?
« Respuesta #12 en: 09 de Febrero de 2023, 15:57:44 »
Saludos,
Citar
#include <xc.h>

  Esta en lenguaje C del compilador de microchip xc8. Pero en el programa solo están utilizando 8 bits de los 16bits del 595. y la frecuencia del reloj es de solo 1KHz. Y está dedicado el micro a hacer solo esa tarea. Si quieres aprovechar los 16bits, deberías modificar el ciclo for hasta 16, y la variable data debe ser de 16 bits. Si quieres modificar la frecuencia del reloj, debes reducir los delays en la función de clock.
 En cambio si quieres utilizar un modulo SPI para delegar ese trabajo al módulo, lo mejor seria utilizar un PIC de al menos 16bits que maneje el SPI con un bus de datos de 16bits.

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como configurar pic para shift register TLC5925?
« Respuesta #13 en: 09 de Febrero de 2023, 17:13:34 »
uZYNQ, gracias por tu respuesta.
 antes trabaje con el xc8 ahora lo hago en ccs por lo que no tengo acceso a las librerias xc8,  busque para descargarla pero no la he podido conseguir.
Si algo parece complicado... es por que esta mal explicado.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:como configurar pic para shift register TLC5925?
« Respuesta #14 en: 09 de Febrero de 2023, 17:17:23 »
uZYNQ, gracias por tu respuesta.
 antes trabaje con el xc8 ahora lo hago en ccs por lo que no tengo acceso a las librerias xc8,  busque para descargarla pero no la he podido conseguir.

¿Y que librería necesitas y para qué?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32