Autor Tema: ayuda con PIC18F4550 y pulsos  (Leído 10028 veces)

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

Desconectado Shugo

  • PIC10
  • *
  • Mensajes: 10
ayuda con PIC18F4550 y pulsos
« en: 10 de Septiembre de 2008, 11:08:36 »
hola a todos, para un proyecto de control de leds por el puerto paralelo hice una placa con un chip 74LS244 para proteger el puerto, dos 74LS374 para doblar las salidas del puerto paralelo y 2 ULN2804A para trabajar a intensiades mayores. Pues bien para dejar pasar los datos de los 74LS374 a las ULN se tienen k enviar un pulso a cada uno de los 74LS374. Yo más tarde decidí hacer un conversor por decirlo de alguna forma de puerto paralelo a usb con un PIC18F4550 y el problema viene cuando kiero enviar los pulsos, lo k serian los puertos de control del puerto paralelo C0 y C1 los he conectado a los pines RA0 y RA1 y en el programa del PIC pongo este codigo por ejemplo para encender el primer led de los 8 que estan conectados a uno de los 74LS374: {output_high(PIN_B7);output_low(PIN_A0);output_high(PIN_A0);output_low(PIN_A0);}  , el problema en si vendria cuando conecto por ejemplo el primer y el tercer led de uno de los chips y seguidamente enciendo solo el tercero del otro chip, automaticamente se me enciende el primero, asi k he deducido k el problema seria de los pulsos. Estimados foreros, como podria solucionar ste problema? es k m esta comiendo el coco, xk no veo ningun fallo en el programa del PIC ni en el del PC.

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: ayuda con PIC18F4550 y pulsos
« Respuesta #1 en: 10 de Septiembre de 2008, 13:55:38 »
Creo que primero respira hondo y explicate mejor.

Javicho.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: ayuda con PIC18F4550 y pulsos
« Respuesta #2 en: 10 de Septiembre de 2008, 14:11:13 »
a ese código tuyo le falta meter un retardo entre switcheo de pines.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Shugo

  • PIC10
  • *
  • Mensajes: 10
Re: ayuda con PIC18F4550 y pulsos
« Respuesta #3 en: 10 de Septiembre de 2008, 17:38:23 »
el codigo quedaria asi por ejemplo?
{output_high(PIN_B7);delay_ms(1);output_low(PIN_A0);output_high(PIN_A0);output_low(PIN_A0);}

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: ayuda con PIC18F4550 y pulsos
« Respuesta #4 en: 11 de Septiembre de 2008, 15:55:29 »
mejor así
{output_high(PIN_B7);delay_ms(x);output_low(PIN_A0);delay_ms(x);output_high(PIN_A0);delay_ms(x);output_low(PIN_A0);}

donde x es el tiempo que tendras que ir ajustando.



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Shugo

  • PIC10
  • *
  • Mensajes: 10
Re: ayuda con PIC18F4550 y pulsos
« Respuesta #5 en: 11 de Septiembre de 2008, 17:19:29 »
nada de nada, he probado poniendo 1 y 200 en x y no me funciona, me sigue pasando lo mismo, palitroquez, te podria pasar mis programas por mp y les hechas un vistazo y me dices en que me puedo estar equivocando por favor?

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: ayuda con PIC18F4550 y pulsos
« Respuesta #6 en: 12 de Septiembre de 2008, 14:28:03 »
no hay problemas Shugo, pero ¿no sería mejor que lo subas por aquí?, así hay mas posibilidades de encontrar la falla, si lo vemos entre todos.





La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Shugo

  • PIC10
  • *
  • Mensajes: 10
Re: ayuda con PIC18F4550 y pulsos
« Respuesta #7 en: 12 de Septiembre de 2008, 17:51:18 »
vale, de acuerdo, lo postearé aquí:
Ante todo coloco la imagen del datasheet del PIC18F4550:

El esquema del PIC18F4550 que he seguido es el siguiente:

El PORTB lo he utilizado como he dicho en mi primer mensaje como los 8 bits de datos del puerto paralelo y el bit 0 y 1 del PORTA lo he utilizado como el bit 0 y bit 1 de control del puerto paralelo(para enviar los pulsos)
Y seguidamente coloco las imagenes de los datasheets de los chips 74LS244, 74LS374 y ULN2804A y el esquema de la placa para controlar el puerto paralelo:
                     74LS244                                                                        74LS374                                                                         ULN2804A




Los programas para el PIC (en CCS compiler) y el PC (en Visual basic 6.0) los adjunto en este mensaje.
Por cierto os dareis cuenta de que la parte de programación correspondiente a los pines de estado, tanto por la parte del PC cm por la del PIC, no coinciden, basicamente xk aun no me he dedicado en profundidad a ello
Y finalmente muchas gracias de antemano a la gente que me va a ayudar :)
« Última modificación: 13 de Septiembre de 2008, 08:23:00 por Shugo »

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: ayuda con PIC18F4550 y pulsos
« Respuesta #8 en: 15 de Septiembre de 2008, 13:32:17 »
Hola.

Anoche revisé un poco tu programas y he notado varias cosas:

1.- sin meterme con la parte del usb, dices que usas el puerto paralelo, sin embargo no veo que llames a LPTx por ningún lado.

Citar
...el problema en si vendria cuando conecto por ejemplo el primer y el tercer led de uno de los chips y seguidamente enciendo solo el tercero del otro chip, automaticamente se me enciende el primero...

2.- Al notar la conexión del 74LS374 veo que los datos se comparten, es decir, no estas doblando al puerto, la única forma sería aislar cada buffer manejando el pin1 /OE. Si lo colocas en high, estas poniendo en alta impedancia las salidas Q[7-0]

Se me ocurre que si manejas ambos /OE puedes hacer una multiplexaje y asi lograr mostrar datos distintos en ambos bufferes.

un pseudo-código:

1.- /OE1 /OE2 <- 1 y CLK1, CLK2 <- 0
2.- mandas el primer byte
3.- CLK1 <- 1
4.- 1 ciclo reloj
5.- CLK1 <- 0
6.- 1 ciclo reloj
7.- /OE1 <- 0
8.- retardo X
9.- /OE1 <- 1

10.- mandas el segundo byte
11.- CLK2 <- 1
12.- 1 ciclo reloj
13.- CLK2 <- 0
14.- 1 ciclo reloj
15.- /OE2 <- 0
16.- retardo X
17.- /OE2 <- 1
18.- volver al paso 1

retardo X es el tiempo que dura encendido los led´s, deberas ir ajustando hasta que tengan un buen brillo y que se vea el efecto que están encendidos todos los 16 al mismo tiempo con datos distintos (puedes probar a partir con X= 3ms en adelante)

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek


 

anything