TODOPIC
Microcontroladores PIC => Programadores => Mensaje iniciado por: Nocturno en 28 de Noviembre de 2010, 04:51:53
-
Hola amigos, hoy vengo con un problema que me tiene loco desde ayer y ya no sé por dónde tirar.
Tengo una placa con el micro mencionado siguiendo un diseño que ya es habitual en otros proyectos que he hecho, y que hasta ahora siempre me había ido bien.
Os pego las dos partes implicadas del proyecto, y de hecho, son las únicas partes que tengo montadas en la placa, porque antes de montar el resto, he empezado por montar esto y verificarlo: alimentación y micro
Utilizo MPLAB e ICD3.
Lo que me ocurre es muy extraño: cuando alimento el micro a través de la alimentación de la PCB, nunca consigo detectarlo, y por consiguiente, ni puedo programarlo.
He revisado las tensiones e incluso las he analizado con el osciloscopio y son correctas: 3.3V y 5V muy estables, de hecho sólo veo algo de rizado cuando amplio el zoom del osciloscopio a 10mV.
Sin embargo, si desconecto la alimentación y lo alimento con el ICD3 a través del conector ICSP, entonces sí que lo reconoce y lo programa. Cabe destacar que la alimentación del ICD3 llega a la señal Vcc de la PCB, por lo que luego pasa por el regulador de 3.3V. Y como además, el ICD3 mete 3.5V, al pasar por el regulador salen unos escasos 2.45V
Pero por lo que se ve, esta es la tensión que más le gusta a mi PIC24.
Ni corto ni perezoso he cambiado el regulador por uno de 2.5V, pero nada; cuando utilizo la etapa de alimentación no hay manera.
También he probado a meter directamente los 3.3V desde mi fuente externa sobre la línea de 3.3V de la PCB. Así sí que lo reconoce.
Sin embargo, si utilizo mi fuente externa para obtener 5V y los inyecto en Vcc, nada de nada.
Estoy un poco perdido y ya no sé por donde tirar. Sé que el problema tiene que estar necesariamente en la alimentación, pero no se me ocurre qué más probar. Agradecería cualquier pista.
(http://img200.imageshack.us/img200/6223/alimentacin.jpg)
(http://img51.imageshack.us/img51/8725/microh.jpg)
-
Hola Nocturno, creo que ya lo comenté en otro post:
Sé que leí en alguna nota de aplicación (que no encuentro ahora) que el pin Vdd debe ser controlado por el programador en algunos casos, pues requiere cortar la alimentación en ciertos momentos para entrar y salir del modo ICSP.
¿Podrías colocar el osciloscopio en la línea Vdd cuando alimentas con el programador y ver si corta en algún momento?
-
Podría estar relacionado con esto: http://www.microchip.com/forums/m416448.aspx
-
Voltage Regulator Pins
(ENVREG/DISVREG and
VCAP/VDDCORE)
The on-chip voltage regulator enable/disable pin
(ENVREG or DISVREG, depending on the device
family) must always be connected directly to either a
supply voltage or to ground. The particular connection
is determined by whether or not the regulator is to be
used:
•For ENVREG, tie to VDD to enable the regulator,
or to ground to disable the regulator
•For DISVREG, tie to ground to enable the
regulator, or to VDD to disable the regulator
En mi caso viene con DISVREG y lo tiro a gnd (es lo que aprendi con Mig 8))
Y no se si te sirva , pero esta es la manera en que conecto el ICSP.
-
Manolo:
- Los diodos BAV74 están invertidos. Colócalos correctamente.
- Coloca una R de 10k en MCLR antes de los diodos, usa el diagrama ICSP estándar
- Coloca el capacitor de 10uF en VDDCORE, el de 1uF no sirve
- Conecta ENVREG directamente a 3V3, no hagas un divisor de tensión con la R de 1k5
Como comenta Akena, el regulador interno del PIC deberá entregar 2.5V en VDDCORE, muy limpios. Si no pones un buen capacitor de Tantalio, se ensucia la señal.
VDDCORE es el voltaje al cual opera el CPU del PIC24.
Edito: y si es posible, usa el filtro LR del TL2575. Su salida puede ser muy ruidosa para el PIC24.
-
Hola Nocturno, creo que ya lo comenté en otro post:
Sé que leí en alguna nota de aplicación (que no encuentro ahora) que el pin Vdd debe ser controlado por el programador en algunos casos, pues requiere cortar la alimentación en ciertos momentos para entrar y salir del modo ICSP.
¿Podrías colocar el osciloscopio en la línea Vdd cuando alimentas con el programador y ver si corta en algún momento?
Eso lo dudo, pues el microcontrolador puede estar alimentado de la placa y el programador no puede tener control sobre el mismo :?
-
Nada, que no hay manera. He hecho los cambios que me indicáis y sigo sin detectarlo.
En Vddcore mido 2.38V
Si alimento con el ICD3, como indica Juanfe, sí que lo detecto, pero eso no me sirve.
-
Nada, que no hay manera. He hecho los cambios que me indicáis y sigo sin detectarlo.
En Vddcore mido 2.38V
Si alimento con el ICD3, como indica Juanfe, sí que lo detecto, pero eso no me sirve.
Léete la sección del regulador interno del PIC24 (el manual, no la datasheet) para ver si encuentras más pistas. Tienen que haber 2.5V limpios en ese pin. ;-)
-
¿Cuál es ese manual?
-
Es el reference manual
Para pic24F (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2575)
-
Gracias, Akena, ya le he estado echando un vistazo y confirmo la conexión directa de ENVREG a +3.3V, y la colocación de un tántalo de 10uF en Vddcore.
Es curioso, si meto con mi fuente de laboratorio los 3.3V directamente saltándome la etapa de alimentación, sí que detecto y programo el micro. Y si mido Vddcore en ese momento sigue estando en 2.38V.
Las pistas me llevan a pensar que hay un problema de ruido, pero mi osciloscopio no lo ve :?
-
No sé si el ICD tolere resistencias en PGD y PGC. Checa eso también.
¿Actualmente cómo está conectado todo?
-
Actualmente está como en el esquema que os puse con los cambios siguientes:
- ENVREG directo a 3.3V
- MCLR con pullup de 10K
- anulado el diodo BAV74 de Vpp
- condensador de tántalo 10uF en Vddcore
- filtro con 20uH/100uF tras la Vdd de 5V del TL2575
-
a mi me hace pensar que sean los Condensadores, especialmente los electrolitico, mide a ver que corriente Alterna te sale.
;-)
-
En mi desesperación, he eliminado todos los componentes de la etapa de alimentación, absolutamente todos. He cogido un nuevo regulador de 3.3V, un UA78M33C.
Como antes, si le meto 5V por su pata Vin no detecta el micro. Si meto 3.3V desde mi fuente por su Vout, todo va perfecto.
No sé si cortarme las venas o dejármelas largas; ya llevo más de 48 horas sin avanzar con esto :5]
-
Hola Rafael, no hay alterna. En el osciloscopio lo veo todo limpio, limpio. Sólo veo algo de ruido al hacer zoom a 10mV, pero ese ruido lo veo también sin conectar nada, así que será por la propia tolerancia del osciloscopio.
-
Épale, que el diodo no había que quitarlo. El diodo evita que el alto voltaje de Vpp fluya hacia el bajo de 3.3V. Si bien la resistencia de 10k se lo come, mejor que no fluya usando el diodo.
Hasta ahora entiendo esto...
- Si alimentas con 5V a tu regulador de 3V3, el ICD no detecta al PIC
- Si alimentas con 3V3 por ICSP, el ICD sí detecta al PIC
Puede ser un problema de tierras. Checa continuidad entre GND de la fuente de 5V y GND del ICSP-PIC-3V3.
-
Pero Vpp no es alto para los pic24 , lo que se hace es un reset , luego se envia una cadena de comandos.
En las especificaciones del pic , no pasa de 4v
Voltage on any combined analog and digital pin, and MCLR, with respect to VSS ........................-0.3V to (VDD + 0.3V)
-
Efectivamente, en PIC24F por el pin MCLR sólo entra un reset a 0V cuando el programador así lo necesita. El resto del tiempo entra Vdd de 3.3V.
Por eso tenía el diodo puesto como en el esquema que pegué al principio, para que GTPUSB no meta los 13V pero sí pueda meter 0V.
-
Ahhh no sabía eso, una disculpa.
¿Qué tal las tierras? ¿Hay continuidad?
-
Sí, completamente.
Llevo todo el día fuera de casa con una idea en la cabeza, y sospecho que por ahí pueden venir los problemas. La línea Vdd del conector ICSP la tengo conectada a la Vdd de 5V del circuito. Cuando meto 3.3V con mi fuente externa en la línea de 3.3V del circuito (tras el regulador), el ICD3 lo detecta bien, y supongo que a la línea de 5V llega algún residuo a través del regulador en sentido contrario.
Sin embargo cuando meto 5V con mi fuente en la línea Vdd, el ICD3 no lo detecta. Estoy imaginando que si ICD3 lee 5V en Vdd, automáticamente no continúa porque se supone que el 24F no habrá sobrevivido.
En fin, no es más que una teoría, pero ya no sé qué probar.
-
Vdd del ICSP debe ser idéntico a Vdd del PIC a programar. ;-)
Poner 5V en Vdd del ICSP es poner en jaque al PIC.
-
Pero los 5V del conector ICSP no van directos al PIC, pasan por el regulador de 3.3V.
Eso lo hice así para hacerlo compatible con el conector del GTPUSB, y lo he usado con todos los PIC de 3.3V hasta ahora sin problemas.
En fin, cuando llegue a casa lo pruebo y os cuento.
-
¿Podrías por favor poner el diagrama completo del ICSP y del regulador que dices? :huh:
-
Sí, en cuanto llegue lo cuelgo.
En cualquier caso, el conector ICSP sólo tiene 5 señales, el resto ya lo tienes en la etapa de alimentación que puse al principio. Son estas cinco:
- GND
- Vdd
- ICSP_VPP
- ICSP_PGC
- ICSP_PGD
-
¡CONSEGUIDO!
En cuanto he cambiado Vdd por 3.3V en el ICSP, el ICD3 ya se lo traga perfectamente.
He vuelto a montar toda la etapa de alimentación original, tal y como estaba en el esquema, y funciona de lujo.
De hecho, he quitado el tántalo de 10uF y he puesto un cerámico de 1uF; y también he dejado la resistencia de 1K5 en ENVREG. Sigue funcionando bien, lo que demuestra que la avería estaba en el ICSP.
Ahora no consigo que lo detecte el GTPUSB, pero ya me sirve con el ICD3.
Muchas gracias por vuestra ayuda
-
Pero no hay razón para cambiar lo demás... el manual lo sugiere. ;-)
Qué bien que ya funciona.
-
Claro, claro, y lo dejaré como indica el manual. Sólo he vuelto atrás sobre mis pasos para confirmar que la única razón que provocaba el problema era esa.
-
Ah bueno :D