Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?
15/05/2012 #2001


Darkbytes dijo: Ver Mensaje
Saludos.
Ese ejemplo es genérico, lo puedes utilizar en cualquier PIC16.
Solo selecciona el tipo de PIC que utilizaras, y compilas el ejemplo.

Suerte.
Ok muchas gracias por sacarme de esta pequeña duda otra cosita al momento de compilarlo que programas me recomiendas? ademas cuando me dices seleccionar el tipo de pic seria al momento de compilarlo o editar el archivo y colocar el pic que utilizare.

Tal vez parezcan preguntas estupidas pero no se mucho sobre esto
15/05/2012 #2002
Moderador

Avatar de D@rkbytes

JonNArevalo dijo: Ver Mensaje
Ok muchas gracias por sacarme de esta pequeña duda otra cosita al momento de compilarlo que programas me recomiendas? ademas cuando me dices seleccionar el tipo de pic seria al momento de compilarlo o editar el archivo y colocar el pic que utilizare.

Tal vez parezcan preguntas estupidas pero no se mucho sobre esto
OK. A lo largo de este curso hemos venido usando el programa editor MicroCode Studio.
Y como compilador usamos PICBASIC PRO los cuales trabajan conjuntamente.
Cuando copies el programa del ejemplo al editor, es cuando seleccionas el tipo de PIC en el programa MCS.

Ahora, para aclarar más tus dudas, te recomiendo que te leas el curso desde el principio.

15/05/2012 #2003


Muchas gracias de antemano. Saludos empezare en esto, cualquier duda contare con su asesoria para salirme de ellas. Gracias nuevamente y Saludos
16/05/2012 #2004


hola,

en primer lugar gracias por la contestacion anterior hacia mi post ya que pude solventar sin problemas lo que me ocurria.

ahora me surge la opcion de manejar mi PGA2310 a traves de SPI pero tengo unas dudas.

aqui os dejo el data sheet

http://www.google.es/url?sa=t&rct=j&...B8k3zfgxP3v1wQ

un poco largo...XD

el problema que tengo es que no entiendo muy bien el sistema de enviar bits. en principio si fuera un canal seria del 0 al 255 pero en este caso como enviar los dos canales iguales?

habria que escribir dos lineas SHIFTOUT una con cada canal o desde la misma linea?

espero que sepan a que me refiero. y si pueden darme alguna linea de codigo como ejemplo no saben como lo agradeceria. este componente me saca de mis casillas...

un saludo a todos
16/05/2012 #2005

Avatar de J2C

Deca

En la página 8 (/18) de la datasheet que colocaste esta explicado con el texto y la Fig. 2, debes mandar 8 bit's para cada canal uno a continuación del otro mientras mantenes la línea CS a 0.

Los primeros 8 bit's corresponden al canal Derecho (Right) y los siguientes 8 al canal Izquierdo (Left)

Por otra parte en cada secuencia de 8 bit's tenes como primer bit enviado el MAS significativo y como octavo bit el MENOS Significativo.



Saludos, JuanKa.-
17/05/2012 #2006


hola!

gracias por contestar.

El tema de la teoría lo entiendo pero el problema es la sintaxis en PicBasic que no lo he hecho nunca y no se como hacerlo y enviarlo a través del comando shiftout.

Si quisiera enviar digamos el número 75 a los dos canales como sería? separados por una coma o de que forma?

gracias y perdonar la pregunta tonta pero esto me vuelve loco
17/05/2012 #2007


Prueba esto...

Código:
DEFINE SHIFT_PAUSEUS 1
TrisB=%1000
CS   Var PortB.0
SDO Var PortB.1
SClk Var PortB.2
SDI  Var PortB.3

R var Byte
L Var Byte
High CS

Main:
 R=75 'Definir variables a enviar 
 L=75
 Gosub Send    'llamar rutina cuando quieras enviar
 Gosub Receive 'llamar rutina cuando quieras recibir
 LCDOut R,L 'Procesar variables recibidas
Goto MAin

Send:
 Low CS:Pauseus 1
 shiftout SDO,SClK,5,R,L
 pauseus 1
 High CS
Return

Receive:
 Low CS:Pauseus 1
 shiftIn SDI,SClK,0,[R,L]
 pauseus 1
 High CS
Return
no lo compile, lo hice aqui mismo asi que si tiene errores de sintaxis o no funciona los corriges , o me preguntas que quise poner
18/05/2012 #2008


ok, no sabes cuanto te agradezco tu aporte.

este fin de semana pondre a funcionar el codigo. ya te comento.

un saludo
20/05/2012 #2009

Avatar de inspector gadget

Saludos cordiales a todos, pongo a continuacion el siguiente codigo cuya funcion es encender un led conectado al puerto B0, mediante un pulsador que ataca el puerto A0. El objetivo es si presiono y suelto
P1, el led enciende de forma permanente, pero si vuelvo a presionar y soltar P1, el led se apaga. En otras palabras es sencillamente un ON OFF digital, hasta aqui no tengo problema, la cuestion es que quiero gobernar el puertoA con 8 pulsadores y que se enciendan 8 leds conectados en el puerto B, pero de forma independiente , tal y como haria si conectara 8 suiches analogicos en el que cada uno prende o apaga su respectivo led. Al ser principiante No he podido ordenar de manera eficiente el codigo para cumplir dicha funcion y es por eso que pido su generosa ayuda para que me orienten como cumplir este proposito, desde luego solo necesito me orienten con el codigo para los dos primeros pulsadores y los dos primeros leds, supongo que de ahi en adelante sera cuestion de configurar los bits restantes. Mil gracias por sus aportes.

@ DEVICE PIC16F628A,WDT_OFF,PWRT_OFF,MCLR_OFF,BOD_OFF,CPD_O FF,PROTECT_OFF

cmcon=7
trisA = 1 'todos como entrada
trisB = 0 'todos como salida

;configuracion de pines
led1 var portb.0 ;ubicacion del primer LED en RB0 del pic 16F628A
led2 var portb.1
;led3 var portb.2
;led4 var portb.3
;led5 var portb.4
;led6 var portb.5
;led7 var portb.6
;led8 var portb.7

p1 var porta.0 ;"""""""del primer pulsador RA0 """"""""""""
p2 var porta.1
;p3 var porta.2
;p4 var porta.3
;p5 var porta.4
;p6 var porta.5
;p7 var porta.6
;p8 var porta.7

Cont var BYTE

CONT=0

inicio:
IF p1 = 0 THEN
while p1=0
wend
cont=cont+1
if cont > 1 then
cont=0
endif
endif
select case cont
case 0
low led1
case 1
HIGH led1

end select

goto inicio
end
Archivos Adjuntos
Tipo de Archivo: zip LEDS+ PULSADORES.zip (15,4 KB (Kilobytes), 96 visitas)
20/05/2012 #2010


Código:
@ DEVICE PIC16F628A,WDT_OFF,PWRT_OFF,MCLR_OFF,BOD_OFF,CPD_O FF,PROTECT_OFF

cmcon=7
trisA = 255 'todos como entrada
trisB = 0 'todos como salida

;configuracion de pines 
led1 var portb.0  
led2 var portb.1 
led3 var portb.2 
led4 var portb.3 
led5 var portb.4 
led6 var portb.5 
led7 var portb.6 
led8 var portb.7 

p1 var porta.0 
p2 var porta.1 
p3 var porta.2 
p4 var porta.3 
p5 var porta.4 
p6 var porta.5 
p7 var porta.6 
p8 var porta.7 


inicio:
 if P1 then toggle Led1:pause 500
 if P2 then toggle Led2:pause 500
 if P3 then toggle Led3:pause 500
 if P4 then toggle Led4:pause 500
 if P5 then toggle Led5:pause 500
 if P6 then toggle Led6:pause 500
 if P7 then toggle Led7:pause 500
 if P8 then toggle Led8:pause 500
Goto inicio
try this...

---------- Actualizado después de 9 minutos ----------

no habia visto el esquema pero te recomiendo que pongas resistencias pull-Down en portA... y resistencias limitadoras a los leds
20/05/2012 #2011

Avatar de inspector gadget

Hola lubeck, mil gracias por tu respuesta, pero lo que pretendo es prender y apagar un conjunto de 8 leds dispuestos en el puertoB con 8 pulsadores dispuestos en el puerto A, pero independientemente. osea con un pulso en A0 se debe ENCENDER el led en B0 y se debe mantener n ese estado hasta que con otro pulso en A0 se debe APAGAR el led en B0. con un pulso en A1 se debe ENCENDER el led en B1 y mantener ese estado hasta que, con otro pulso en A1 se debe APAGAR el led en B1 y asi consecutivamente para poder controlar 8 leds con 8 pulsadores pero independientemente el encendido y apagado. Eso es exactamente lo que hace el codigo que posteo, pero solo he logrado que me funcione con una sola pareja pulsador_led y esa misma funcion quiero 8 veces repetirla y no se como hacerlo a partir de la ultima linea, o como puedo trabajar sobre otro codigo para lograr ese objetivo. mil gracias por su tiempo muchachos
Archivos Adjuntos
Tipo de Archivo: zip LED+ PULSADORES.zip (15,4 KB (Kilobytes), 78 visitas)
20/05/2012 #2012


y.... ya probaste el codigo que puse y no funciono... o estas suponiendo que no funciona?...

p.d. por cierto lo edite en la ultima linea ...
20/05/2012 #2013

Avatar de inspector gadget

Si ya lo probe, y lo que hace es que con un pulso en A0 enciendeB0 pero si vuelvo a presionar el mismo pulsador, el led no se apaga, solo se apaga A0 si presiono el pulso en A1 . la funcion debe ser identica a la que se simula con el codigo que posteo y no se como repetirlo 8 veces, a proposito no se porque al comenzar la simulacion de mi codigo aparecen encendidos leds que no tienen por que estar encendidos solo se apagan si presiono el pulso en A0 y de ahi en adelante el circuito sigue funcionando perfectamente. sera problema de configuracion de fuses ya que estoy usando el 16F628A?
20/05/2012 #2014


si funciona tienes mal algo en el esquema... creo que el nombre es muy largo...

Recuerda excepto en el sexo las cosas pequeñas son mejores
Archivos Adjuntos
Tipo de Archivo: rar on off 16f628a 8CH.rar (14,6 KB (Kilobytes), 107 visitas)
21/05/2012 #2015
Moderador

Avatar de D@rkbytes

inspector gadget dijo: Ver Mensaje
Si ya lo probe, y lo que hace es que con un pulso en A0 enciendeB0 pero si vuelvo a presionar el mismo pulsador, el led no se apaga, solo se apaga A0 si presiono el pulso en A1 . la funcion debe ser identica a la que se simula con el codigo que posteo y no se como repetirlo 8 veces, a proposito no se porque al comenzar la simulacion de mi codigo aparecen encendidos leds que no tienen por que estar encendidos solo se apagan si presiono el pulso en A0 y de ahi en adelante el circuito sigue funcionando perfectamente. sera problema de configuracion de fuses ya que estoy usando el 16F628A?
Saludos inspector gadget, saludos lubeck.

Aquí les dejo un ejemplo de como lo haría yo.
Espero te sirva inspector, para lo que deseas hacer.

Suerte.
Archivos Adjuntos
Tipo de Archivo: rar TOGGLE_8.rar (17,3 KB (Kilobytes), 135 visitas)
21/05/2012 #2016


Hola Dark....

aprovechando que me acorde del PBP 5.0...

Oye... has compilado ejercicios con el 18F4550?, yo no he podido, me sale esto...
Imágenes Adjuntas
Tipo de Archivo: jpg Dibujo.JPG (46,1 KB (Kilobytes), 30 visitas)
21/05/2012 #2017
Moderador

Avatar de D@rkbytes

lubeck dijo: Ver Mensaje
Hola Dark....

aprovechando que me acorde del PBP 5.0...

Oye... has compilado ejercicios con el 18F4550?, yo no he podido, me sale esto...
Saludos lubeck.
Me parece que si he realizado algún ejemplo USB con ese PIC
Dejame buscarlo entre mi desorden y lo posteo, no recuerdo bien si era para el 18F4550
pero creo que si logre solucionar ese detalle que mencionas.

Ahh! y es PBP3 y MCS5
21/05/2012 #2018




Ahh! y es PBP3 y MCS5
cierto!...


oki... con lo del 4550, te lo agradeceria porque yo lo he intentado pero no he tenido exito...
21/05/2012 #2019

Avatar de inspector gadget

Buenos dias, estoy muy agradecido por el aporte que lubeck anoche mismo me sugirio y que fue la solucion, pense que obviando las R pull-Down y las limitadoras para los leds aunque fuera solo para la simulacion, no me crearia problemas, pero eso era lo que no me permitia que el circuito trabajara como sugirio lubeck, y aunque el efecto que presentaba era interesante, no era lo que estaba necesitando por el momento. Un saludo cordial a Dark, que tambien se ocupo de echarme una mano en la solucion y su codigo tambien funciona a la perfeccion. Lo que me apasiona de la programacion es precisamente que se puede obtener el mismo resultado por diferentes caminos, y ya entendi la aplicacion practica de toggle y voy a seguirla utilizando mas a menudo sin tantas complicaciones, Leccion aprendida, ojala y algun dia llegue a ser tan bueno como ustedes y pueda aportarle a alguien que lo necesite. mil y mil gracias a los dos.
Tenias razon lubeck.. no porque algo sea pequeño, significa que no sea importante...jajaja
21/05/2012 #2020


no era lo que estaba necesitando por el momento
y entonces cual es???


Lo que me apasiona de la programacion es precisamente que se puede obtener el mismo resultado por diferentes caminos
en realidad no se obtiene lo mismo, en el codigo que te puse usa el pause lo que yo para nada recomiendo usar, ni los ciclos determinados o trampas como el while:wend,la mejor funcion a utilizar es el button porque esa no pausa el micro... pero yo no te la sugeri porque no es muy facil de entender y quizas te complicaria mas y para esa aplicacion pues no es imperativo el tiempo....
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.