Gio55 ha scritto:Hai ragione!
Credo di aver risolto... E' un limte del debuger (con il PickKit3)?
E' probabile. I micro PIC non hanno mai brillato in quanto a supporto per l'emulazione. E' una precisa politica di Microchip: su silicio mettono solo il minimo indispensabile, anche per contenere i costi. Nei modelli piccoli, non c'è supporto nativo per l'emulazione, e infatti l'utente deve comprare un coso a parte con sopra lo stesso micretto in versione "bond out", cioè con qualche pin in più e i circuiti di debug omessi nella versione standard. Nel mio lavoro mi trovo ad usare parecchi micretti di aziende diverse, quali ad esempio Freescale, Infineon, Atmel, Texas, e recentemente Silicon Labs. Quasi tutti incorporano i circuiti di emulazione real time, e alcuni prevedono addirittura l'accesso ai registri anche mentre il programma sta girando. Nel caso del tuo chip (che come ripeto non ho avuto occasione di utilizzare) ipotizzo che l'emulazione non sia del tutto "trasparente", nel senso che alcune operazioni non possono esser svolte mentre il programma gira, e altre non possono aver luogo se c'è un breakpoint nel mezzo.
Per aggirare l'ostacolo potresti semplicemente sfruttare la chiavetta anche come logger: invece di usare il debugger sul PC, e fermare tutto di tanto in tanto con dei breakpoint, puoi lasciare che il tuo programma giri da solo e preveda delle tue funzioni che, prima e dopo i punti da debuggare, leggano le variabili e ne scrivano una rappresentazione utile in un file di testo che avrai avuto cura di creare all'inizio nel file system della chiavetta "target". Se vuoi divertirti ancora di più, puoi inizializzare un timer e aggiungere ad ogni lettura il cosiddetto "time stamp", al fine di conoscere anche quanti millisecondi passano da un'operazione all'altra.
Se sbagli perché non sai, commetti un errore. Se sbagli perché non vuoi sapere, ne commetti due.