Autor Tema: enviar datos de forma serial  (Leído 8550 veces)

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

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: enviar datos de forma serial
« Respuesta #15 en: 07 de Abril de 2005, 23:16:00 »
hola usuario_registrado primero que nada agradesco tu aporte a este proyecto... bueno con respecto a lo que dices
***
Tan sólo necesitas escribir un uno la primera vez y "latchear" y después escribes un cero y "latcheas" 79 veces más. Esto se puede hacer con un bucle normal de toda la vida.
***

no es factible en este caso... por que en realidad el latch es para desplegar de forma paralela los datos enviados de forma serial, por lo que si envio un uno y latcheo se encendera solo la primera columna y si lo coloco a cero nuevamente y lactheo 79 veces solo colocare 79 veces un cero en la primera columna.... entiendes?

por otra parte, nunca he tocado el tema ***direccionamiento indirecto "fsr" e "indf" *** y si alguien me pudiese explicar un poco de forma que pueda entender de lo que se trata ya que la verdad mi nivel en esto es bien basico ya que hace poco me he iniciado y solo he hecho cosas muy basicas y la verdad ya se que me he metido en un lio al haber dado un paso tan grande con este proyecto pero se que de alguna forma y con ayuda de uds podre sacarlo adelante y mi aprendizaje avanzara un buen tramo

por lo demas, desde ya extiendo mis agradecimientos a todos los de este gran foro

despide xootraoox

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
RE: enviar datos de forma serial
« Respuesta #16 en: 08 de Abril de 2005, 00:33:00 »
Hola Xootraoox fijate que ya me senti motivado ha hacer algo parecido a lo que estas haciendo ya que tengo por ahi unos 100 leds rojos que no estoy ocupando y pues empezaria, asi que te pido que me digas que integrado estas usando para manejar la matriz y para multiplexar si no es mucha la molestia, hasta luego.
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: enviar datos de forma serial
« Respuesta #17 en: 08 de Abril de 2005, 05:03:00 »
Buenas.

Me acabo de bajar el datasheet del 74HC595 de Digchip.com.

Por lo que he podido comprobar, así funciona:

El pin 14 "DS" es por donde entras los datos serial.
El pin 11 "SH_CP" es el clock del registro de desplazamiento interno.
El pin 12 "ST_CP" es el clock del registro paralelo (el latch) que al macena el sato que hay en el registro de desplazamiento y cuya salida es el dato paralelo.

La secuanci que yo haría es la siguiente:

1.- Pongo un "1" en el pin DS.
2.- Doy un pulso de reloj en el pin SH_CP.
3.- Doy otro pulso de reloj en el pin ST_CP. (Ya tenemos un uno en la salida Q0).

4.- Pongo un "0" en el pin DS.
5.- Doy un pulso de reloj en el pin SH_CP. Con esto hemos desplazado el primer "1" a la segunda posición y tenemos un cero en la primera posición.
6.- Doy otro pulso de reloj en el pin ST_CP. (Se carga el cero que acabamos de meter en Q0 y el uno anterior en Q1).

7.-Los pasos 4 a 6 los repites 78 veces más, y cada vez que lo repitas el "1" va cambiando de posición.

Cuando latcheas no borras el contenido del registro de desplazamiento interno, por lo que el "1" sigue hay, solo tienes que ir desplazandolo y latcheandolo sucesiavamente. En el propio datasheet del IC viene un ejemplo que muestra esta función.

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: enviar datos de forma serial
« Respuesta #18 en: 08 de Abril de 2005, 05:24:00 »
En cuanto a como utilizar los registros "indf" y "fsr" te voy a poner un ejemplo(a ver si me sale) de como desplazar un solo caracter (A) de 5 columnas y 7 filas, a la derecha.

El caracter lo voy a representar de la siguiente forma:

bit 7 --> 0 1 1 0 0
bit 6 --> 1 0 0 1 0
bit 5 --> 1 0 0 1 0
bit 4 --> 1 1 1 1 0
bit 3 --> 1 0 0 1 0
bit 2 --> 1 0 0 1 0
bit 1 --> 1 0 0 1 0
bit 0 --> 0 0 0 0 0

Cada columna del caracter la voy a almacenar en un registro del PIC

Tenemos, por lo tanto, 5 registros de 8 bits que llamaremos, por ejemplo, col1, col2.. col5, que ocupan los registros 0x20, 0x21.... 0x24 del PIC:

col1    equ    0x20
col2    equ    0x21
col3    equ    0x22
col4    equ    0x23
col5    equ    0x24

movlw    0x7e
movwf    col1

etc....

Vamos a la rutina de desplazamiento a derechas.

El registro fsr del PIC se utiliza como puntero, es decir, en el indicas la dirección de memoria que vas a leer o escribir. A través del indf, lees o escribes la dirección de memoria a la que apunta el fsr. Por lo tanto si quieres leer por ejemplo la dirección 0x20, el programa seria:

movlw   0x20
movwf   fsr
movf      indf,w

En nuestro ejemplo, tendrias el valor 0x7e en el registro w.

Continua en el sisuiente mensaje

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: enviar datos de forma serial
« Respuesta #19 en: 08 de Abril de 2005, 11:26:00 »
bueno amigos agradesco el interes y el tiempo de *usuario_registrado* para dar ese tipo de explicaciones a la vez me pongo al dia con lo prometido y me coloco ahora ya a realizar los esquematicos para que puedan ir viendo de que se compone en parte de hardware este proyecto... taan pronto los termine los colocare aqui para que vean de que se trata

despide -==XooTRAooX==-

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: enviar datos de forma serial
« Respuesta #20 en: 08 de Abril de 2005, 11:54:00 »
bueno antes les comento que me he encontrado con un proyecto de un profesor que es en cuanto a hardware casi tan igual a lo que estoy haciendo con la diferencia que el uso un pic16c65 el cual posee un modulo integrado SSP el cual permite una comunicacion SPI.... bueno al soft le hice solo una modificacion a modo de emular por soft esta comunicacion (en realidad solo reutilice la rutina que estaba ya ocupando) la diferencia es que este proyecto se trata de un reloj por lo que solo despliega los numeros sobre una matriz... pero al probar no me ha trabajado y la verdad no se a que se debe ya que he revisado y aparentemente esta todo ok para trabajar sobre un 16f628

bueno les dejo el pdf y el asm modificado por mi para que lo vean


Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: enviar datos de forma serial
« Respuesta #21 en: 08 de Abril de 2005, 20:32:00 »
bueno pido disculpas por la demora pero, pero se que todos no trabajan con PROTEL DXP, es por eso que, tenia que dubirlo en algun formato mas estandart y tube que descargar ciertos softwares para poder pasarlo... pero ya esta

para los que les acomode en formato PROTEL DXP

para los que les acomode en formato PDF (acrobat reader)

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
RE: enviar datos de forma serial
« Respuesta #22 en: 08 de Abril de 2005, 21:51:00 »
Gracias Xootraoox pronto me pondre a trabajar en ello y veremos que sale, hasta pronto.
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: enviar datos de forma serial
« Respuesta #23 en: 08 de Abril de 2005, 22:17:00 »
apsss se me olvidaba comentar nuevamente que en realidad no uso exactamente el 74hc595 sino que uso el tpic6b595n el cual a diferencia de el 74hc595 trae integrados unos transistores mosfet a modo de drenar mas corriente por sus salidas para asi ahorrarse una etapa de transistores ya que si por ejemplo quisiera encender 8 leds con la salida del 74hc595 apenas se encenderian es mas si es que pueden hacer la prueba y hacer una seguencia con el 74ch595 de esta forma y solo con leds se daran cuenta de lo que les digo

00000001
00000011
00000111
00001111
00011111
00111111
01111111
11111111

bueno con eso podran notar que al encender el primer led quizas enciende sin problemas pero ya al encender el segundo el brillo caera casi a la mitad y bueno si continuan encendiendo hasta los 8 leds el brillo decaera demaciado es por eso que es mejor usar el tpic6b595 que ya poseen una etapa de mayor drenaje pensada justo para estos casos.... en el caso mio enciendo hasta 12 leds con una misma salida sin ningun problema.... tambien hay otros que reemplazan al tpic6b595 pero en este momento no merecuerdo cuales son

en todo caso les dejo los datasheets de los 2 para que vean que es exactamente lo mismo salv que trae mas pines 2 que no se utilizan mas otros que sirven de  gnd, etc

74hc595

tpic6b595

NOTA: El tpic6b595 no es un producto de la conocida empresa microchip

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: enviar datos de forma serial
« Respuesta #24 en: 09 de Abril de 2005, 01:44:00 »
UFFFF... despues de buscar y leer un poco de info acerca de el direccionamiento indirecto he podido comprender algo RollEyes.... y si estoy en lo correcto es exactamente lo que buscaba ya que permite guardar y leer datos secuencialmente en las paginas del micro (corrijanme si estoy equivocado) como por ejemplo... me aseguro de dejar un espacio sin usar en una de las paginas como por ejemplo

MEMORIA equ 0x20

y desde hay voy escribiendo datos por medio de un contador que vaya incrementando la direccion, en otras palabras voy almacenando secuencialmente a lo largo de la pag. los datos

0x20   = 00000000
0x21   = 00000001
0x22   = 00000010
0x23   = 00000100
0x24   = 00001000
0x25   = 00010000
0x26   = 00100000
0x27   = 01000000
0x28   = 10000000

y asi sucesivamente, para luego leer los mismos...... si es asi por favor haganmelo saber por que esa seria la solucion que estaba buscandoya que asi generaria un buffer de 80 bits de forma  totalmente efectiva....

ahora la verdad es que todabia no entiendo bien el como aplicarlo es por eso que agradeceria algun tipo de ejemplo en el cual se realize lo que he comentado... osea definir una direccion para la memoria y escribir aunque sean 2 direcciones de la misma (por ejemplo 0x20, 0x21) y luego leerlas para enviarlas a uno de los puertos

he editado este posT para comentar que el ejemplo ya no es necesario ya que al instante de postear encontre lo que queria es por eso que lo coloco aqui por si alguien necesita un ejemplo DEL DIRECCIONAMIENTO INDIRECTO

EJEMPLO DIRECCIONAMIENTO INDIRECTO


DOCUMENTO                     CODIGO


bueno ya se que hasta aqui he pedido mucho pero de verdad es que mi deseo es aprender el arte de manejar a estos animalitos llamados pic y es por eso que agradesco la comprencion y ayuda prestada y no duden en que una vez que entienda todo esto sere uno mas de uds ayudando a los demas a resolver sus dudas

una vez mas agradesco lo que hacenRebotadoRebotadoRebotado


 

anything