Newsgroup: it.hobby.elettronica.digitale
Titolo: mi aiutate con sti calcoli ? [lunghetto]

allora sto cercando di realizzare col pic 16f84 un programmino che legga un
dato da seriale
ho fatto 2 conti ( che però alla luce dei fatti dubito essere corretti) che
hanno guidato le mie scelte operative
allora ho un quarzo da 4 MHz ho letto sulle spec che in realtà il pic esegue
unistruzione  ogni 4 cicli.. quindi una velocità effettiva di 1 MHz nel mio
caso , esatto? sarebbe a dire 1 istruzione ogni microsecondo.
in secondo luogo . pensavo di inviare i dati a 9600 bps da rs232
col maxim apposito converto i segnali . e fin qui tutto è ok!
essendo 9600 bps ho stimato che dovrebbere arriva un bit ogni 104
microsecondi, questo è esatto ? ? ?
( qua mi sa che sta il mio errore)
ora dper leggere 1 bit e inserirlo in un registro occorrono una decina di
operazioni e mi scocciava veramente tanto perdere le altre 90 istruzioni
così ho pensato di gestire tutto con gli interrupt ( il mio progetto
definitivo deve continuare a tenere sotto controllo dei valori .. quindi non
mi va bene stare condei cicli d'attesa tra un bit e láltro)
il prog funziona così
attiva il bit di stard e parte un interrupt on change la isr disabilita gli
int on change e imposta il timer ( io avevo impostato a (255 - 150)  per il
primo bit cosi da cascare circa in mezzo al primo bit di dati) abilitando
gli int da timer
a questopunto dopo il tempo stabilitoscattava l'int del timer , la ISR
leggeva il bit sul piedino e lo inseriva inun registro, reimpostando il
timer a ( 255-104)  ( il prescaler è 1 : 1)
quando ha inserito 8 bit  disabilita gli int da timer e riabilita quelli on
change
simulando tutto a bassa velocità coi leddini di debug tutto sembra
funzionare, ma quandoporto il tutto alla velocità di regime legge solo
alcuni bit , poi sembra partire troppo in ritardo e quidni leggere gli 1
oltre la fine dei dati....
insomma credo di aver sbagliato a calcolare i tempi....
ho provato ad aggiustarli unpo ad occhio ma non riesco a sincronizzare un
cavolo! :)
qualche anima pia ha gia realizzato qualcosa di simile o può indicarmi dove
sbaglio ?
grazie ciao :)

 ha scritto nel messaggio
news:3fvQ7.265970$sq5.12...@news.infostrada.it...
HMM HO RISOLTO!
:)
or tutto funziona come dovrebbe solo che i valori teorici si discostano
parecchio da quelli che ho ricavato inpratica...
i ritardi necessari sono praticamente dimezzati....credo dipenda sia dalle
latenze introdotte nella gestione dell'interrupt sia dal quarzo che con la
tolleranza del 5%... contribuisce anche lui, inoltre mi ero scordato di
contare le istruzioni che venivano eseguite quando venivano invocati gli
interrupt
ok cmq per ora tutto bene :)
mi diverto sempre di piu :)

RIHMM avevao anche sbagliato a settare il prescaler.. porc... :) :)

 ha scritto nel messaggio
news:vCHQ7.268022$sq5.13...@news.infostrada.it...


 Windows utilissima nei casi come il tuo.
hm si ma da me è disabilitata... come si usa?
mi vergogno a dirlo ma non ho un programmatore decente per il pic e lo
programmo tramite una simpatica configurazione in-circuit serial programming
credo che sia per quello che tutte quelle soffisticate funzioni di debug non
sono attive... o sbaglio ... ?
se sbaglio puoi dirmi come si attiva? xche da me sta disabilitata.
ciao


Non e' una funzione associata al programmatore ma e' una funzione del
simulatore di MPLAB quindi se lavori con il simulatore la trovi abilitata.
Per abilitare il simulatore, qualora tu lavorassi solo come editor, vai su
option - Development mode e sulla scheda Tools scegli MPLAB SIM Simulator.
Comunque se non hai ancora usato il simulatore non sai che cosa ti sei
perso.
Difficilmente penso che si possa costruire un software complesso su PIC
senza ricorrere al simulatore di MPLAB, anche se devo dire non e' un
granche' come interfaccia .....
Ciao Andrea e buoni programmi !

 granche' come interfaccia .....
hm infatti.. non ti dico come ho fatto fin'ora.....
grazie mille dell'ínfo :)

 ha scritto nel messaggio
news:9v6av0$tpu$1...@pegasus.tiscalinet.it...
grazie mille lo stop watch č formidabile!