TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: jriofrio en 26 de Junio de 2003, 08:04:00
-
Hola a todos...
Mi otra vez con el 8x8 LED project.
No he resivido ningun comentario a mi pregunta the proyecto Picxie2 con los LEDs...
Tal vez es mas complicado o muy largo para que alguien se moleste en verlo and hacer recomendaciones...
Pienso que si alguien me puede ayudar en encontrar una rutina de como seleccionar en el programa asembler los pins en forma consecutiva de los dos diferentes Ports A y C del 16F676 me sera muy util..
Los pins son from the PortC(del 0 al 7) y del PortA (0 y 1)...
Agradesco mucho cualquier opinion...
Gracias.
JuanR
-
Bueno, mira no entiendo bien que es lo que pretendes hacer, o a que llamas "seleccionar en forma consecutiva",
todos los puertos de este micro son de 8 bits, pueden ser entradas o salidas cada uno de los bits y pueden cambiar de sentido cuando quieras, pero la direccion es siempre la misma, lo puede ser es que quieras usarlos para manejar algo que requiera una palabra de 10 bits, y para esto no te queda otra salida que implementar una rutina que lo haga.
espero ayudarte-
Ariel
-
Te agradesco mucho tus comentarios Ariel...
Por favor dejame explicarme lo que estoy tratando de hacer. Si quereis mucha information, yo puse un request hace varios dias en este foro, pero nadie contesto.
El cual tiene el titulo "Picxie2 8x8 LED Project" lo puse el 24Junio2003. Alli puse el URL del proyecto que quiero modificar, tambien el asembler codigo que me gustaria cambiar.
El problema es que en el proyecto original usan el PIC16F84, el cual posee 8 pins en el PortB, los cuales puden ser manejados sequencialmente; es decir con una rutina podeis accesarlos uno tras otro cambiando solo la posicion del bit que controla el pin (que puede ser de salida o entrada).
Yo estoy usando el PIC16F676, el cual posee 6 pins en el PortA y 6 en el PortC. Como nesecito usar 8 pins, tengo que usar 2 pins de otro Port (en mi caso uso 6 pins del PortC y 2 pins del PortA (RA1 y RA2)).
Como los 8 pins no pertenecen a un solo Port, no se como inclur los 2 pins del PortA en una rutina que accese un matris de 8x8 LEDs.
Como te decia estimado Ariel, si teneis la amabilidad de poder ayudarme, te agradeceria mucho....
Por Favor mira al website: http://www.zws.com/products/picxie2/index.html
Asi tendras una mejor idea de lo que te platico aqui.
El problema con el projecto es que uso un diferente microcontroler. El proyecto original usa el 16F84 y yo uso el 16F676, pero por ser muy novato en esto, no he podido cambiar el programa asemble para hacerlo trabajar con el 16F676.
Gracias por yu atencion, espero oir tu comentario.
Muchos Saludos...
JuanR
-
Bueno, voy a mirar tu proyecto, de cualquier manera te cuento que el 16f876 tiene el portb de 8 bits y el C tambien de 8 bits, asi que sigo sin entender, te recomiendo mirar el data sheet, puedes bajarlo desde www.microchip.com, ademas depende de la aplicacion pero si hay varios puntos a tener en cuenta para migrar de un 84 a un 876.
saludos
Ariel
-
Gracias Ariel por tu atencion...
Quisiera clarificar que el PIC que estoy usando en el 16F676, tiene 14 pins (es uno de los nuevos PICs de 14bit arquitectura).... este PIC posee tambien el cristal osccilador de 4 Mhz.
El que tu señalas es 16F876 el cual es mas grande i tiene mas pins...
Te agradesco por tu ayuda...
Hasta pronto
JuanR
-
HOla, bueno ahora se me aclara la cosa, bueno voy a mirar el pdf de este micro y los datos de tu proyecto, luego te escribo.
saludos
Ariel
-
Hola Ariel...
Me alegra leer tu mensaje...
Permiteme darte un poco mas de informacion del uso de los pins en el 16F676 que estoy usando.
Estoy usando todos los pins del PortC (RC0 al RC5), dos pins del PortA (RA1 y RA2). Estos 8 pins uso para controlar la matris de LEDs.
Tambien uso 2 pins mas del PortA (RA4 y RA5) para controlar los 74HC374, el pin RA3 del PortA es conectado al pin 1 que es Vss, el pin RA0 (zero) del PortA no es usado.
Finalmente el pin 14 del 16F676 que es Vdd.
agradeciendote mucho por tu ayuda..
juanR
-
Bueno, no es dificil de solucionar el problema, por lo que entiendo entonces quieres sacar un byte cuyo bit menos significativo es RC0 y el mas significativo es RA2, o mas grafico asi es tu byte
RA2,RA1,RC5,RC4,RC3,RC2,RC1,RC0
bien si es asi con algunas oiperaciones podrias sacar el dato sin problemas, pues por lo que vi en el circuito primero se carga el dato en el puerto y despues le das un pulso para actualizar el 374, voy a ver como te doy un ejemplo.
saludos.
Ariel
-
Hola Ariel... que tal!!!
Tu comentario es correcto, es exactamente como quiero que trabaje....
He estado tratando de cambiar el programa sin mucho exito. Como te dije soy nuevo en esto, es por eso que hay partes del programa que no entiendo aun y que tal vez neseciten ser cambiados para hacerlo funcinar correctamente con el 16F676.... no estoy seguro como hacerlo.
No estoy seguro, si tu veis el codigo del programa podrias identificar las partes que deben ser cambiadas... si eso es posible, por favor podeis recomendarme los cambios que debo hacer!!!
Te agradesco que me esteis dado una mano con este proyecto...
Hasta pronto entonces...
JuanR
-
HOLaaaaaaa Ariel, donde estais compadre,.... no he oide de ti por varios dias!!!!!
Espero que no hayas descidido abandonar mi proyecto....
Espero que todo vaya bien contigo...
Hasta pronto, compañero
juanR
-
No no he tenido tiempo, pero en unos dias te doy la sorpresa con la rutina que necesitas,
saludos
Ariel
-
que tal jriofrio el proyecto que estas desarrollando es interesante ya cheque la pagina donde esta el circuito
sabemos que es en matriz ó dot matrix pero yo tengo una duda tu lo quieres igual como el original o quieres intentar de otras formas supongamos que el pic en el circuito original es el 16f84 que tiene 8 bits del pto b. y tu lo quieres manejar con el 16f676 que los puertos no son de 8 bits pero puedes usar a diferencia de los 74hc374 unos 74hc595
que son registros de corrimiento con latches de esta forma puedes usar solo 3 pines del micro para barrer toda la matriz del numero que quieras de 8x8, 7x5 etc. lo que cambia es que para los 374´s los datos son en paralelo y en los 595´s
son en transmicion sincrona esto quiere decir una señal de datos serial una señal de reloj y una señal de strobe o carga asi hasta te sobran pines para otras funciones para tus necesidades asi que espero tu respuesta de mi comentario y si te interesa con gusto te ayudare saludos.
-
Hey, Hola Ariel, me alegra que estes con el forum,.. pense por un momento que tal ves no volveria a saber de ti...
me alegro de oir de ti....
Solid84, gracias por tu idea, te cuento que mi experiencia con electronica, es bastente limitada por ahora, ya que soy un principiante.
Tu idea en usar el 74hac595 me parece muy interesante. No tengo mucho conocimiento de estos IC. Como tu viste en el website del Picxie2, solo segui sus pasos. Pero como tu dices con el uso del 595 me gustaria intentarlo.
Aunque tengo construido el 8x8 LED con los 74hc374, siempre puedo hacer otro y ver como trabaja.
Si podeis ayudarme con el uso de los 595 seria fantastico...
Gracias por tu oferta y comentario, siempre aprendo un poco mas cada vez que alguien ofrece una nueva idea...
Muchos saludos..
JR
-
bueno ya contestada mi pregunta vamos a realizar el proyecto ok como dices tienes armado ya el 8x8 con los 74hc374 pero no tienes que cambiarle mucho puesto que tambien son 8 salidas la diferencia es el 374 son 20 pins y el 595 son 16 pins puedes modificar el que ya tienes o hacer otro eso es como tu quieras, te mando el diagrama y el datasheet del 595 para que lo veas las modificaciones las señales del 595 que son (DS),(STcp) y
(SHcp) son las que van al pic asi que tu escoje que pines quieres usar y me escribes para seguir mientras yo tambien empiezo a hacer el circuito saludos
-
Te agradesco por tu ayuda Solid84....
Hombre si hubiera sabido de este 595 anteriormente, me hubiese ahorrado dolor de cabeza....
Mira, como podeis inmaginar, no tengo mucha familiridad con estos IC (circuitos integrados)... me gustaria saber, como puedo familarizarme con estos IC de la familia 74XXXXX.
Corrigeme si me equivoco.
Son estos IC"s llamados circuitos integrados logicos??
Si estoy correcto, hay otras IC"s logicos fuera de esta 74xxxx familia, osea con otros nombres....
Mas que todo, me gustaria saber como pueden ser usados, podeis recomendar algun lugar donde puedo encontrar esta informacion????
Otra cosa, me podrias explicar un poquito mas hacerca de como puedo usar lo que mencionaste "(DS),(STcp) y (SHcp) son las que van al pic "... no estoy seguro hacerca de que quereis decir con ello....
Gracias....nuevamente.
JR
-
que ahi jr vamos a empezar por los c.i. ok
mira los 74xx595´s y los 74xx374´s son integrados de la familia de los ttl´s que si son logicos por que ttl significa logica transistor a transistor esto quiere decir que son arreglos logicos basados en transistores ahi otras familias como la cmos,la dtl´s, las rtl´s etc. pero las mas comunes
y mas usadas son la ttl y la cmos, la codificacion depende del fabricante para los ttl´s algunos son con (74) ó (54)
por ejemplo 74LS374 ó 54H374 pero en realidad son lo mismo en funcion, lo que cambia son las velocidades de respuesta.
Los cmos igual algunos comienzan con (40) y otros con (140) por ejemplo 4017 ó 14017 pero son lo mismo
por ultimo la diferencia entre ttl y cmos son las velocidades de respuesta y los niveles de voltaje los ttl´s trabajan hasta 5volts y los cmos hasta 15v espero haber sido un poco mas claro.
-
Por supuesto que si....
Ahora tengo un poco mas de conociento que ayer hacerca de estos IC.
Una aclaracion:
La diferencia entre TTL y CMOS es solamente en el voltaje, o existe otras diferencias???
Como por ex: material que son hechos, temperatura operacional, mecionaste velocidad (cual es el mas rapido), tamaño, etc, etc...
Los otros dos que mencionais DTL and RTL, que significa el D y el R ??? Se que Tl es transistor logic, pero no se que significa D y el R....
Sabeis donde puedo encontrar informacion en su uso??
Otra pregunta:
Existe una tabla de crosrefencia, con la cual se podria usar para remplazar uno con otro???
Por EX:
Tu mencionas que le 4017 es igual al 14017
Tambien el 74LS374 es lo mismo que 54H374
Gracias por tu informacion, la cual es muy util para mi en entender la existencia y el uso de estos logicos C.I.
Hasta pronto Solid84...
JR
-
ok dtl significa logica transistor diodo y rtl significa logica transistor resistencia con respecto a las diferencias por supuesto que los materiales la temperatura la velocidad son diferentes los cmos son de metal silicio oxido complementario y los ttl son material de silicio
pero los 74hcxxx tambien son con tecnologia cmos por la velocidad de trabajo de hecho hc es el codigo para indicar que son con tecnologia cmos para ser rapidos pero compatibles con niveles ttl de 0 a 5volts claro que ahi crossreference de cada familia pero para remplazar digamos un 74hcxxx por un 74LSxxx es un poco diferente ya que tendrias que checar los datasheet por las caracteristicas de cada uno por ejemplo los lay-outs y lay-in tiempos de acceso y de trabajo etc te escribo esta direccion donde puedes checar muchos integrados solo te das de alta es gratis y cuando encuentra el integrado que buscas te manda directamente al datasheet http://www.abcsemiconductors.com
ahora para conectar los 3 pines del pic tu solo conectas la señal DS a RA0 por ejemplo que son los datos STcp a RA1 que es la señal de reloj y SHcp a RA2 que es la señal de strobe la funcion es parecida como los 374 los datos son en paralelo y un pulso de reloj pero para el 595 los datos son seriales y las salidas en paralelo con una señal de reloj y una de habilitacion po eso son solo 3 pines en lugar de 9 voy a armar el circuito y te aviso para seguir saludos
-
Gracias por tus aclaraciones Solid84...
Fui al website que indicaste, y wow, hay tremenda cantidad de referencia que se puede ver alli....
Una cosa curiosa que vi, cuando fui a ver si encuentro los IC que ahora conosco, 374 y 595, no los pude encontrar...
El lugar que fui es:
Category: Integrated circuits => Logic => Buffers/Drivers
pagina #9, alli listan muchos 74HCxxxx, pero los 374 or 595 no estan.
Estoy buscando en el lugar equivocado????
Bueno, seguimos hablando////
JR
-
Hey Solid84, ... Como te va??
Gracias por tu informacion, la forma como lo poneis es muy elegante....
El problema que tengo, el circuito que tengo hecho con los 74hc374, esta conectado en la siguiente forma.... mira al archivo que envio....(juanschema.pdf)
Las modificaciones que he echo al programa original podeis verlo en 8x8test.asm
Hasta la fecha, no he podido hacerlo tabajar correctamente, cuando corro el programa, no se ve ninguna forma reconocible. Por un tiempo pense que talvez mi trabajo soldando era el problema.
Escribi un programa que enciende cada LED una por una, una vez que consegui hacerlo trabajar, comprobe que mi trabajo soldando es correcto....
Si quereis (lo cual te agradeceria mucho) dale una mirada a mis modificaciones, tal vez tu podeis ver donde estoy cometiendo errores... y me podeis aconsejar que se puede hacer...
Me gustaria verlo trabajar porsupuesto, veo que tu teneis el mismo sentimiento cuando leo tu mensaje de !!!!!FUNCIONA!!!!
So si podeis darme una manito con esto seria estupendo...
Te agradesco mucho tu ayuda...
JR
NOTA:
Estoy pensado en hacer otro LED matris, pero esta vez un poco mas grande. Tal vez 16x32 o tal vez 16x24. Tengo esta idea porque con lo que aprendi de ti con el 595 se podria hacer algo mas grande.
Otra cosa, tengo un par de 16F877A con el programador (Pic16Pro40), que lo compre muy barata hace varias semanas.... y el IC-Prog.
Tambien tengo ideas de que me gustaria hacer. YA te contare lo que tengo en mi cabeza....
-
Lo siento, olvide poner el otro archivo...
JR
-
que ahi jr perdon que me tarde un poco en contestar pero estoy un poco presionado en mi trabajo asi que analizo poco a poco tus cambios en el achivo original
ya cheque el datasheet del pic y esta ok en configurar cmcon y ansel mi duda es por que omitiste la configuracion
TMR0 no he checado si no se utiliza o es pura configuracion del usuario asi que no debe importar si no lo utiliza pero si tienes un detalle y es en el programa principal ó mainloop toda la rutina esta bien solo que tu comentates la instruccion para crear el loop en la rutina principal se llaman a todas las subrutinas del display pero al haber omitido el goto loopmain se brinca a la siguente instruccion que es repeatframe entonces yo creo que por eso no funciona tu rutina para sacar los datos esta bien solo me falta checar las habilitaciones del 374 asi que despues te escribo para lo que falta por checar saludos
-
Hola Solid84,... que tal!!!!
Contestando a tu pregunta, hacerca del TMR0, el pic16F676 al momento de POR (power on reset), mejor dicho cuando lo prendes al comienso... la registradora OPTION_REG, tiene un valor de 1111-1111, los primeros 3 digitos (PS2-PS1-PS0) que son los que controlan el PRESCALE es de 1:256.
Lo deje de esta forma, porque pienso que esta bien ese valor.......
La parte que me dedicado la mayor parte del tiempo, es la que trate desde el DFLoop, porque esta es la parte que llama a las rutinas...
Solo la primera parte donde se declara las variables y el DFLoop es que cambie, ya que la localidad de la memory es diferente entre 16F84 y el 16F676, y tambien como los ports en el 16F676 pueden usar solo 6 bit nesecito cambiar la subrutina de DFLoop, la cual trabaja con los ports....
Espero que esto aclare un poco mas hacerca del programa.
Gracias por tu ayuda...
hasta pronto..
JR
-
que ahi jr mira el detalle que te expongo es este
;------------------------------------------------------------
; Main program loop with various sequenced effects
; Restore default refresh and frame rate
MainLoopCHECA ESTA ETIQUETA
BCF STATUS,RP0 ;Select file bank 0
MOVLW DEFAULT_MULTIPLEX_RATE
MOVWF MultiplexRate
MOVLW DEFAULT_FRAME_RATE
MOVWF FrameRate
;------------------------------------------------------------
; Show PIC-2 logo and rotate it upwards four times
CALL Pic2Logo
MOVLW 10h
CALL RepeatFrame
MOVLW 40h
CALL RepeatRotUp
;------------------------------------------------------------
; Fade out
CALL ShowSkull
MOVLW 10h
CALL RepeatFrame
CALL BlankScreen
MOVLW 04h
CALL RepeatFrame
CALL ShowSkull
MOVLW 10h
CALL RepeatFrame
;------------------------------------------------------------
; Set faster frame rate, show 256 frames of bouncing ball,
; then restore frame rate to default
MOVLW DEFAULT_FRAME_RATE / 2
MOVWF FrameRate
MOVLW 00h
CALL RepeatBall
MOVLW DEFAULT_FRAME_RATE
MOVWF FrameRate
;------------------------------------------------------------
; Loop around until batteries run out (implied conditional expression 
; GOTO MainLoop CHECA DE NUEVO AQUI ESTA COMENTADO ENTONCES NO AHI UN LOOP INFINITO DONDE TODAS LAS SUBRUTINAS SON LLAMADAS COMPARALO CON EL ORIGINAL Y VERAS QUE NO ESTA COMENTADO TU MODIFICATE LAS SUBRUTINAS PARA QUE FUNCIONE CON EL 626 PERO TODAS SON LLAMADAS EN ESTE LOOP INFINITO SI LO COMENTASTE SIMPLEMENTE NO EXISTE TAL LOOP CREO QUE ESTE ES EL PROBLEMA
SALUDOS
-
Que tal Solid84....
Te agradesco tu informacion. Voy a tratar de hacer los cambios que sugieres,,,,
Ya te escribire explicando que sucedio...
Te agradesco mucho por tu ayuda.
jR
Aqui otra vez,...
Despues de varios intentos con el cambio que tu sugeriste, aun no he podido hacerlo trabajar....
Sabes, por no tener experiencia en como encontrar estos errores, lo que hago es cambiar cieratas partes que pienso que no trabajam bien, luego de correrlas, si no trabajan, buelvo a ver que mas puedo cambiar....
Como he estado lidiando con este problema por un par de meses sin poder solucionarlo, lo que pienso es la parte que mas dificultad presenta para mi es la parte donde comienza con la subrutina DISPLAY FRAME... si estas usando MPLAB es en la linea 151 a la line 198, que mas tiempo me he dedicado, pero hasta ahora no he podido corregirla para que trabaje con el 16F676...
Pregunta: Usais el progrma Proteus??? Si, es asi, cuan bueno sois con el, quiero decir si sois muy familiar con el...
SAludos
Jr
-
que ahi jr oye con respecto a la rutina displayframe ya la cheque otra vez y parece que esta correcta el problema es que no he tenido tiempo de armar el circuito y probarlo con el archivo original la verdad no conozco el programa proteus y solo uso el mplab pero no simulo los programas yo cuento con un ICD asi que con una base arreglada puedo realizar debug para un 16f84,16f73,16f877 etc.
pero como te repito no e podido hacer el circuito para probarlo pero yo creo que no se necesita usar el archivo original se puede usar el circuito con los 374´s pero con nuestro propio programa y con los arreglos que tu hiciste para el 16f626 asi que manos a la obra saludos
-
Gracias Solid84,.... seguire intentandolo...
Saludos..
JR
-
Hola JR... te contesto sobre el Proteus, no estoy muy familiarizado con él como para dar una opinión formada en el asunto, pero puedo decirte que las simulaciones (de los micros soportados) parecen ser en tiempo real, tiene muy buena imagen, es bastante sencillo de entender pero tiene muchas opciones, por lo tanto no se como funcionan todas.
En escencia son dos aplicaciones:
ISIS... con la que puedes crear el diagrama, y simular el circuito, colocar instrumentos virtuales y otras cositas...
Cuando usas PICs , puedes ver el código cuando simulas... paso a paso, verlo correr o dejarlo en otro plano.
También puedes imprimir o crear una imagen en base al esquemático o hacer el listado de los componentes utilizados (ésto último todavía no lo probé )
Puedes hacer un transpaso a la otra aplicación para crear el PCB automáticamente desde el esquemático.
ARES... ésta es la otra aplicación... tiene autoroute que te permite hacer en forma rápida PCBs , aunque a veces son un poco rebuscados y ha que arreglar manualmente algunas cosillas, para hacerlos más sencillos. (de ésta aplicación no he visto mucho, se que tiene muchas mas posibilidades)
Para ser sincero, promete mucho pero solo he visto algo de él... principalmente porque mis conocimientos sobre PICs son muy elementales, aunque intento dedicarle mas tiempo para aprender.
Subiré a un maletín de yahoo unos manuales del Proteus (5.2 - pero casi es lo mismo para la versión 6 aunque tiene algunas mejoras), que hemos encontrado junto a Gabo65 en un FTP... están en inglés que para ti no trae problemas (a mi me está costando bastante usarlo, así que seguramente te consultaré luego, si lo usas).-
El maletín está en: http://ar.f2.pg.briefcase.yahoo.com/
Nombre: todopicvarios
password: varios
Un abrazo, espero que te sea útil...
marmatar
-
que ahi jr como vamos con el proyecto del matriz 8x8
pronto te mando un programa que haga la prueba de la matriz prendiendo linea x linea y las 8 columnas y para el 16f676 pero todavia no lo termino saludos a y escribe si lo puedes modificar para que uses los 4 pines de cada puerto como te habia escrito unos mensajes antes bye
-
Hola Solid84, gusto de oirte...
He estado haciendo varios intentos, modificando el programa, he echo un poquito de progreso, pero aun no podido ver lo que el programa supone hacer....
No se si te converse, que escribi un programa para prender los LED desde arriba haci abajo uno por uno, el cual trabajo muy bien, lo hice para verificar si todo la soldada que hice trabajaba como se supone....
Pienso que el programa que mencionas, el cual prendera los LED linea por linea, me dara un mejor entendimiento en como tomar los 8 LEDs al mismo tiempo y prenderlos... te agradesco de antemano por ello...
Hacerca de lo ultimo, de usar los 595 (espero que es a lo que te refieres), tengo que hacer otra placa con los LED, ya que el actual, los tengo soldado... y es preferible si hago uno nuevo... aun no he comprado los 595. Ya te dire cuando todo este soldado y listo....
Saludos....
JR
-
Hola Marmatar, te agradesco por los manuales de proteus.
Seguro de que van ha ser muy utiles...
Hasta la proxima...
JR
-
JRIOFRIO;
Espero que estes bien, bueno he estado complicado pero hoy estoy con tiempo, te adjunto una rutina que hice, lo que tenes que hacer es dejar el programa como esta original, claro que seteando como corresponden los puertos que van al 374 como estan en tu circuito, coloca la rutina en el programa y llama a la rutina en el punto donde antes ponia el dato en el puerto, el dato a enviar tiene que estar en W antes de llamar la rutina, tal como me lo pedistes lo que hace la rutina es concatenar el portc con el porta de esta forma
si en W pones 0xA5 y llamas a la rutina vas a tener
A 5
1 0 1 0 0 1 0 1
RA2,RA1,RC5,RC4,RC3,RC2,RC1,RC0
solo requiere 40 microsegundos aproximadamente por lo que creo que no te va a traer problemas para mostrar las figuras, recuerda gatillar el 374 a la vuelta de la rutina.
espero que te sirva y disculpa la demora.
Ariel / Pikman
-
Gracias por tu ayuda Pikman,...
Lo voy a probar, te cuento como fue en mi proxima visita al forum..
Gracias por no olvidarte....
JR