Curso de programación de PIC en PICBasic Pro

Nano, buscale la manera de guardarlo en la eeprom externa, y despues vemos como reproducirlo en la frecuencia correspondiente...

Código:
DEFINE ADC_BITS 10 
DEFINE ADC_CLOCK 3 
DEFINE ADC_SAMPLEUS 50

Adc VAR WORD

D0 VAR Adc.0
D1 VAR Adc.1
D2 VAR Adc.2
D3 VAR Adc.3
D4 VAR Adc.4
D5 VAR Adc.5
D6 VAR Adc.6
D7 VAR Adc.7
D8 VAR Adc.8
D9 VAR Adc.9

TRISA = %11111111
TRISB = %00000000
TRISD = %00000000

ADCON1.7 = 1

Inicio:
 
 ADCIN 0,Adc
 
 PORTD.0 = D0
 PORTD.1 = D1
 PORTD.2 = D2
 PORTD.3 = D3
 PORTD.4 = D4
 PORTD.5 = D5
 PORTD.6 = D6
 PORTD.7 = D7
 PORTB.0 = D8
 PORTB.1 = D9
 
GoTo Inicio

Basicamente lo que hace es reproducir en tiempo real el sonido que entra por el puerto analogico en un formato de 10 bits (algo similar al musiquita del mario bros en las antiguas family games jajaja); A la salida de este ejemplo, se implementa un dac, pero si lo guardas en una eeprom, te doy una mano para sacarlo con un sencillo filtro (resistencia + capacitor). Voy a ver si encuentro una idea que me habia compartido reimy en su momento para guardar y reflotar los valores en la eeprom


Se ve sencillo la manera en que lo has colocado, lo simule en el proteus con una señal de audio y funciona (y)

Hasta ahí llegan mis conocimientos, hasta ahora no he manejado memorias eeprom, necesitaría un programador de este tipo de memorias también.

inspector gadget, basicamente lo que necesitas es la logica del ascensor... hay algo acá:
https://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index118.html
solo te va servir para guiarte en la logica por que no esta terminado


Aquí te adjunto el programa simulado en proteus, le elimine unas lineas de programación.
 

Adjuntos

  • SONIDO.rar
    28.6 KB · Visitas: 84
Última edición:
Hola NANO, no necesitarias un grabador de eeprom, ya que es una ,memoria serial que la grabas y lees con el mismo PIC... Ahora, vi tu circuito, pero tenemos dos problemas...
Una, te falto acondicionar la entrada con un Amp Op... mas uqe nada para no perder picos del espectro del habla Humana o musica o lo que sea... O sea, acondicionamos la señal entrante para que trabaje en tensiones que esten entre 0 y 5 Vcc...
Dos, la salida para pdoer implementarla de esa manera, tendrias que cambiar todo el programa, ya que te faltaria un filtro y despues, tendrias que generar una tabla para poder reproducir el PWM que virtualizaria tu sonido... Tene en cuenta que cada fonema tiene su frecuencia, y si no lo reproducimos escalarmente, seria como escuchar ruidos entrecortados o como leer un libro mencionando cada letra por separado... "HOLA... Hache-O,ELE,A"; Se entiende hasta acá?
Bueno, para reducir el programa, lo que se hace, es implementar un DAC de 10bits conectado a esos 10 puertos de salida... cuando me refiero a DAC, me refiero a un CI similar a este:
DAC10_pcl.png

(Fuente: http://www.analog.com/en/digital-to-analog-converters/da-converters/dac10/products/product.html )
Al implementar un Ci similar a este, lo que obtendriamos a la salida del DAC, seria algo similar a esto:

simple-arduino-dac-on-the-scope.jpg


Fijate que se ve bien enmarcada la salida escalar (no necesariamente la señal de salida tiene forma triangular... busque en google una imagen escalar para mostrarte como quedaria, pero en si, es semisinuidal en realidad la señal de salida)...
Ahora, la salida del DAC te va a generar una tension muy pobre, asi que para amplificarla, con la implementacion de un Amp Op mas, tendrias todo practicamente resuelto... Hoy me pongo en campaña y te comparto la idea que me habia comentado en su momento el maestro Reimy...
 
Última edición:
Hola amigos necesito que alguien me oriente en que estoy fallando en la programacion de este ejercicio que es de una secuencia de luces como la del auto fantastico, utilizando el puerto Ay B del pic 16f628a en basic, ya que las salidas RA6 y RA7 no quieren activarse.
les adjunto programa, la simulacion y el .hex
Saludos.....
 

Adjuntos

  • foro secuencia.rar
    14 KB · Visitas: 43
Hola amigos necesito que alguien me oriente en que estoy fallando en la programación de este ejercicio que es de una secuencia de luces como la del auto fantástico, utilizando el puerto A y B del pic16f628a en basic, ya que las salidas RA6 y RA7 no quieren activarse.
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.
 
Ú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...
sound_pbp.png
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

Reimy dijo:
bueno es una idea.imagina que creamos dos variables para la señal uno esas dos variables son para dividir el dato en dos
y poder grabarlo quedando algo asi

señaluno1.0 = adc.0
señaluno1.1 = adc.1
señaluno1.2 = adc.2
señaluno1.3 = adc.3
señaluno1.4 = adc.4
write 00,señaluno1


señaluno2.0 = adc.5
señaluno2.1 = adc.6
señaluno2.2 = adc.7
señaluno2.3 = adc.8
señaluno2.4 = adc.9
write 00,señaluno2
write 01,señaluno2


y para leerlo casi lo mismo fijate
READ 00,señaluno1
VAL.0 = señaluno1.0
VAL.1 = señaluno1.1
VAL.2 = señaluno1.2
VAL.3 = señaluno1.3
VAL.4 = señaluno1.4


READ 01,señaluno2
VAL.5 = señaluno2.0
VAL.6 = señaluno2.1
VAL.7 = señaluno2.2
VAL.8 = señaluno2.3
VAL.9 = señaluno2.4

y ya alli tendrias todo listo recordando si usas el for next que debes incrementar la variable de direccion de 8 en 8
 

Adjuntos

  • voz_PBP.rar
    165.3 KB · Visitas: 83
Última edición:
...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: 108
Última edición:
Atrás
Arriba