Código estragou/brickou seu Raspberry Pi Pico? resolva aqui

Posted by

Algum Código estragou/brickou seu Raspberry Pi Pico? resolva aqui. Vou te mostrar pelo que eu passei com essa plaquinha e como resolver de forma tranquila.

Como foi minha experiência? eu começei a reparar que de tempos em tempos o código em microPython rodando na minha Pico, conectada via USB no computador, parava de rodar. Lendo um pouco na internet eu começei a desconfiar que a memória da placa estava chegando no fim.

raspberry pi pico
Raspberry Pi Pico

Porém eu estava apenas rodando um blink (pisca) de dois LEDs deste artigo, nada de mais. Aí o pessoal dos comentários do link acima comentou de utilizar o watchdog para resetar a placa de tempos em tempos.

Fui pesquisa sobre o watchdog e achei este link, com o código abaixo. Ele apenas mostra o código mas não diz onde colocar.

from machine import WDT
wdt = WDT(timeout=2000)  # enable it with a timeout of 2s
wdt.feed()

Eu então coloquei o código todo antes do loop principal, fora do “while True:”; este foi meu erro. Agora a função “wdt.feed()” nunca é acessada, então o Pico é resetado a cada dois segundos.

A placa sumiu da porta USB, não conseguia mais programa-la via Thonny IDE.

Ao abrir o gerenciador de dispositivos do Windows a COM5 (porta onde está a placa) aparecia e sumia a cada poucos segundos. A primeira coisa que tentei foi colocar a placa em modo boot e regravar o firmware .UF2 do microPython.

Eu faço isso apertando o botão BOOTSEL da placa com ela desconectada da USB, e logo depois conectando ela na USB. Aí arrasto o arquivo .UF2 para dentro do “drive virtual” que o Pico cria no Windows.

Porém descobri da pior forma que o código não é apagado ao regravar o firmware, então o problema continua (placa não aparece na porta COM). Tentei até mesmo gravar outro bootloader (do Arduino) mas a flash aparentemente não é apagada.

A solução

Pesquisando um pouco mais na internet eu descobri um outro arquivo .UF2 chamado “flash_nuke” que aprentemente apaga a memória flash inteira da Pico. Um resposta neste fórum também falou deste arquivo.

Colocando a Raspberry Pi pico em modo de gravação (segurando BOOTSEL enquanto liga ela) e arrastando o “flash_nuke.uf2” para dentro dela, resolvi o problema. O programa “culpado” (que estava em main.py) foi apagado.

Quanto ao que gerou o problema, agora sei que tenho que colocar “wdt.feed()” dentro do meu “while True:” para que ela seja chamada em menos de 2 segundos a cada vez.

E você, tem história onde estragou/brickou um microcontrolador? compartilhe nos comentários.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *