Curso de programación de PIC en PICBasic Pro

Reyvilla dijo:
Hola ferdy575, te recomiendo empezar de cero el código ya que a mi parecer te estas complicando mucho al utilizar la interrupción de esa manera, me explico, para que utilizar interrupción para descrementar 3 variables en el loop de interrupción si puedes con una sola hacer lo mismo en el loop principal.

Hola Reyvilla gracias por responder, a ver te cuento compile el código como tú lo reformaste pero igual no me funciona:confused:, no se por que al pulsar el botón segundos no me avanza y sí de pronto lo hace cuando llega a cero sigue titilando entre cero y uno como sí quisiera volver a avanzar, quisiera que al llegar a cero simplemente quede detenido, ó algunas veces retrocede los segundos empezando desde 99, tampoco he podido encontrar la forma de usar un botón de arranque de conteo o START, en resumidas cuentas un caos total:enfadado: por fa ayudame. Lo que etoy tratando de hacer es un temporizador para el horno de la estufa de mi esposa que es aficionada a hacer tortas así podria programar el tiempo de horneado y que el horno se apague cumplido el tiempo
Gracias
 

Adjuntos

  • temporizador 16f84a.rar
    29.8 KB · Visitas: 109
Última edición:
ok una forma sencillas es si revisas que cambie y que cambio hay, no te hice todo, mejore el código, mas aun le falta, si notaste ya decrementa de 59 a 0. Dame un chance y en la tarde revisó
de nuevo...Saludos
 
Hola que tal, gracias por su ayuda, he hecho unas pequeñas correcciones al código y ya quedo al 100%. Aquí les dejo el código.

DEFINE ADC_BITS 8 ' Set number of bits in result
DEFINE ADC_CLOCK 3 ' Set clock source (rc = 3)
DEFINE ADC_SAMPLEUS 50 ' Set sampling time in microseconds
R VAR BYTE
trisb=0
Portb=0
'Trisa=1
Trisa= 255 ' Set PORTA to all input
ADCON1 = 2 ' PORTA is analog

inicio:

ADCIN 0, R' Read channel 0 to B0
Portb=R
GOTO inicio

END


salu2
 
ok una forma sencilla es si revisas que cambie y que cambio hay, no te hice todo, mejore el código, mas aun le falta, si notaste ya decrementa de 59 a 0. Dame un chance y en la tarde revisó
de nuevo...Saludos

Bien:apreton: hice lo que dices y ya logre hacer el start el stop y un clear pero sigo sin lograr el correcto conteo regresivo sigo sin poder encontrar donde estará el error:enfadado:
aquí subo el archivo con todas las modificaciones que he hecho a ver como me puedes ayudar.
 

Adjuntos

  • temporizador 16f84a.rar
    31 KB · Visitas: 95
Última edición:
Saludos ferdy575
Hace unos meses hice un timer descendente programable hasta 60 minutos.
No usa interrupciones y según recuerdo no es muy exacto.
Pero para conteos donde no se requiere mucha precisión, este timer funciona bien.
Tiene la opción de guardar el conteo deseado en la eeprom del pic,
para no estarlo estableciendo cada vez que se use el timer.

Lo adjunto, quizas te puede servir.

Edit:
No había visto que existe un bug en el programa en la parte donde se escribe en la memoria.
Esta es la corrección que hay que hacer...
Código:
BUTTON pb_EE,0,255,0,B0,0,Here
WRITE 0,Total
LCDOUT $FE,$C0,DEC2 Total,"MIN. EN EEPROM"
PAUSE 2000
LCDOUT $FE,1," TIMER INACTIVO" ; <--- Agregar este código
LCDOUT $FE,$C3,DEC2 Total," MINUTOS"
Suerte.
 

Adjuntos

  • Timer Programable.rar
    24.7 KB · Visitas: 205
Última edición:
Saludos ferdy575
Hace unos meses hice un timer descendente programable hasta 60 minutos.
No usa interrupciones y según recuerdo no es muy exacto.
Pero para conteos donde no se requiere mucha precisión, este timer funciona bien.
Tiene la opción de guardar el conteo deseado en la eeprom del pic,
para no estarlo estableciendo cada vez que se use el timer.

Lo adjunto, quizas te puede servir.

Edit:
No había visto que existe un bug en el programa en la parte donde se escribe en la memoria.
Esta es la corrección que hay que hacer...
Código:
BUTTON pb_EE,0,255,0,B0,0,Here
WRITE 0,Total
LCDOUT $FE,$C0,DEC2 Total,"MIN. EN EEPROM"
PAUSE 2000
LCDOUT $FE,1," TIMER INACTIVO" ; <--- Agregar este código
LCDOUT $FE,$C3,DEC2 Total," MINUTOS"
Suerte.

gracias esta super tu temporizador pero no le puedo programar segundos no entiendo muy bien como funciona tu programa
 
gracias esta super tu temporizador pero no le puedo programar segundos no entiendo muy bien como funciona tu programa
De nada ferdy. (y)
Bien, pues ese timer lo hice para probar una rutina de retardos que hice hace para otro programa.
Se me hace que lo complique mucho :LOL:
Después de ese empecé a programar otro de manera diferente y ya no lo termine.
Déjame ver si lo puedo terminar pronto y lo posteo.

Suerte.
 
hola!

recientemente me he topado con un problema que creo poder solucionar aunque me gustaria contar con
vuestra ayuda.

Estoy haciendo prácticas con las interrupciones y tal ( algo liosas XD) y me ha surgido un pequeño problema porque tengo un circuito al que quiero añadir un encoder incremental para hacer las veces de un
pulsador.

La cosa está en que creía que la conexión y el software sería parecido al de un pulsador normal pero me estoy dando cuenta que no.
Alguien me habló de usar las interrupciones y tal...

Podrían darme algún consejo, ayuda o fragmento de programa?

Gracias de antemano!!!
 
hola!

recientemente me he topado con un problema que creo poder solucionar aunque me gustaria contar con
vuestra ayuda.

Estoy haciendo prácticas con las interrupciones y tal ( algo liosas XD) y me ha surgido un pequeño problema porque tengo un circuito al que quiero añadir un encoder incremental para hacer las veces de un
pulsador.

La cosa está en que creía que la conexión y el software sería parecido al de un pulsador normal pero me estoy dando cuenta que no.
Alguien me habló de usar las interrupciones y tal...

Podrían darme algún consejo, ayuda o fragmento de programa?

Gracias de antemano!!!

Yo he utilizado el timer como contador, el modulo de captura CCP para contar los pulsos de un encoder incremental

mira este post https://www.forosdeelectronica.com/posts/486259/

espero hoy o mañana postear la versión mas actualizada con PID ya casi listo
donde utilizo un PIC con un modulo QEI (modulo para encoder incrementales)
es el 18f4431

Autotronico si andas por ahí espero mires el siguiente proyecto con el 18f4431
 
Hola a todos, bueno les cuento que ya logre el correcto conteo regresivo, ya me funcionan correctamente los botones clear, stop y el start y ya puedo programar independientemente las horas minutos y segundos, "Pero" tengo un pequeño error que no logro descifrar:enfadado: quizá uds. me puedan ayudar. resulta que el contador al llegar a 15:01:59 independientemente de la hora que puede ser inferior o superior se resetea y empieza nuevamente en 23:59:59 adicionalmente no logro que llegue a las 00:00:00 horas para que se dispare la alarma, aquí les subo los archivos a ver sí logran descifrar mi error y les agradezco su colaboración(y)
 

Adjuntos

  • temporizador 16f84a.rar
    30.6 KB · Visitas: 107
Hola ferdy575, estoy de nuevo por aca, debido a un problema personal no habia vuelto a participar, te comento, revise tu circuito y codigo, el problema esta en que le indicaste que si llega a 00 entonces el valor de minutos es igual a 59, no existe la condicion si minutos es menor a 0 ese es un detalle importante, por otro lado, yo realice un temporizador programable esta aqui https://www.forosdeelectronica.com/posts/344467/ revisalo y me avisas
 
Última edición:
Hola ferdy575, estoy de nuevo por acá, debido a un problema personal no había vuelto a participar, te comento, revise tu circuito y código, el problema esta en que le indicaste que si llega a 00 entonces el valor de minutos es igual a 59, no existe la condición si minutos es menor a 0 ese es un detalle importante, por otro lado, yo realice un temporizador programable esta aquí https://www.forosdeelectronica.com/posts/344467/ revisalo y me avisas

hola, gracias por revisar mi circuito bueno te cuento reforme la rutina de "TIEMPO" y quedo así:

;TIEMPO
Retro:
pulsos = 0
if hrs < 00 then
hrs = 23
endif
IF Mts < 00 AND hRS => 00 THEN
hrs = hrs - 1
Mts = 59
ENDIF
IF Sds < 00 AND Mts => 00 then
Mts = Mts - 1
Sds = 59
endif
if sds < 00 then
sds = 59
endif
Sds = Sds - 1
Disp = 1
RETURN

pero no obtuve resultados favorables por el contrario se vuelve loco el conteo y no se porque lo segundos me estan empezando en 99 y al llegar a 00 no descuentan el minuto, y los minutos al llegar a 00 resetean el conteo, no descuentan la hora y no llega nunca al 00:00:00 para que se dispare la alarma y se detenga el conteo al mismo tiempo; no se que sera lo que tiene mal hecho mi codigo a ver sí me puedes ayudar, lo que quiero es hacer un temporizador donde pueda programar tiepos exactos incluyendo programar hasta lo segudos para que sea un temporizador multiusos, aqui subo de nuevo el temporizador y gracias de antemano
 

Adjuntos

  • temporizador2 16f84a.rar
    31.8 KB · Visitas: 98
Última edición:
Yo he utilizado el timer como contador, el modulo de captura CCP para contar los pulsos de un encoder incremental

mira este post https://www.forosdeelectronica.com/posts/486259/

espero hoy o mañana postear la versión mas actualizada con PID ya casi listo
donde utilizo un PIC con un modulo QEI (modulo para encoder incrementales)
es el 18f4431

Autotronico si andas por ahí espero mires el siguiente proyecto con el 18f4431

No entiendo demasiado lo que quiere decir.

Podrian concretar un poco en el apartado del encoder?

Gracias
 
hola a todos, de nuevo por este lado y con el mismo trabajo, no logro descifrar que tengo mal en mi código, a ver sí alguien logra dar con este error y me ayuda para ver cual es el problema, aquí subo nuevamente el archivo para que lo puedan ver y verificar le he hecho miles de reformas linea por linea y no logro que funcione como debe ser, les agradezco su colaboración:apreton:
 

Adjuntos

  • temporizador3 16f84a.rar
    31.8 KB · Visitas: 90
hola gente, yo por aqui de nuevo. bueno, hace tiempo no le daba bolilla pero, de repente se me dio la idea de crear una consola midi para controlar el virtual dj desde afuera programando un pic con pic basic. aqui en el foro, hay una que hizo el amigo fernandoae pero sinceramente no entiendo nada :D . bueno, la idea es crear una interface para coectar en el puerto serial por ahora, ya que tengo experiencia en conectar un pic al puerto y leerlo en la pc, pero de lo que no tengo idea es, como hacer para vincular el vdj con el pic mediante el puerto serie. ¿alguno de uds me tira una idea como para ir probando? aunque sea unas cuantas liniesitas que me den una idea, o un diagrama de bloques... ¿me ayudan? saludosss
 
Hola amigos!

Estoy elaborando un proyecto que se trata de un reloj calendario con el 16f84a, una lcd y el ds1307, estuve mirando el post #84 que publico cesar_8k en este mismo tema, en el cual me base para adaptarlo al 16f84a y q solo muestre la hora. Pero tengo dos problemas el primero es que se me cuelga el conteo en un momento determinado y el otro es que no logro hacer funcionar los botones para modificar la hora, revise el codigo una y otra vez pero no he dado con los errores.

les pido una ayuda para ver que no estoy tomando encuenta. :unsure:

les agradezco su colaboracion!
:apreton:

les adjunto el codigo en basic y la simulacion en proteus
 

Adjuntos

  • RELOJ.rar
    34 KB · Visitas: 100
hola a todos, de nuevo por este lado y con el mismo trabajo, no logro descifrar que tengo mal en mi código, a ver sí alguien logra dar con este error y me ayuda para ver cual es el problema, aquí subo nuevamente el archivo para que lo puedan ver y verificar le he hecho miles de reformas linea por linea y no logro que funcione como debe ser, les agradezco su colaboración:apreton:

Hola de nuevo veo que sigues sin avanzar mucho, te diria que utilizaras una rutina mas faltible, me explico no "EXISTE" osea no creo que eso exista ni lo entienda el compilador, un "NUMERO", menor a "0", osea no puede hacer esto:

Código:
IF hrs < 0 or Mts < 0 or Sds > 0 THEN   'Ojo sí cambiamos esta función no funciona el conteo
pulsos = pulsos + 1
IF pulsos < 61 THEN NoUpdate
endif

No manejas números negativos para un temporizador, osea como puedes descontar el tiempo, osea que llega a 0 minutos y continua a -1 minutos, no lo creo, no lo veo lógico, por eso te comentaba que tienes lo de menor que 00, Si no funciona en conteo sin esa función es por que tiene que ser 00, no menor a 00. Ahora te subo un ejemplo de como puedes decontar un numero con el incremento del temporizador de tiempo real del microcontrolador...Saludosss :estudiando:



Hola amigos!

Estoy elaborando un proyecto que se trata de un reloj calendario con el 16f84a, una lcd y el ds1307, estuve mirando el post #84 que publico cesar_8k en este mismo tema, en el cual me base para adaptarlo al 16f84a y q solo muestre la hora. Pero tengo dos problemas el primero es que se me cuelga el conteo en un momento determinado y el otro es que no logro hacer funcionar los botones para modificar la hora, revise el codigo una y otra vez pero no he dado con los errores.

les pido una ayuda para ver que no estoy tomando encuenta. :unsure:

les agradezco su colaboracion!
:apreton:

les adjunto el codigo en basic y la simulacion en proteus

Hola amigo, vi tu código y tu circuito, el problema lo tienes en la configuración de los puertos del microcontrolador, si en el esquema vas a utilizar por ejemplo el pin 1 del puerto b como entrada para el botón up, en el código debes conservar la misma configuración, ya que de lo contrario no te va a funcionar...saludosss:apreton:
 
Última edición:
Hola de nuevo veo que sigues sin avanzar mucho, te diria que utilizaras una rutina mas faltible, me explico no "EXISTE" osea no creo que eso exista ni lo entienda el compilador, un "NUMERO", menor a "0", osea no puede hacer esto:

Código:
IF hrs < 0 or Mts < 0 or Sds > 0 THEN   'Ojo sí cambiamos esta función no funciona el conteo
pulsos = pulsos + 1
IF pulsos < 61 THEN NoUpdate
endif

No manejas números negativos para un temporizador, osea como puedes descontar el tiempo, osea que llega a 0 minutos y continua a -1 minutos, no lo creo, no lo veo lógico, por eso te comentaba que tienes lo de menor que 00, Si no funciona en conteo sin esa función es por que tiene que ser 00, no menor a 00. Ahora te subo un ejemplo de como puedes decontar un numero con el incremento del temporizador de tiempo real del microcontrolador...Saludosss :estudiando:
hola reyvilla, gracias por revisar mi proyecto, tienes razón voy a buscar más información a ver como cambio esta rutina para ver sí logro hacer que me funcione el temporizador:apreton:
 
Buenas... consulta... alguie vio en "este topico" algun ejemplo de como crear algun GAMEPAD? Me parecio ver algo pero no lo encuentro... Basicamente estoy buscando un ejemplo de como realizarlo un GAMEPAD de 3 ejes analogicos y 6 u 12 pulsadores (en PBP)... Dario, se me ocurrio que esta es la manera mas sencilla de crear la consola pàra el virtual Dj... vistes que hay ejemplo de como crear una consola implementando un GAMEPAD comercial y un software para re definir las funciones de cada pulsador? Bueno, se me ocurre que con esto lo hacemos mucho mas personalizado, ya que contariamos con 3 ejes analogicos para el volumen de cada canal y el fader.... los pulsadores serian para "play-stop-cue" y el resto a definir (efectos-sampler-etc)... Que te parece la idea?
 
me parece buena tu idea, la cosa seria conseguir algunas lineas de codigo que nos puedan dar una idea de como hacerlo, porque la verdad, ami no se me ocurre nada todavia... :D el otro dia en una busqueda que hice encontre estos joystcks caseros. tengo que experimentarlos todavia

gameporte5sy.jpg
wiringgj9.jpg
Image%2018.jpg

saludosss
 
Atrás
Arriba