![]() |
Perfetto, grazie a voi il problema interrupt è risolto, quindi grazie, adesso ultima domandina sulla temporizzazione......(se divento troppo palloso non rispondete....) L'ultimo (spero) cruccio rimastomi è: se io metto un quarzo da 4 Mhz quanto dura il tempo di esecuzione di una singola istruzione? Secondo i miei calcoli se il quarzo è da 4 Mhz, il PIC esegue 4 milioni di istruzioni al secondo, quindi una sola istruzione dovrebbe durare 1/4Mhz, cioè 250 nanosecondi, non vi sembra un valore un pò troppo basso? Avrei realizzato questa routine di ritardo secondo me funziona ma un parere di chi ne sa più di me è gradito: eccola... DELAY MOVLW 254 MOVWF CONTALTO2 RISTCONT MOVLW 254 MOVWF CONTALTO RITARDO MOVLW 254 MOVWF CONTBASSO RITARDOBASSO DECFSZ CONTBASSO GOTO RITARDOBASSO GOTO RITARDOALTO0 RITARDOALTO0 DECFSZ CONTALTO GOTO RITARDO DECFSZ CONTALTO2 GOTO RISTCONT RETURN P.S. Qualcuno mi potrebbe dare un semplice programmino per far lampeggiare un led, senza usare interruttori o periferiche di temporizzazione come i Timer interni..... solo un semplice stupido Lampeggio grazie, ed è vero che con una variabile di solo 8 bit si può ottenere un ritardo massimo di 2 millisecndi? Scusate e Grazie |
Citazione:
Per la routine di ritardo ti mando un paio di esempi più tardi, ma considera che fare i ritardi con loop di istruzioni non è un buon sistema e i timer interni sono fatti apposta per queste cose... ti consiglio quindi di partire con il piede giusto anche perchè così impari a fare cose che ti torneranno probabilmente utili anche più avanti. Michele |
Citazione:
Con un semplice decremento a 8 bit otteniamo 0,768mS: Codice: CLRF CL Codice: CLRF CL |
1 Allegato/i In allegato il programma promesso. Michele |
Grazie mille a tutti e due..... cosa farei io senza BaroneRosso.... |
Scusa Michele ma perche nel tuo programma davanti ai nuleri metti il punto? Cos'è un modo per indicare "codice esadecimale"? |
Rappresentazione numeri No, il punto identifica i numeri decimali come pure D'nn'; quelli esadecimali sono definiti come 0xnn oppure H'nn', i binari B'nnnnnnnn' e quelli ottali O'nn' Se scrivi solo il numero viene interpretato in funzione del settaggio di default della variabile 'radix'. Ciao, Michele |
comunque fare cicli di ritardo anche più lunghi non è un grosso problema.. con poche istruzioni si fanno più cicli l'uno dentro l'altro e con soli 3 cicli si raggiungono già decine di secondi.. |
Domanda per MSchiepp sul programma Ciao Michele, senti scusa ma proprio non riesco a capire per quale motivo nel tuo programma usi i numeri decimali (tipo 0.178), e poi il compilatore come fa a tradurre in esadecimale un numero decimale? Se il registro TMR0 deve essere impostato a 178 per avere 78 cicli, non dovrebbe essere qualcosa del tipo MOVLW 178 MOVWF TMR0? Senza ".178"? Scusa e grazie.... |
Citazione:
Dato che può capitare di assemblare un programma su un sistema settato in modo diverso, per evitare confusioni è consigliabile: 1 - dichiarare sempre il tipo di dato insieme al numero o 2 - utilizzare nel sorgente la direttiva 'radix' o il comando 'r' nella direttiva 'list' per selezionare il modo desiderato. Ciao, Michele |
Tutti gli orari sono GMT +2. Adesso sono le 08:54. |
Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002