Electrónica y programación para Microcontroladores.

Libros técnicos para electrónica programable.

Email
Contactanos en:

consultas@firtec.com.ar

Arduino

Cuando se programa la placa Raspberry Pi Pico con Micropython el proceso de actualizar el código en memoria Flash  resulta muy cómodo, como el interprete ya esta cargado en memoria solo conectamos el cable USB y se actualiza el nuevo programa tantas veces como sea necesario o actualizaciones tengamos del código.

Sin embargo cuando trabajamos en C/C++ la mecánica para actualizar los programas en Flash es un poco diferente teniendo que desconectar el cable USB, presionar el boton BOOTSEL y en simultaneo conectar nuevamente el cable USB.
El tema de tener que conectar/desconectar el cable USB me parecía molesto y me puse a investigar la forma de eliminar la necesidad de tener que conectar y desconectar el cable USB en cada re-programación de la Flash. En mi caso tengo montada la placa en un proto-board con alimentación de 5 voltios, esta placa es donde ensamblo los prototipos que luego son programados en la placa definitiva esto es importante porque la placa no debe recibir alimentación por el cable USB, solo el cable GND deberá estar conectado entre la computadora y la placa pico.
Para no tener que desconectar el cable USB del computador he construido el siguiente circuito electrónico que toma señal del punto marcado como TP6 en la placa Pico, cuando se oprime el botón BOOTSEL se dispara un temporizador que corta la energía de la placa durante un par de segundos, la computadora entonces  "entiende" que se desconecto el cable USB y se volvió a conectar luego de unos segundos y la placa pasa a modo programación.

Es decir que solo con actuar sobre el botón BOOTSEL ya es suficiente y no es necesario remover el cable USB en cada actualización de Flash.

Como se ve en el diagrama de la placa Pico, el botón BOOTSEL cambia el estado del pin CS de la memoria Flash en el mismo momento que el cable USB es removido y vuelto a conectar al computador conectando y desconectado la alimentación de la placa Pico y dejando la memoria lista para recibir el nuevo programa Flash.
Obviamente que para que esto funcione la placa Pico no debe recibir alimentación por el USB desde el computador pero si compartir el GND. En mi caso y como ya lo tenía utilicé un pequeño relay de 5 voltios para desconectar/conectar la alimentación de la placa Pico y para eliminar la alimentación por el cable USB, prolijamente abrí un cable USB y corte el cable que trae los 5 voltios.
El sistema funciona perfecto y ya no tengo que conectar y desconectar el cable USB cada vez que actualizo el código en C++ en la memoria Flash de Pico.