Autor Tema: Sonido DingDong con Protón  (Leído 3738 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fvparg

  • PIC10
  • *
  • Mensajes: 21
Sonido DingDong con Protón
« en: 11 de Febrero de 2007, 15:38:26 »
Hola a todos/das.

Tengo un ejemplo de programa que baje de la web(código extraído de: Making Music) que es el siguiente:

Código: [Seleccionar]
[tt][table]
device 16f628A


XTAL = 20 ' With a 20MHz crystal/resonator
Dim NOTE_COUNTER as Word SYSTEM ' Determines when the pin is toggled
Dim NOTE as Word SYSTEM ' Determines the pitch of the note
Dim TIMER1 as TMR1L.Word ' Combine TMR1L/TMR1H as a 16-bit word
Symbol TRIGGER = PORTB.4
ON_INTERRUPT Goto NOTE_INT ' Point interrupts to our interrupt handler
Delayms 1000 ' Wait for PICmicro to stabilise
'ALL_DIGITAL = True ' Set PORTA and PORTE to digital

delayms 2000

Goto OVER_INTERRUPT ' Jump over the interrupt handler



'----[INTERRUPT HANDLER]------------------------------------------------
NOTE_INT:
TIMER1 = 65490 ' Load TMR1 with a preset value
Inc NOTE_COUNTER ' Increment the note counter
If NOTE_COUNTER > NOTE Then ' Is it time to toggle the pin ?
TRISB = TRISB ^ 1 ' Toggle pin PORTB.0
Clear NOTE_COUNTER ' Clear the note counter
Endif
Clear PIR1.0 ' Clear TMR1 interrupt flag
Retfie FAST ' Exit the interrupt
'----[MAIN PROGRAM CODE]--------------------------------------------------
OVER_INTERRUPT:
Input PORTB.0 ' Make PORTB.0 and Input
Set PORTB.0 ' And set it high
Clear NOTE_COUNTER ' Reset the note counter
T1CON = %00000001 ' Turn on TIMER1, with a 1:1 prescaler
Clear PIR1.0 ' Clear TMR1 interrupt flag
Set PIE1.0 ' Enable TMR1 as peripheral interrupt source
INTCON = %11000000 ' Enable global interrupts, peripheral interrupts
' Play DING chime
NOTE = 110 ' Set the frequency of the first chime
High TRIGGER ' Start charging the capacitor
Delayms 40 ' Allow time for the capacitor to charge
Input TRIGGER ' Release the capacitor and let it discharge naturally
Delayms 300 ' Delay between chimes
' Play DONG chime
NOTE = 139 ' Set the frequency of the second chime
High TRIGGER ' Start charging the capacitor
Delayms 40 ' Allow time for the capacitor to charge
Input TRIGGER ' Release the capacitor and let it discharge naturally
stop

[/table][/tt]

Es para un micro 18F452 pero yo lo estoy queriendo hacer andar en un 16F628.
El problema que tengo es que si pongo el código tal cual como esta, a veces  me funciona bien y otras veces mal.
Se que un 16F es muy distinto a un 18F pero por hay modificando un poco el código lo pueda hacer funcionar bien en un 16F. de hecho cuando funciona bien se escucha perfecto (mejor que un chip dingdong!).

Otro problema que tengo es que solo lo puedo reproducir una ves y luego es como que el micro quedara colgado porque no reacciona mas hasta que lo apague o lo resetee. (obviamente cuando lo quiero reproducir mas de una ves saco el STOP! y agrego un par de lineas mas de codigo.)

Algun alma caritativa me puede dar una mano con esto. hace tiempo que tengo este proyecto parado por no conseguir hacer un codigo con buen sonido.  :mrgreen: :-/  :mrgreen:

Aclaración: Yo hace poco empecé a usar el Protón+ mi fuerte fue siempre el PicBasicPro y me estoy acostumbrando a usar el protón porque el PBP creo que ya paso de moda y es medio obsoleto.

Gracias a todos de ante mano
« Última modificación: 12 de Febrero de 2007, 22:43:44 por BrunoF »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Sonido DingDong con Protón
« Respuesta #1 en: 12 de Febrero de 2007, 01:22:40 »
Hola. Por favor, lee las reglas del foro. Si vas a incluir codigo ajeno a ti, cita la fuente y asegurate que el autor permita que publiques su codigo aqui.

Gracias.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado fvparg

  • PIC10
  • *
  • Mensajes: 21
Re: Sonido DingDong con Protón
« Respuesta #2 en: 12 de Febrero de 2007, 22:31:02 »
Hola.
El código lo saque de la web hace un buen tiempo ya. Estuve buscando y no encuentro de que pagina lo saque. Solo tengo un pdf con este código y otros códigos mas de ejemplo de un tal Les Jhonson.

La verdad no sabia que el tema de poner un codigo ajeno era problemático, les que pido disculpas. No era mi intención.

Díganme que tengo que hacer. Borro el código?. Gracias

Nuevamente pido mil disculpas a todos.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Sonido DingDong con Protón
« Respuesta #3 en: 12 de Febrero de 2007, 22:45:10 »
El problema es que puede comprometerse el foro si tomas codigo sin siquiera mencionar la fuente.
Ya busqué yo la fuente de tu código y la cite. Simplemente tenelo en cuenta para la prómixa.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado fvparg

  • PIC10
  • *
  • Mensajes: 21
Re: Sonido DingDong con Protón
« Respuesta #4 en: 13 de Febrero de 2007, 00:20:47 »
Hola Brunof.
No lo sabía realmente. Para la próxima lo voy a tener en cuenta. Gracias

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Sonido DingDong con Protón
« Respuesta #5 en: 13 de Febrero de 2007, 00:51:02 »
No hay problema.

Tal vez haya diferencias entre los timers del 18F y los del 16F.
Tal vez los timers del 18F sean de 16 bits y los del 16F solamente de 8.

Por ahi te estoy diciendo una burrada, pero puede que te sirva para revisar.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado fvparg

  • PIC10
  • *
  • Mensajes: 21
Re: Sonido DingDong con Protón
« Respuesta #6 en: 13 de Febrero de 2007, 14:50:51 »
Hola.
Si. yo lo pensé eso de que el 18F es de 16 bits y el 16F de 8 bits. Pero lo raro es que de 10 veces que lo pruebo al menos 8 anda perfecto. Yo creo que si fuera un problema de timers debería fallar siempre no? o se puede llegar a generar una falla aleatoria si los timers NO son de 16 y son de 8 bits?

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Sonido DingDong con Protón
« Respuesta #7 en: 13 de Febrero de 2007, 14:58:07 »
Pues por lo que estoy viendo, son iguales los registros que usa del TMR1 del 18F y del 16F. No tienes el 18F para probar a ver si no es problema del codigo?

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado fvparg

  • PIC10
  • *
  • Mensajes: 21
Re: Sonido DingDong con Protón
« Respuesta #8 en: 13 de Febrero de 2007, 15:00:47 »
No se me había ocurrido. Ahora agarro un 18F y lo pruebo y te comento los resultados.
Gracias.

Desconectado fvparg

  • PIC10
  • *
  • Mensajes: 21
Re: Sonido DingDong con Protón
« Respuesta #9 en: 13 de Febrero de 2007, 21:13:35 »
Hola.
E probado el código en un 18F y funciona bien, incluso le agregue un loop y funciona perfecto. No se porque en el 16F628A me da problemas.
Cuando le agrego el loop en el 16F se vuelve loco suena sin parar y fuera de tono.


 

anything