desktop

Curso de programación de PIC en PICBasic Pro

Exelente torres, ¿asi que con este circuito podes grabar audio en una memoria 24cxx mediante un pic? porque si es asi, seria genial!!! ;)(y) saludosss
 
...hay que parcharlo para que no quede en solo pura chachara jajaja...esa idea que da Reimy es buena, pero hay qeu llevarlo a la practica... Yo calculo que con lo lento que es PBP, no se va poder reproducir asi; Yo creo que habria que guardarlo en la memoria ecxterna, y antes de reproducir, implementar espacios de memoria temporal para almacenar estos registros y recien despues de tener todos esos bits, reproducirlos... Igualmente estamos hablando de..1,5segundos casi 2...
Igualmente, de la idea a la practica hay un largo trecho... hay bastantes cosas por ver, probar etc etc

Edit:
Yo tengo un ejemplo completo en microbasic para trabajar esto mismo con una memoria 24cXXX y sacar el sonido por pwm; Pero no puedo llevar un codigo al otro, ya que trabaja con una variable tipo integer y justamente se me desbordo la memoria de tanto pensar como trabajar el punto flotante jajajaja.

var_integer.png

No se si seria desvirtuar el tema, pero si Ricardo quiere y le parece buena idea para modificar, subo todo (archivo para convertir archivo WAV en 8bits para subir a la memoria - codigo de fuente - circuito - pcb) y arrancamos con la re-interpretacion del codigo, que en un 90% es muy similar a PBP
 
Última edición:
che, estaria bueno hacer algo asi con pic... no por hacerse un reproductor de mp3, sino porque sacar sonido con pic, podria servir para poner voz a un robot por ejemplo, o a un sistema automatizado, alarma etc etc... ya se que hay intgrados especificos para eso, pero en mi caso, no he podido encontrar por ejemplo, ni el ISD1100, que ya tiene como 20 años en el mercado y esto seria un buen reemplazo... saludosss
 
Dario hay bastantes modulos ya prefabricados e integrados de muy buena calidad y a un precio mas bajo que un pic. no vale la pena perder el tiempo, un PIC no fue diseñado para eso.

como bien dijo torres.electronico que si solo es por aprender y el tiempo y dinero no es limitante, si estaria bueno.
 
Es porque te falta agregar la palabra de configuración, si no la pones el compilador establece una por defecto con oscilador a cristal.

Es por eso que los pines RA6 y RA7 al estar configurados para usar oscilador a cristal, no funcionan.
Si no declaras los bits de configuración en tu programa, también lo puedes hacer en tu programador de PIC's, pero es muy importante que siempre uses una palabra de configuración.

Usa esta palabra de configuración y colócala en la cabecera del programa (Hasta arriba del código)

Código:
[COLOR=Green][B]@ Device [/B][/COLOR][B]INTRC_OSC_NOCLKOUT, WDT_OFF, MCLR_OFF, PWRT_ON, BOD_OFF, LVP_OFF[/B]
También es importante que declares la frecuencia de trabajo.
Define OSC 4
Aunque en este caso al usar el oscilador interno que en el PIC16F628A es de 4MHz, el compilador también por defecto establece esta frecuencia.

Suerte.

Gracias por responder D@rkbytes, resulta que ya le habia colocado que utilizara el osc interno y apagado el mclr y el bod y aun asi no trabajan esas 2 salidas, adjunto el ejercicio y tambien otro ejercicio de solamente el puerto A, donde si funcionan esas 2 salidas y no veo diferencia.
Saludos.
 

Adjuntos

  • ejercicio.rar
    40.9 KB · Visitas: 47
Dario hay bastantes modulos ya prefabricados e integrados de muy buena calidad y a un precio mas bajo que un pic. no vale la pena perder el tiempo, un PIC no fue diseñado para eso.

como bien dijo torres.electronico que si solo es por aprender y el tiempo y dinero no es limitante, si estaria bueno.

Dario, un pic 16FXX y una memoria 24CXXX creoq ue ronda los 40-50 mangos? y el ICD creo que ronda los 280 pesitos... dejá...te paso porprivado las cosas asi achicamos comentaris que no tienen idea sobre el tema
 
Gracias por responder D@rkbytes, resulta que ya le había colocado que utilizara el osc interno y apagado el mclr y el bod y aún así no trabajan esas 2 salidas, adjunto el ejercicio y también otro ejercicio de solamente el puerto A, donde si funcionan esas 2 salidas y no veo diferencia.
Saludos.
Si hay diferencia y precisamente es lo que te mencioné anteriormente.
En el programa (Secuencia.pbp) tienes la palabra de configuración para usar oscilador interno, pero no está bien escrita y no permite compilarse.

El archivo Secuencia.hex tiene configuración con oscilador a cristal y así no va a funcionar.
El otro programa (juego de luces puerto A.pbp) también tiene la palabra de configuración para usar oscilador interno, también mal escrita pero el archivo ejecutable juego de luces puerto A.hex si está configurado para trabajar con oscilador interno y es por eso que ese programa si funciona.

Corrige eso porque de otra manera seguirá sin funcionar.
Ya te dije como hacerlo y así es cómo lo debes hacer.
Si quieres poner los bits de la palabra de configuración separados, no importa, pero separa las palabras.

Suerte.
 
No sé si sería desvirtuar el tema, pero si Ricardo quiere y le parece buena idea para modificar, subo todo (archivo para convertir archivo WAV en 8bits para subir a la memoria - código de fuente - circuito - pcb) y arrancamos con la re-interpretación del código, que en un 90% es muy similar a PBP
No hay ningún problema, aquí de lo que se trata es de aprender y difundir la información.
Si el código será realizado en PICBasic Pro, no hay ningún inconveniente de que sea posteado sobre este tema.

Será parte de los muchos otros ejemplos que han beneficiado a muchas personas y me parece muy bien.

Saludos.
 
Si hay diferencia y precisamente es lo que te mencioné anteriormente.
En el programa (Secuencia.pbp) tienes la palabra de configuración para usar oscilador interno, pero no está bien escrita y no permite compilarse.

El archivo Secuencia.hex tiene configuración con oscilador a cristal y así no va a funcionar.
El otro programa (juego de luces puerto A.pbp) también tiene la palabra de configuración para usar oscilador interno, también mal escrita pero el archivo ejecutable juego de luces puerto A.hex si está configurado para trabajar con oscilador interno y es por eso que ese programa si funciona.

Corrige eso porque de otra manera seguirá sin funcionar.
Ya te dije como hacerlo y así es cómo lo debes hacer.
Si quieres poner los bits de la palabra de configuración separados, no importa, pero separa las palabras.

Suerte.

Que tal D@rkbytes, resulta que sigue igual yo he colocado los bits separados de las palabras y a la hora de compilar me genera errores en el pic basic pro 2.5, cuando lo escribo pegado como esta en mi ejemplo si me deja compilar pero las salidas RA6 y 7 no se activan, esto sucede en proteus, ya cuando cargo el .hex en el programador en los fuses escojo osc_RC INT y en la protoboard si funciona bien, encendiendo eso 2 puertos.
Gracias.
Saludos.
 
No hay ningún problema, aquí de lo que se trata es de aprender y difundir la información.
Si el código será realizado en PICBasic Pro, no hay ningún inconveniente de que sea posteado sobre este tema.

Será parte de los muchos otros ejemplos que han beneficiado a muchas personas y me parece muy bien.

Saludos.

Excelente!!! bueno, acá esta el archivo... Yo arranque algo y ahora estoy buscando las librerias para entender un poquito mas el programa que esta en microbasic... Lei un poquito dos pdf sobre este lenguaje y no lo vi muy dificil; Mas para lo que ami me importa (traducir de Mbasic a PBP).
En la simulacion de proteus, tengan en cuenta que para cargar el archivo en la memoria, no los va dejar... no cambien el formato del archivo "PIC"... solo coloquen las dos priemeras letras del archivo y aparecera magicamente para seleccionarlo.
en el protoboard, se defiende un poco mejor que en proteus jajajajaja... Bueno, veamos que se puede hacer en conjunto... Ahi encontre mas ejemplos VIEJISIMOS de gente que implemento basic para reproducir archivos WAV... se ve que nunca habia implementado algunos tag y ahora aparecen como magia, en fin... Arranquemos con una interpretacion, y luego lo traducimos al PBP...saludos
 

Adjuntos

  • reproductor_16F88_sonido.rar
    365.7 KB · Visitas: 71
¿Qué tal D@rkbytes? Resulta que sigue igual, yo he colocado los bits separados de las palabras y a la hora de compilar me genera errores en el pic basic pro 2.5
Sip, debes actualizar la versión de PBP que estás usando, esa ya tiene mucho tiempo y han habido algunas mejoras con versiones más recientes.

En este momento ya se está usando la la versión 3.xx con MicroCode Studio 5.xx
Me parece que la más actual que se produjo para PBP 2.xx fue la 2.60C

Actualízate a esa versión para que puedas compilar tus programas sin problemas.

Suerte.
 
hola gente estoy usando un circuito que pastearon y estoy tratando de adaptarlo para realizar dos cuantas independientes con un solo pic 16f628a para un marcador deportivo y no encuentro la falla. La verdad que la función ShiftOut no la conozco bien pero seria para especificar el clock (scl) y dato (sda). en fin seguiré intentando dejo la simulación en proteus y el pbp.uno de los contadores anda bien pero el otro no,y allí es donde nose cual es mi error, espero alguien lo encuentre antes que yo bien lo tenga todo funcionando lo subo. gracias
 

Adjuntos

  • marcador futbol.rar
    19 KB · Visitas: 44
Hola gente. Estoy usando un circuito que postearon y estoy tratando de adaptarlo para realizar dos cuentas independientes con un sólo pic16f628a para un marcador deportivo y no encuentro la falla.
La verdad que la función ShiftOut no la conozco bien pero sería para especificar el clock (scl) y dato (sda).
Mira este proyecto que adjunto, es más sencillo qué el que quieres modificar.
También usa un PIC16F628A y dos 74LS48 para controlar 4 displays de siete segmentos con cátodo común.

El proceso de visualización se lleva a cabo por sistema multiplex.

No lo he probado físicamente "Lo desarrollé en un momento de ocio" pero lo más probable es que si funcione.

Suerte.
 

Adjuntos

  • 16F628A Marcador de Fútbol.rar
    46.1 KB · Visitas: 109
Última edición:
Nano, mirá...aca te subo la simu completa con todos los archivos... En la simulacion, tenes 3 capturas del osciloscopio... fijate que la señal o canal amarillo, es la señal analogica entrante... la del medio convertida y la ultima, la salida del DAC...
Ver el archivo adjunto 114257
En un rato vuelvo con lo que me comento reymi alguna ves para complementar el mensaje y el tema

edit: acá subo parte de lo que alguna ves hablamos con Reimy sobre este proyecto

Bastante interesante lo que has hecho :aplauso: muchas gracias por el aporte amigo, investigando un poco tambien, ya que me gusta la programacion en Arduino, mira lo que consegui.

 
Hola a todos!!!...En este tutorial de proton post#28
el compañero byker2k3 escribio lo siguiente:

"pedasito de codigo que use para generar una portadora de 38Khz 50% Duty con un PIC12f683"

TRISIO.2 = 0 ' CCP1 (GPIO.2 = Output)
PR2 = 25 ' Set PWM Period for approx 38KHz
CCPR1L = 13 ' Set PWM Duty-Cycle to 50%
CCP1CON = %00001100 ' Mode select = PWM
T2CON = %00000100 ' Timer2 ON + 1:1 prescfale

Yo utilizare el clasico PIC16F628A...

Ok...Mi duda es la siguiente: He observado en otros posts que al hacer esta practica activan dos pines uno para SALIDA PWM que en este caso seria (GPIO.2=Out) y otro pin cualquiera para habilitar los pulsos del Led Infrarrojo o Modulacion del Led Infrarrojo es cierto esto?
Alguien que haya trabajado con leds infrarrojos me puede corrobar esto por favor
Si es cierto esto entonces tengo que puentear el Led Infrarrojo con el otro pin que yo habilite claro con su respectiva resistencia?
Entonces si habilito el otro pin donde voy a conectar el otro extremo tengo que manejarlo en estado logico 1 y estado logico 0? es correcto? o estoy errando haber si alguien me puede sacar de estas dudas Gracias...
 
cosmico74 dijo:
Yo utilizaré el clásico PIC16F628A...

Ok. Mi duda es la siguiente: He observado en otros posts que al hacer esta practica activan dos pines uno para SALIDA PWM que en este caso seria (GPIO.2=Out) y otro pin cualquiera para habilitar los pulsos del Led Infrarrojo o Modulación del Led Infrarrojo es cierto esto?
Alguien que haya trabajado con leds infrarrojos me puede corroborar esto por favor
Si es cierto esto entonces tengo que puentear el Led Infrarrojo con el otro pin que yo habilite claro con su respectiva resistencia?
Entonces, si habilito el otro pin ¿dónde voy a conectar el otro extremo tengo que manejarlo en estado lógico 1 y estado lógico 0? ¿Es correcto o estoy errando?
A ver si alguien me puede sacar de estas dudas.
Gracias.
El PIC16F628A no tiene puerto GPIO, el pin de salida HPWM es por el pin 9 (RB3 o PORTB.3)

Y sip, puedes usar el pin de salida de PWM para controlar la base de un transistor NPN, con el pin de salida de pulsos controlas el emisor y colocas los LED's en colector.

Así lo he hecho yo enviando comandos RS-232 sobre una portadora de 38KHz.

Y para que este método funcione se tienen que enviar los datos invertidos.

Suerte.
 
Gracias DarkBytes por contestar tan rapido bueno en si lo que quiero hacer es mandar datos,info,etc. de un pic a otro pic via Infrarrojos con Serout,Serin.,etc.,utilizando logicamente PicBasicPro(PBP) y bueno pues...tocaste mi gran duda dices que:

"EL pin de salida HPWM es por el pin 9 (RB3 o PORTB.3)
Y sip, puedes usar el pin de salida de PWM para controlar la base de un transistor NPN,
con el pin de salida de pulsos controlas el emisor y colocas los LED's en colector.
Así lo he hecho yo enviando comandos RS-232 sobre una portadora de 38KHz.
Y para que este método funcione se tienen que enviar los datos invertidos."

1.-Cuando dices que con el pin de salida controle los pulsos del emisor,¿como lo interpreto o como lo manejo?
puede ser cualquier pin?,¿que se supone que debe de hacer este pin de salida o que estados debe de tomar?esa es mi duda haber si me la puedes resolver.

2.-Y dices para que este método funcione se tienen que enviar los datos invertidos.
osea puedo utilizar el sig.circuito en el lado del Receptor:









DarkBytes haber si pudieras subir un ejemplito o un extracto de programa de la pregunta numero 1 donde manipulas el pin pwm y el pin de pulsos para el control del Led_IR.Gracias...
 

Adjuntos

  • 2fig8.gif
    2fig8.gif
    2.9 KB · Visitas: 23
Gracias D@rkbytes por contestar tan rápido.
Bueno, en sí, lo que quiero hacer es mandar datos, info, etc. de un pic a otro pic via Infrarrojos con Serout, Serin., etc. utilizando lógicamente PicBasic Pro (PBP) y bueno pues, tocaste mi gran duda, dices qué:

1.-Cuando dices que con el pin de salida controle los pulsos del emisor.
¿Cómo lo interpreto o cómo lo manejo?
¿Puede ser cualquier pin? ¿Qué se supone que debe de hacer este pin de salida o que estados debe de tomar?
Esa es mi duda, a ver si me la puedes resolver.

2.-Y dices para que este método funcione se tienen que enviar los datos invertidos.
O sea, ¿puedo utilizar el siguiente circuito en el lado del receptor?

D@rkbytes, a ver si pudieras subir un ejemplito o un extracto de programa de la pregunta numero 1 dónde manipulas el pin PWM y el pin de pulsos para el control del LED IR.
Gracias.
Respuesta a pregunta 1:
Si puedes utilizar cualquier pin que sea salida para controlar al emisor del transistor.
Y esto es posible ya que se puede generar RS-232 por software.
Este pin será la salida de datos RS-232 que controlará al emisor con pulsos negativos.
Como se debe usar PWM por hardware para generar la portadora, el pin de salida es por RB3 (CCP1)
Esta señal de 38KHz. se ingresa a la base del transistor y será la que porte la información.

Respuesta a pregunta 2:
Sip, esa es la configuración, pero se realiza la modulación por el emisor.
Y he aquí un dato curioso:
Cuando yo realicé ese proyecto con RS232 por infrarojo, lo hice en C.
Al hacer el ejemplo en PBP la cosa cambió, ya no fue necesario invertir la transmisión.

Aquí está el ejemplo, no tiene mucho alcance y posiblemente exista un mejor método.
En realidad yo únicamente necesitaba una comunicación de pocos centímetros, pero te dará una idea.

Nota:
El post fue movido aquí, ya que mencionas que usarás PICBasic Pro y estaba en un tema de Proton IDE.

Suerte.
 

Adjuntos

  • 16F628A Comandos RS-232 por IR.rar
    135.7 KB · Visitas: 92
Última edición:
Atrás
Arriba