 |
Pic Micro Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...eccultimo messaggio in questo forum
Non sò se hai già risolto, io comunque faccio le mie considerazioni.
Ipotizzando che il controller abbia ad esempio un quarzo a 20 MHz, allora potrò ipotizzare che ogni tick del quarzo durerà : 1 / (20*10^6) = 50 nano secondi (ns). Se non ricordo male, il PIC eseguirà un'istruzione ogni quattro cicli di clock: read, fetch, decode, execute. Questo significa che un'istruzione durerà 50 nS * 4 = 200 ns = 0.2 ms (milli secondi).
Ipotizzo ora che tu voglia usare un timer a sedici bit, perché, da quello che scrivi, hai due registri ad otto bit l'uno. Ipotizzo anche che tu decida, in maniera completamente arbitraria, di impostare il prescaler a 4.
A questo punto, ipotizziamo che tu voglia configurare il timer in modo da far generare un evento di interrupt ogni, ad esempio, venti milli secondi, per far lampeggiare un led.
Se il timer è a sedici bit, allora, potrà contare fino a 2^16 = 65.536 iterazioni, che corrisponderanno a: 0.2 milli secondi * 65.536 (iterazioni) * 4 (prescaler) = 52.4 secondi. Quindi il fondoscala del tuo timer, con queste impostazioni è poco meno di un minuto: (52.4 secondi).
Noi vogliamo un overflow ogni 20 milli secondi, quindi:
20 milli secondi / (0.2 millisecondi * 4) = 20 milli secondi / 0.8 millisecondi = 25 iterazioni
Ipotizzando che calcoli ed unità di misura siano corretti, sui quali mi riservo il beneficio del dubbio, a questo punto la domanda è: Come posso impostare il timer in modo che vada in overflow, dopo 25 iterazioni?
Facile, io sò che il timer che hai scelto è a sedici bit, cioè, come detto poco sopra: 2^16 = 65.536 iterazioni. Qui, sottrarrò le mie 25 iterazioni richieste per l'overflow: 65.536 - 25 = 65511 .
Convertirò quest'ultimo in esadecimale: 65.511 = 0x0FFE7.
A questo punto sò, come devo configurare i due registri:
TMR1H = 0x0FF e TMR1L = 0x0E7
Convertito in codice, dovrebbe essere qualcosa del genere:
[code] BANKSEL TMR1H
MOVLW 0x0FF
MOVWF TMR1H
BANKSEL TMR!L
MOVLW 0x0E7
MOVWF TMR1L[/code] |
ultimo messaggio di  harpefalcata del 07.01.2026, 15:06 |
 |
Robotica, CNC, 3D Finalmente un posto dove poter discutere di robotica di CNC e stampanti 3D, scambiarsi idee, progetti ed opinioni. Partecipa anche tu...ultimo messaggio in questo forum
[quote](peppix1):Prova fatta, era in corto un solo lato del bav99 quindi ho messo un solo 1n4148 e la stampante e resuscitata, ho anche stampato per 10 minuti tranquillamente. Però ora li ordino i bav99 e appena arrivano lo cambio.
Piccola curiosità , in termini di corrente che differenza c'è tra bav99 e 1n4148 ?[/quote]
Una cinquantina di mA ma, se è morto quello con corrente maggiore potrebbe succedere anche al 1n4148 che ha caratteristiche leggermente inferiori
Per tale motivo ti avevo detto di mettere due diodi in parallelo e rendere quel pezzo di circuito eterno |
ultimo messaggio di  amilcare.c del 11.02.2026, 20:31 |
 |
chiacchiere Suggerimenti, opinioni, segnalazione siti e discussioni a tema libero. (evitate post sul sistema dei livelli, per eventuali richieste e suggerimenti usate l'apposita scheda contatti)ultimo messaggio in questo forum
Figurati, ogni tanto fa bene spremere il cervello :-)
Carta millimetrata? Bei tempi..... che vorrei tornassero. |
ultimo messaggio di  ax77 del 04.05.2026, 16:46 |