walterword Inserita: 11 ottobre 2007 Segnala Share Inserita: 11 ottobre 2007 piccoli sprazzi di tempo che mi concedo per riorganizzare le forse e la menteX simon :in mplab hai la possibilita' di debuggare col simulatore che ti permette di contare il tempo tra un'istruzione e l'altra , di sommarle ect Livio avra' ottenuto la sua formula dalla tua , godendo delle proprieta matematiche , o sbaglio? Link al commento Condividi su altri siti More sharing options...
Simons Inserita: 12 ottobre 2007 Autore Segnala Share Inserita: 12 ottobre 2007 purtroppo ho provato a debuggare con mplab, ma per come è fatto il circuito, il debugger va in errore visto che ho resistenze di pullup e altri integrati collegati al pic...ah mi era venuto un dubbio... non è che per caso c'è un limite per il quale non si può più settare il timer ad un certo valore? tipo un valore massimo o un valore minimo..è un'ipotesi Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 12 ottobre 2007 Segnala Share Inserita: 12 ottobre 2007 Il software lo puoi simulare, per debug, senza aver collegato nessun HW. Se metti un break point proprio sull'istruzione che segue l'interrupt ti da il tempo macchina trascorso tra due interrupt.Per debuggare In Circuit è necessario avere liberi i pins RB6 e RB7, gli stessi che tiservono per programmare In Circuit il pic. Link al commento Condividi su altri siti More sharing options...
Simons Inserita: 12 ottobre 2007 Autore Segnala Share Inserita: 12 ottobre 2007 Livio Orsini+12/10/2007, 15:54--> (Livio Orsini @ 12/10/2007, 15:54) i pin rb6 e rb7 sono impegnati con resistenze di pullup e buffer esterni.per la simulazione via software non ci avevo pensato.. pensavo fosse solo il debug hardware.Ma una volta che con la simulazione ho visto che ci sono 8 microsecondi in più che me ne faccio?non capisco come lo sfrutto a mio vantaggio Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 12 ottobre 2007 Segnala Share Inserita: 12 ottobre 2007 Ma una volta che con la simulazione ho visto che ci sono 8 microsecondi in più che me ne faccio?Cosa ne fai tu non lo so, io andrei a vedere dove perde gli 8us! Il simulatore ti permette di verificare, volendo, ogni singola istruzione. Tra l'altro in simulazione ti sganci dal quarzo, il computo del tempo è eseguito in base al numero di istruzioni eseguite moltiplicato per il clock teorico.Comunque se ci sono 8 us in più, la ragione ci deve essere e le cause non sono poi molte:- strumento di misura starato- misura non eseguita correttamente- programmazione del timer non corretta- introduzione di un ritardo da parte del programma Link al commento Condividi su altri siti More sharing options...
Simons Inserita: 15 ottobre 2007 Autore Segnala Share Inserita: 15 ottobre 2007 Livio Orsini+12/10/2007, 18:27--> (Livio Orsini @ 12/10/2007, 18:27) ciao Livio. Torno a rompere con questa storia del timer. Mi scuso ma ne ho fatta una causa di vita o di morte Ho provato a fare il debug con MPLAB scrivendo un semplicissimo programma con solamente un interrupt: sorgente di asd.c: #include "asd.h" #int_TIMER0 TIMER0_isr() { set_timer0(81); } void main() { setup_counters(RTCC_INTERNAL,RTCC_DIV_1); enable_interrupts(INT_TIMER0); enable_interrupts(global); set_timer0(81); while(1) { #asm NOP #endasm } sorgente di asd.h #include <16F876A.h> #device adc=8 #use delay(clock=20000000) #fuses NOWDT,HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRTho impostato un breakpoint all'istruzione set_timer0(81); e ho aperto lo stopwatch di MPLAB. Poi ho fatto play e il tempo risultate è..... 42.2 microsecondi!!!!!! contro i 35 dichiarati nell'.!!non so più dove sbattere la testa Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 16 ottobre 2007 Segnala Share Inserita: 16 ottobre 2007 Scusa la domanda banale, ma la misura con lo stopwatch l'hai fatta una sola volta (la prima), o la ripeti più volte di seguito? Perchè normalmete il primo interrupt è più lungo perchè ha dei tempi morti per l'inizializzazione, poi tutti i seguenti sono costanti ed hanno un tempo corretto.Se il tuo extra tempo è alla prima interruzzione sembrerebbe normale, se invece alo hai anche alle successive allora non saprei proprio che dirti. Link al commento Condividi su altri siti More sharing options...
Simons Inserita: 16 ottobre 2007 Autore Segnala Share Inserita: 16 ottobre 2007 Livio Orsini+16/10/2007, 11:55--> (Livio Orsini @ 16/10/2007, 11:55) la misura con lo stopwatch l'ho fatta dopo il primo interrupt certo.. Però pur ripetendo il conteggio dopo il primo, (riazzerando lo swatch ovviamente) torna sempre un tempo sballato. 42.2us... non so più cosa inventarmi davvero... Il sorgente che ti ho postato è corretto?L'avresti fatto anche te in quel modo? grazie dell'aiuto comunque! Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 16 ottobre 2007 Segnala Share Inserita: 16 ottobre 2007 Sul sorgente non ho individuato errori, ma io sono sempre un poco distratto.Prova a fare più test senza azzerare lo stopwathc.Poi prova a campbiare il timer usando timer1 e partendo da tempi più lunghi, dell'ordine dei 10ms, verificandone la correttezza, poi prova a ridurre il tempo a piccoli step verifandone sempre la rispondenza.Sinceramente non saprei cos'altro consigliarti se non scrivere il tutto in asm. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 13 novembre 2007 Segnala Share Inserita: 13 novembre 2007 Simone ne sei poi venuto a capo e stai ancora lottando? (non avrai gettato la spugna vero?) Link al commento Condividi su altri siti More sharing options...
Simons Inserita: 13 novembre 2007 Autore Segnala Share Inserita: 13 novembre 2007 Livio Orsini+13/11/2007, 12:42--> (Livio Orsini @ 13/11/2007, 12:42) purtroppo ho gettato la spugna almeno per ora..ho altri tipi di problemi più importanti .. e preferirei risolvere quelli prima Grazie dell'interessamento comunque Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora