Autor Tema: Ruido en la patilla del PIC - PWM  (Leído 1703 veces)

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

Desconectado PICdevJerez

  • PIC10
  • *
  • Mensajes: 12
Ruido en la patilla del PIC - PWM
« en: 04 de Enero de 2015, 17:31:21 »
Buenas chicos, estoy desarrollando un proyecto y me trae de cabeza un problema de ruido.
El PIC que uso es el PIC16F1509 y lo uso para leer una memoria Flash por SPI y reproducir el sonido PWM por el PIN PWM4 (RC1 pin 15)
El funcionamiento en todo lo demás es correcto, pero en el altavoz de oye el ruido de los datos que el PIC lee de la Flash.
Lo más curioso es que es el pin del PIC el que genera el ruido, ya que he aislado el pin del proyecto y lo he analizado en el osciloscopio, resultando que la patilla NO ALTERNA entre VDD y VSS, sino que queda "flotando" mientras esté leyendo por SPI.
Me he dado cuenta que NO es problema de la placa, ya que he probado tanto en una protoboard como en una placa realizada específicamente para el proyecto mediante serigrafía. Incluso en la placa depuradora con el PICKIT3 conectado sigue esa patilla "flotando" sin llegar a VSS.
Es curioso que, estando la patilla levantada de la placa, con diferentes placas, incluso con diferentes fuentes de alimentación, el PIN PWM4 no llegue a 0V mientras lee los datos, es que LOS DATOS parecen meterse en el PIN, ya que cuando los datos son una serie larga de ceros (estando la linea SDI a 0V por tanto) no hay ruido en la patilla.
He descartado problemas de aislamiento, de masa... incluso este pin PWM está en el PORTC, mientras el PIN SDI está en el PORTB
No sé, tenéis alguna idea?

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Ruido en la patilla del PIC - PWM
« Respuesta #1 en: 05 de Enero de 2015, 12:33:24 »
Hola PICdevJerez, se hace un poco complicado entender todo sin un diagrama, pero se me ocurre!! ¿Probaste que dicho pic no posea un problema? ¿O sea probaste con otro pic?

Usaste un buen condensador de desacoplo a la entrada de alimentación del pic y lo más cercano posible a esta? por ejemplo uno de 10uF 16V de tantalo, juntos con uno de 100nF y 10nF cerámicos.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado PICdevJerez

  • PIC10
  • *
  • Mensajes: 12
Re: Ruido en la patilla del PIC - PWM
« Respuesta #2 en: 05 de Enero de 2015, 14:23:03 »
Muchas gracias Carlos por tu respuesta, he grabado 15Pics para este proyecto, ademas con diferentes lotes de fabricación y en todos ocurre el mismo problema. Lo del filtrado, decirte que siempre le he puesto un polyester de 100nF, y que en algunas placas lleva electroliticos despues del regulador  a 3,3V y en la protoboard, que entra 3,3V sin regulador, lleva varios de polyester de diferentes capacitancias. Te comento que monté en la depuradora sólo el PIC y la memoria Flash y lo alimenté por el Pickit 3 y siempre con el mismo problema.
Me da la impresión que es un fallo o problema del Pic16F1509, pero es posible? Habria alguna solucion por firmware para que la dichosa patilla llegara a VSS?
Gracias.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7600
Re: Ruido en la patilla del PIC - PWM
« Respuesta #3 en: 05 de Enero de 2015, 14:33:05 »
Una pregunta:

Citar
Lo más curioso es que es el pin del PIC el que genera el ruido, ya que he aislado el pin del proyecto y lo he analizado en el osciloscopio, resultando que la patilla NO ALTERNA entre VDD y VSS, sino que queda "flotando" mientras esté leyendo por SPI

Eso quiere decir que el PWM no esta funcionando en ese momento ?, es decir cuando activas el SPI automaticamente el PWM deja de funcionar o deja de variar entre VDD y VSS ?

Desconectado PICdevJerez

  • PIC10
  • *
  • Mensajes: 12
Re: Ruido en la patilla del PIC - PWM
« Respuesta #4 en: 05 de Enero de 2015, 17:29:01 »
Gracias KillerJC por tu pregunta. El tema es que mientras el PIC está recibiendo datos por el Pin Sdi, esa señal se "suma" a la salida PWM4. Digamos que si por Spi está recibiendo "nivel alto" (3.3V) , el pulso bajo de la salida PWM4 no llega a VSS, sino que sale por el pin un pequeño voltaje. Si yo dejo activado el modulo Pwm4,pero ignoro los datos que recibo y dejo PWM4DCH y PWM4DCL a cero, el pin deberia medir 0V, sin embargo en la salida de dicho pin obtengo la entrada SPI, atenuada. Te recuerdo que la señal la mido con el osciloscopio y el pin levantado de la placa. Espero haberme explicado.GraciasL

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7600
Re: Ruido en la patilla del PIC - PWM
« Respuesta #5 en: 05 de Enero de 2015, 18:56:37 »
No deberia para nada.

Lo unico que se me ocurre para probar ( por que realmente es probar y ver donde esta el error ), veo que tambien ya es mas para una version final y que posiblemente tengas las PCB hechas, pero lo que se me ocurre es:

- Si es posible usar otro pin con salida PWM, preferentemente de un puerto distinto como el PORTA ( el PORTB es el que tiene el SPI en especial su entrada ).
 ( Esto eliminaria si es por que estan muy cerca los caminos del SPI y del PWM, pero como ya lo probaste al aire libre entonces no deberia influir en tu resultado, tambien serviria para ver si es un error de puerto o de configuracion del PWM )

- En ves de poner a 0 los registros PWMxDCx , poner a 0 el registro que maneja el duty.
Citar
The PWM output is active. (Exception: When the PWM duty cycle = 0%, the PWM output will remain inactive.)
  ( Eso es para probar, especialemente por que los registros PWMxDCx son latcheados y solo se actualizan cuando el TMR2 produce una coincidencia ).

- Probar en el momento de querer "desabilitar" la salida del PWM, cambiarlo de periferico al modulo I/O (RC1), previamente poniendo un 0 en LATC. Entonces para desactivarlo cambias de "fuente" podriamos decirlo.
  ( Como para determinar que el problema es el modulo PWM y no todo el conjunto del PIC, y/o tratar de desactivarlo de otra forma y no poniendo a 0 el periodo )

- Mientras transmite el SPI, observar con el osciloscopio VDD ( para saber que este esta fijo y no varia para nada)

- Seria posible ponerle una resistencia de pull-down sin que afecte el circuito de salida del PWM ?
  ( Esta ya es mas una solucion de auxilio mas que algo con un poco de razon logica )

Si ya con eso no funciona o no le encontras el error entonces no se que mas decirte. las lineas de PWM y SPI deberian estar totalmente separadas una de otra y no deberia haber contacto, en fin no me quedan mas opciones ni ocurrencias.

Desconectado PICdevJerez

  • PIC10
  • *
  • Mensajes: 12
Re: Ruido en la patilla del PIC - PWM
« Respuesta #6 en: 07 de Enero de 2015, 08:18:40 »
Antes que nada, muchas gracias KILLERJC por tu tiempo. Te comento:
- "Si es posible usar otro pin con salida PWM, preferentemente de un puerto distinto como el PORTA... "
La salida PWM4 es del PORTC, por lo que no debería haber problemas ya que SPI está en PORTB
Además tengo cogidas las otras salidas PWM, en las cuales no he detectado el dichoso ruido.
- "En ves de poner a 0 los registros PWMxDCx , poner a 0 el registro que maneja el duty..."
En este PIC, PWM4DCH y PWM4DCL son los que manejan el duty del ancho de pulso.
Cuando los puse a cero, ignorando los datos de audio de la flash, fue cuando me pude dar cuenta de la mezcla de las señales.
- "Probar en el momento de querer "desabilitar" la salida del PWM..."
Cada vez que inicio la reproducción pongo a 1 los bits PWM4OE y PWM4EN y los pongo a cero cuando termino la reproducción.
- "Mientras transmite el SPI, observar con el osciloscopio..."
Ya lo probé y con diversas placas y fuentes VDD se mantiene estable.

He probado incluso a poner una resistencia PullDown en la entrada de datos (digamos en MISO) y sigue igual, también le puse una resistencia de bajo valor en serie en dicha línea y tampoco se quita el ruido.

De todas formas me has dado un par de ideas para probar:
- Comprobar si continúa el ruido leyendo la flash pero con el PWM4 deshabilitado, no sólo con el Duty a 0 (aunque si esto elimina el ruido no es ninguna solución, puesto que obviamente, no saldría el sonido)
- Probar lo de la resistencia PullDown en la salida del PWM antes de la entrada al amplificador de audio (lo cual sería un parche, pero por lo menos serviría) aunque haya que soldarla por encima con las placas ya hechas.

Muchas gracias, en cuanto pueda haré dichas pruebas, aun así ¿alguien tiene alguna otra idea?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7600
Re: Ruido en la patilla del PIC - PWM
« Respuesta #7 en: 07 de Enero de 2015, 09:25:28 »
Citar
- "En ves de poner a 0 los registros PWMxDCx , poner a 0 el registro que maneja el duty..."
En este PIC, PWM4DCH y PWM4DCL son los que manejan el duty del ancho de pulso.

Perdon un error mio, no vi bien y termine escribiendo cualquier cosa

Citar
- "Probar en el momento de querer "desabilitar" la salida del PWM..."
Cada vez que inicio la reproducción pongo a 1 los bits PWM4OE y PWM4EN y los pongo a cero cuando termino la reproducción.

Por el diagrama del PWM, estaria flotando. Es como una llave. al deshabilitar PWM4OE.
Me refiero al diagrama FIGURE 23-2 del datasheet de ese PIC.
Puede ser este el caso ?
Probaste mantener el PWM4OE en 1 y desabilitar el PWM ? o es necesario desabilitar el PWM a pesar que le pones duty 0%?

Desconectado PICdevJerez

  • PIC10
  • *
  • Mensajes: 12
Re: Ruido en la patilla del PIC - PWM
« Respuesta #8 en: 07 de Enero de 2015, 10:21:18 »
Muchas gracias KILLERJC por tu tiempo:
La figura 23-1 no deja claro si al desactivar la salida (poner PWMxOE a 0) el control de esa patilla lo toma el PORTC o bien para manejar ese pin mediante PORTC hay que desactivar el PWM entero (poner PWMxEN tambien a cero). De todas formas en el datasheet te indica "Clearing the PWMxOE bit will relinquish
control of the PWMx pin", o sea que limpiando PWMxOE, el control del pin lo toma el PORTC (o LATC).

Sí, es necesario desactivar el PWM para que no emita el ruido, ya que, como comento más arriba, si sólo limpio el duty, el ruido del SPI sale por la patilla PWM4/RC1.

Por cierto, también he probado con la resistencia PullDown y la patilla desacoplada de la placa y sigue sin llegar la tensión a VSS cuando hay datos circulando por SPI.

Es muy raro, la verdad. Montaré todo de nuevo en la placa depuradora y seguiré mirando.

Gracias

Desconectado PICdevJerez

  • PIC10
  • *
  • Mensajes: 12
Re: Ruido en la patilla del PIC - PWM
« Respuesta #9 en: 08 de Enero de 2015, 08:58:35 »
Chicos, he estado realizando más pruebas, en proto y en placa definitiva, y el problema persiste.
Aquí tenéis una captura del osciloscopio, con el pin PWM4 aislado del proyecto (digamos al aire) y donde dejo el duty a cero.
La línea azul es la salida del pin PWM4 (debería estar a 0V puesto que el duty es 0%) y la amarilla es la entrada SDI.
Podéis observar que cuando la flash manda un 1 al PIC, por el pin PWM4/RC1 sale una tensión de aprox. 0,05V, lo que se traduce en un ruido infernal.
¿Alguna sugerencia?
Gracias.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7600
Re: Ruido en la patilla del PIC - PWM
« Respuesta #10 en: 08 de Enero de 2015, 09:31:24 »
Yo creo que si lo sacas de la placa ( asi no depende del ruteo de la PCB ) y te ocurre en el protoboard  el mismo problema, es el PIC que tiene un defecto, me refiero a su construccion.
Mas cuando lo probas en multiples PIC, poniendo el pin como salida y dejandolo a 0. Y aun asi nada seguis teniendo ese ruido. Yo si fuera yo creo que preguntaria a microchip.
Creo que son quienes te van a solucionar el problema o te van a decir que es un problema del integrado.

No se que mas decir. El hardware ya lo probaste y ocurre con esa salida en particular nada mas. Se dejo de lado la posibilidad que exista una proximidad en los caminos del SPI y PWM que podria inducirse ese ruido ( a pesar que esta puesto a GND por el mismo puerto ), en HW no se me ocurre otra cosa.

En Software mas que los registros normales TRIS/LAT y habilitacion del puerto no hay. En fin en SW esta todo bien tambien.

Para mi es el PIC. Y mi sugerencia es escribirle un e-mail a microchip.

Desconectado PICdevJerez

  • PIC10
  • *
  • Mensajes: 12
Re: Ruido en la patilla del PIC - PWM
« Respuesta #11 en: 09 de Enero de 2015, 07:10:13 »
Muchas gracias KILLERJC por tu tiempo, he expuesto mi problema en el foro de Microchip, ya que no sé cómo ponerme en contacto con ellos directamente.
Me ha respondido un SuperMember que un ruido de 0.05V en un pin en estado Bajo entra dentro de las especificaciones, lo cual es cierto, y que se puede deber a una caída de voltaje dentro del ruteado interno del PIC. Vamos, que eso es lo que hay.
Me ha dado un par de posibles soluciones, aunque yo he optado por una tercera, que es poner un Disparador Schmitt entre la patilla PWM4 y el ampificador de audio. Ahora el ruido prácticamente se ha eliminado.
Así que se puede dar el tema por cerrado.
Lo curioso es que llevo varios años trabajando con muchos PIC diferentes (todos de 8 bits) y ninguno me había dado este problema, sólo el 16F1509.
En fin, espero que este POST ayude a alguien que tenga un problema parecido.
Saludos y gracias.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7600
Re: Ruido en la patilla del PIC - PWM
« Respuesta #12 en: 09 de Enero de 2015, 07:43:14 »
Si yo tambien crei que 0.05V era bastante poco, pero si te introducia mucho ruido seguia siendo molesto.

En fin, me alegro por 2 cosas, que se haya dado con la respuesta y con que le encontraste una solucion.

Y espero que tengas mejor suerte a la hora de elegir otro PIC  :D


 

anything