Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 17 novembre 05, 10:48   #31 (permalink)  Top
User
 
Data registr.: 28-05-2005
Residenza: Roma
Messaggi: 660
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
SoldatoSemplice non è collegato   Rispondi citando
Vecchio 17 novembre 05, 11:36   #32 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originally posted by SoldatoSemplice@17 novembre 2005, 10:48
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...
Non per fare polemica, ma leggere le specifiche non farebbe male... e da lì scopriresti che ogni ciclo di istruzione impiega 4 cicli macchina e quindi a 4 Mhz ogni istruzione viene eseguita in 1 microsecondo (a parte i jump e le call da 2 cicli).

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
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 17 novembre 05, 13:45   #33 (permalink)  Top
User
 
L'avatar di Claudio_F
 
Data registr.: 02-04-2005
Messaggi: 2.050
Citazione:
Originally posted by SoldatoSemplice@17 novembre 2005, 10:48
Avrei realizzato questa routine di ritardo secondo me funziona ma un parere di chi ne sa più di me è gradito: eccola...
[cut]
è vero che con una variabile di solo 8 bit si può ottenere un ritardo massimo di 2 millisecndi?
La routine funziona e cosi' come e' scritta se non ho sbagliato i conti dura 49,549307 secondi con clock di 4MHz. Il valore del registro W non viene mai alterato, quindi basta impostarlo la prima volta. Non capisco l'utilita' della riga " GOTO RITARDOALTO0".

Con un semplice decremento a 8 bit otteniamo 0,768mS:
Codice:
 CLRF CL
 DECFSZ CL,F
 GOTO $-1
Aggiungendo qualche ritardo intermedio allunghiamo un po', ma siamo sempre su quei valori, la seguente routine dura 1,792mS:
Codice:
CLRF CL
NOP
NOP
NOP
NOP
DECFSZ CL,F
GOTO $-5
Claudio_F non è collegato   Rispondi citando
Vecchio 17 novembre 05, 14:41   #34 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
In allegato il programma promesso.

Michele
Files allegati
Tipo file: zip TestTimer.zip‎ (928 Bytes, 56 visite)
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 17 novembre 05, 15:08   #35 (permalink)  Top
User
 
Data registr.: 28-05-2005
Residenza: Roma
Messaggi: 660
Grazie mille a tutti e due..... cosa farei io senza BaroneRosso....
SoldatoSemplice non è collegato   Rispondi citando
Vecchio 21 novembre 05, 11:42   #36 (permalink)  Top
User
 
Data registr.: 28-05-2005
Residenza: Roma
Messaggi: 660
Scusa Michele ma perche nel tuo programma davanti ai nuleri metti il punto?
Cos'è un modo per indicare "codice esadecimale"?
SoldatoSemplice non è collegato   Rispondi citando
Vecchio 21 novembre 05, 12:11   #37 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
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
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 22 novembre 05, 23:08   #38 (permalink)  Top
User
 
Data registr.: 05-11-2005
Messaggi: 4
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..
MrCitopacco non è collegato   Rispondi citando
Vecchio 28 novembre 05, 10:55   #39 (permalink)  Top
User
 
Data registr.: 28-05-2005
Residenza: Roma
Messaggi: 660
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....
SoldatoSemplice non è collegato   Rispondi citando
Vecchio 28 novembre 05, 11:41   #40 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da SoldatoSemplice
... 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"?
In MPASM è possibile specificare la notazione di default per i numeri: se il default è decimale, scrivere .10 o solo 10 non cambia, ma se il default è esadecimale, scrivere semplicemente 10 viene interpretato come 0x10 cioè 16!
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
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
PIC16F84 & motore stepper 200 giri DDV1982 Circuiti Elettronici 13 19 giugno 08 18:54
AIUTO!!! AIUTO!!! AIUTO!!! INTERFERENZE PAUROSE!!!!!! alvaro Elimodellismo in Generale 10 04 ottobre 07 11:36
Schema per PIC16F84.... kriptor86 Circuiti Elettronici 5 11 marzo 04 18:13
Pic16F84 e seriale dexterman Circuiti Elettronici 6 01 febbraio 04 16:59
Regolatore PIC16F84 --- Motore ? flyer Circuiti Elettronici 3 22 dicembre 03 18:55



Tutti gli orari sono GMT +2. Adesso sono le 05:16.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002