Messaggi: 38
Discussioni: 9
Registrato: Apr 2018
Reputazione:
0
Ciao a tutti, scrivo perché ho avuto l'ardire di acquistare una board pico giusto per provarla e, qualche giorno fa, mi sono messo a scrivere un programma che, altrimenti, avrei fatto con arduino.
Il programma è scritto in micropython (thonny). In sostanza gestisce 5 motori passo passo a diverse velocità. Le velocità arrivano via seriale (stdin) e, attraverso un contatore, a intervalli di tempo mando un clock alla scheda di potenza dei passo passo. In sostanza è un led blinker che varia il tempo del time.sleep. Il programma funziona perfettamente ma, dopo un tempo non definito e mai uguale, si interrompe senza motivo.
Qualcuno ha mai avuto problemi di questo tipo?
Messaggi: 1,585
Discussioni: 78
Registrato: Nov 2015
Reputazione:
90
non ho esperienza al riguardo, ma la norma è
attiva e/o crea log per ogni azione cosi da capire dove e come si blocca.
Messaggi: 38
Discussioni: 9
Registrato: Apr 2018
Reputazione:
0
Grazie Enrico per la risposta. Di fatto ci ho provato e, in effetti, non si blocca il programma in sé, si blocca solo l'uscita che controllo. Il dato in seriale continua ad arrivare (lo tengo monitorato con il print). In sostanza, quattro uscite continuano a funzionare, quella collegata al led on board smette di funzionare. In funzione di questo, ho provato a cambiare pin e a monitorare l'uscita con l'oscilloscopio e succede la stessa cosa. Qualsiasi pin vado a controllare, questo si blocca dopo un po'. E questo può capitare dopo 10 secondi o dopo 10 minuti.
Messaggi: 1,234
Discussioni: 4
Registrato: Apr 2016
Reputazione:
130
21/12/2021, 15:02
(Questo messaggio è stato modificato l'ultima volta il: 21/12/2021, 15:12 da ippogrifo.)
Una sintesi del flusso del programma? Hai provato a spostare il comando per questa uscita per prima e successivamente le altre quattro? Poichè lo stop avviene per diversi pin utilizzati è probabile che la causa, anche indiretta, sia nel flusso dell'esecuzione stessa. Considera che l'istruzione time.sleep blocca il primo core sino al termine del valore impostato (probabile che un interrupt possa "sbloccarlo" momentaneamente, ed è forse meglio utilizzare il secondo core per le temporizzazioni). Nel caso, utilizza l'istruzione print anche per seguire le varie fasi dell'esecuzione del programma, anche incrementando un indice (utile nel caso di un while). Come sono distribuite le alimentazioni? Il pico necessita di una alimentazione stabile e pulita.
Messaggi: 38
Discussioni: 9
Registrato: Apr 2018
Reputazione:
0
Grazie Ippogrifo per la risposta e scusa il ritardo nella mia ma il lavoro mi sta sotterrando... In ogni caso ho risolto utilizzando arduino. Ho semplicemente tradotto il programma e funziona perfettamente.
Non vorrei parlarne male, ma pico mi sembra un "chiodo" pazzesco. Ho fatto diversi programmi a caso per verificarne il funzionamento ma sono più le volte che ho dovuto flashare la memoria per resettarlo perché non riceveva più il programma.
Mi sa che rimarrò fedele al mio arduino...
Messaggi: 6,928
Discussioni: 268
Registrato: Mar 2015
Reputazione:
368
al mio, non è mai successo. forse un problema di alimentazione. Il grosso vantaggio di Pico (a mio parere e vedendo l'entusiasmo con cui è stato accolto) è che si possono usare linguaggi già conosciuti, come Python (adattissimo ai principianti) o C