Buongiorno a tutti, avendo la necessità di sincronizzare il lampeggio di 2 leds su due stm8 diversi con stessa elettronica e stesso FW ho realizzato una connessione tra le due schede con un filo solo + il riferimento di massa tramite il seguente circuito:
ora il problema principale è come fare per sincronizzare il lampeggio su queste due board in modo da avere gli stessi tempi di on e off.
Mi spiego meglio...i due led lampeggiano ogni 100ms, se vado con le sonde dell'oscilloscopio vedo che hanno un disallineamento nel fronte di salita e di discesa...
Quello che vorrei fare è avere lo stesso fronte di salita e di discesa e sincronizzarli ogni tot ms cosa che non riesco proprio a capire come fare visto che non c'è un vero master o uno slave.
Sincronizzazione
Moderatore:
Paolino
21 messaggi
• Pagina 1 di 3 • 1, 2, 3
0
voti
Non conosco l'applicazione ma potresti provare una leader election. All avvio ogni micro aspettata un tempo pseudo random è quello che parte prima sarà il master. A quel punto è facile fare la sincronia. Un altro modo potrebbe essere scrivere un algoritmo di correzione di fase di entrambi e dovrebbero convergere chi è più avanti e chi è più indietro su una fase centrale.
Davide
Davide
0
voti
Ciao, grazie per la risposta. Allora per quanto riguarda la prima ci avevo anche io pensato però se per una casualità partono entrambi nello stesso momento non esiste più il sincronismo suppono.
Il problema forse più grosso è che con quel circuito che ho realizzato quando trasmetto 1 ricevo allo stesso tempo 1 quindi dovrei forse verificare quando non trasmetto se ricevo o meno un uno.
Come esempio ho fatto questo codice che ho testato e non funziona purtoppo:
Per il secondo consiglio che mi hai dato hai voglia di approfondire?
Il problema forse più grosso è che con quel circuito che ho realizzato quando trasmetto 1 ricevo allo stesso tempo 1 quindi dovrei forse verificare quando non trasmetto se ricevo o meno un uno.
Come esempio ho fatto questo codice che ho testato e non funziona purtoppo:
- Codice: Seleziona tutto
void Syncro(void)
{
switch(SyncState)
{
case 1:
GPIO_WriteHigh(SYNC_TX);
SyncState = 2;
break;
case 2:
valTx = GPIO_ReadInputPin(SYNC_TX);
valRx = GPIO_ReadInputPin(SYNC_RX);
/*Se Tx = 0 e Rx = 1 divento lo slave*/
if (valTx == FALSE && valRx == TRUE) SyncState = 3;
/*Se Tx = 1 e Rx = 0 divento il master*/
if (valTx ==TRUE && valRx ==FALSE) SyncState = 4;
break;
}
}
Per il secondo consiglio che mi hai dato hai voglia di approfondire?
0
voti
o modifichi il circuito, oppure nel codice prevedi quest'ultima tua considerazione che al momento è esclusa.TheMask ha scritto:(...) Il problema forse più grosso è che con quel circuito che ho realizzato quando trasmetto 1 ricevo allo stesso tempo 1 quindi dovrei forse verificare quando non trasmetto se ricevo o meno un uno (...)
Non sarebbe esaustivo, ma intanto allinei i propositi.
Saluti
W - U.H.F.
-

WALTERmwp
30,2k 4 8 13 - G.Master EY

- Messaggi: 8986
- Iscritto il: 17 lug 2010, 18:42
- Località: le 4 del mattino
0
voti
In che applicazione lavora? Domestica, automotive, industriale? A che distanza saranno i due circuiti? Quel circuito potrebbe non essere il massimo tra l' altro con un pull down passivo di quelle dimensioni.
Se peschi un numero "sufficientemente random" la probabilità che due micro peschino lo stesso numero è più bassa rispetto a quella che si rompano in maniera diversa. È sicuramente un fault (e magari va gestito) ma potrebbe essere molto più improbabile di mille altri fault magari hardware.
Davide
Se peschi un numero "sufficientemente random" la probabilità che due micro peschino lo stesso numero è più bassa rispetto a quella che si rompano in maniera diversa. È sicuramente un fault (e magari va gestito) ma potrebbe essere molto più improbabile di mille altri fault magari hardware.
Davide
0
voti
TheMask ha scritto: avendo la necessità di sincronizzare il lampeggio di 2 leds su due stm8 diversi con stessa elettronica e stesso FW ho realizzato una connessione tra le due schede con un filo solo + il riferimento di massa
Devi soltanto avere un secondo led che banalmente lampeggia all'unisono col primo, o vuoi mantenere l'identità dei due FW e vuoi sincronizzarli in assoluto come clock e come esecuzione?
0
voti
Ciao,
allora come applicazione è industriale, come distanza le schede sono a circa 7/8m l'una dall'altra e come alimentazione 5V (ho previsto comunque la possibilità di switchare a 12/24 V se non dovesse funzionare. Considerate che il circuito sopra è solo di massima per farvi capire quello che ho fatto e come funziona ma ovviamente a tutte le resistenze,condensatori e protezioni di contorno.
EcoTan:
Il firmware e l'hardware deve rimanere lo stesso e i led della scheda 1 devono accendersi e spegnersi negli stessi tempi del led della scheda 2...
allora come applicazione è industriale, come distanza le schede sono a circa 7/8m l'una dall'altra e come alimentazione 5V (ho previsto comunque la possibilità di switchare a 12/24 V se non dovesse funzionare. Considerate che il circuito sopra è solo di massima per farvi capire quello che ho fatto e come funziona ma ovviamente a tutte le resistenze,condensatori e protezioni di contorno.
EcoTan:
Il firmware e l'hardware deve rimanere lo stesso e i led della scheda 1 devono accendersi e spegnersi negli stessi tempi del led della scheda 2...
0
voti
Domanda del citrullo
ma se invece di sincronizzare i micro non fai controllare direttamente tutti i led da un solo micro con un sincronismo che non coinvolge il micro "locale". il micro "locale" eventualmente può inibire il segnale di accensione del propro led per tenerlo sempre spento oppure sempre acceso.
Per distinguere micro locale puoi usare un pin del micro con un jumper da controllare all'accensione.
ma sono le tre del mattino .....
ma se invece di sincronizzare i micro non fai controllare direttamente tutti i led da un solo micro con un sincronismo che non coinvolge il micro "locale". il micro "locale" eventualmente può inibire il segnale di accensione del propro led per tenerlo sempre spento oppure sempre acceso.
Per distinguere micro locale puoi usare un pin del micro con un jumper da controllare all'accensione.
ma sono le tre del mattino .....
-

luxinterior
4.311 3 4 9 - Master EY

- Messaggi: 2690
- Iscritto il: 6 gen 2016, 17:48
0
voti
forse, se le due schedine costituiscono la struttura d'una sorta di back-up caldo, non si può.luxinterior ha scritto:(...) ma se invece di sincronizzare (...)
Sarebbe una, tra le ragioni possibili, per avere firmware identico.
Magari sono in errore, ma ci sta facendo vedere, a livello fw e hw, solo lo stretto necessario per ricevere un supporto, intorno potrebbe esserci un pochino d'altra roba.
Il dubbio che ho è che trattandosi d'una applicazione industriale venga realizzata in questo modo, probabilmente più dedicata ad un contesto artigianale.
Saluti
W - U.H.F.
-

WALTERmwp
30,2k 4 8 13 - G.Master EY

- Messaggi: 8986
- Iscritto il: 17 lug 2010, 18:42
- Località: le 4 del mattino
0
voti
[10] Re: Sincronizzazione
Allora quella del micro locale non posso farlo perché le due board possono funzionare anche in modo indipendente...per adesso sono riuscito a mettere in piedi il discorso master e slave ritardando l’avvio..i led ovviamente ha un timer con interrupt che gestisce lo spegnimento e l’accensione e in pratica il master manda il segnale alto e resetta i timer della prima board mentro lo slave lo riceve il segnale alto e a sua volta resetta il timer della seconda board...nonostante tutto risultano lo stesso sfasati
21 messaggi
• Pagina 1 di 3 • 1, 2, 3
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 13 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)




