Newsgroup: it.hobby.elettronica.digitale
Titolo: Sincronismo  microcontrollori

Salve
Mi rendo conto che l'idea e' un po' strana, ma sto pensando(non ho proprio 
niente da fare) di far lavorare 2 o piu' micro in parallelo e in 
sincronismo.
L'idea e' questa :
Ho due o piu' micro programmati con lo stesso identico programma e collegati 
tutti allo stesso clock.
Nel caso specifico dei microcontrollori PIC, come si potrebbe fare in modo 
che nell'istante X tutti i micro stiano eseguendo l'istruzione alla 
locazione...chenneso' 0x3FA con uno sfasamento di pochi nanosecondi?
Lo sfasamento dovrebbe verificarsi solo nella fase di accensione, giusto?
Forse l'ho sparata grossa....vado a dormire
Ciao
Massimo IW0HKG 

 locazione...chenneso' 0x3FA con uno sfasamento di pochi nanosecondi?
Uhm .. bella domanda!
Provo a dire la mia (spero anch'io di non sparare cavolate)
Io metterei un loop senza fine nel main che semplicemente resetta il 
watchdog.
Poi metto un clock che va sullo setesso pin dei 2 micro, e imposto il pin 
come interrupt.
Il codice che voglio eseguire contemporaneamente lo eseguo sulla routine di 
interrupt.
che vada bene cosě ? 

 Lo sfasamento dovrebbe verificarsi solo nella fase di accensione, giusto?
nanosecondi ?
Dipende dal jitter che hai nella distribuzione del clock....Comunque credo 
che ci sia veramente poca differenza tra un micro e l'altro con lo stesso 
clock e lo stesso codice.....
Comunque potresti usare 2 pin dei micro come segnali di sincronia. L'idea di 
*Fede* dovrebbe funzionare ma ti limita ad usare l'interrupt e basta :-D
Ciao
CG 

 Lo sfasamento dovrebbe verificarsi solo nella fase di accensione, giusto?
Avevo fatto qualche esperimento anni fa, ma non ricordo di preciso i 
dettagli. In pratica oltre a distribuire il clock tramite un unico 
oscillatore avevo collegato assieme i reset dei due micro. L'incertezza 
dell'esecuzione della prima istruzione ce l'hai al power-up-reset. Ma 
una volta che le alimentazioni sono stabili e rilasci il pin di reset in 
modo pulito lo start-up dovrebbe essere deterministico.
Questo ti permette di avere due micro che eseguono lo stesso codice 
nello stesso momento, ma senza alcun feedback.
Se invece ti interessa eseguire la stessa operazione nello stesso 
momento conviene sincronizzarsi tramite un pin: però in questo caso non 
ha senso parlare di ns, al massimo di qualche ciclo di clock.
Cosa devi fare? Magari c'è una soluzione più comoda.
Ciao!
Marco / iw2nzm

 :-D
Quella di Fede e' una bella pensata ma io pensavo di far funzionare il 
normale flusso del programma in modo sincrono 

 Cosa devi fare? Magari c'è una soluzione più comoda.
Nulla di particolare. Ho sviluppato un'interfaccia grafica su una cpld, ma 
prima di farlo con la cpld avevo provato con un pic.
Mi sono accorto subito che per avere piu' di un colore e piu' risoluzione 
sullo schermo avevo bisogno di piu' velocita' o di processi piu' lenti ma 
paralleli.
Se riuscissi a sincronizzare alcuni pic di fascia bassa avrei lo stesso 
risultato delle cpld ma ad un costo ridicolo.
Potrei dare una interfaccia grafica per ogni applicazione che mi viene in 
mente.
Saluti
IW0HKG 

 Bisogna provare. 4 o 5 pic16f84 ce li ho buttati qualche parte, provero'.
Forse si potrebbe migliorare ancora la probabilità di averli sincroni 
rilasciando il reset con il clock fermo. Trascorso il tempo necessario 
al reset interno partire con il clock.
Ovviamente si deve assumere che il programma non vada in errore e che il 
wdt non vada in timeout. Potrebbe anche essere un'idea di rifare la 
procedura di "sync-start" quando uno dei micro si resetta.
Ciao!
Marco / iw2nzm

 procedura di "sync-start" quando uno dei micro si >resetta.
Anche questa idea mi piace.
Domani porto i pic in ufficio, rubo una millefori e qualche zoccolo e monto 
tutto l'hardware per le prove.
Notte notte
Massimo
IW0HKG 

al reset interno partire con il clock.
Temo che questa condizione non piacerebbe al µC, di solito (non conosco il pic
che vuoi usare ma è spesso così) il Reset viene alzato quando il clock sta già
funzionando da un pò.
Negli AVR si può programmare anche il delay o il numero di cicli dopo il reset
prima che inizi il programma, ma il clock deve esserere sempre già partito..
--
ciao
  Stefano

 prima che inizi il programma, ma il clock deve esserere sempre già partito..
Si certo, anche perché gli AVR non gradiscono variazioni di frequenza di 
clock "a caldo". Ma Stefano parlava di PIC perciò ho scritto quella frase!
Ciao!
Marco / iw2nzm