Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Sincronizzazione

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Sincronizzazione

Messaggioda Foto UtenteTheMask » 6 lug 2019, 17:00

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.
Avatar utente
Foto UtenteTheMask
35 3
New entry
New entry
 
Messaggi: 72
Iscritto il: 14 gen 2015, 16:05

0
voti

[2] Re: Sincronizzazione

Messaggioda Foto Utentedadduni » 6 lug 2019, 18:10

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
Avatar utente
Foto Utentedadduni
1.650 2 6 12
Expert EY
Expert EY
 
Messaggi: 1021
Iscritto il: 23 mag 2014, 16:26

0
voti

[3] Re: Sincronizzazione

Messaggioda Foto UtenteTheMask » 7 lug 2019, 10:23

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:
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?
Avatar utente
Foto UtenteTheMask
35 3
New entry
New entry
 
Messaggi: 72
Iscritto il: 14 gen 2015, 16:05

0
voti

[4] Re: Sincronizzazione

Messaggioda Foto UtenteWALTERmwp » 7 lug 2019, 12:39

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 (...)
o modifichi il circuito, oppure nel codice prevedi quest'ultima tua considerazione che al momento è esclusa.
Non sarebbe esaustivo, ma intanto allinei i propositi.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
22,1k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 6364
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[5] Re: Sincronizzazione

Messaggioda Foto Utentedadduni » 7 lug 2019, 15:54

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
Avatar utente
Foto Utentedadduni
1.650 2 6 12
Expert EY
Expert EY
 
Messaggi: 1021
Iscritto il: 23 mag 2014, 16:26

0
voti

[6] Re: Sincronizzazione

Messaggioda Foto UtenteEcoTan » 7 lug 2019, 17:27

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?
Avatar utente
Foto UtenteEcoTan
5.340 4 10 13
Expert EY
Expert EY
 
Messaggi: 3190
Iscritto il: 29 gen 2014, 8:54

0
voti

[7] Re: Sincronizzazione

Messaggioda Foto UtenteTheMask » 7 lug 2019, 23:57

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...
Avatar utente
Foto UtenteTheMask
35 3
New entry
New entry
 
Messaggi: 72
Iscritto il: 14 gen 2015, 16:05

0
voti

[8] Re: Sincronizzazione

Messaggioda Foto Utenteluxinterior » 8 lug 2019, 3:05

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 .....
Avatar utente
Foto Utenteluxinterior
2.397 2 4 8
Expert EY
Expert EY
 
Messaggi: 1388
Iscritto il: 6 gen 2016, 17:48

0
voti

[9] Re: Sincronizzazione

Messaggioda Foto UtenteWALTERmwp » 8 lug 2019, 8:48

luxinterior ha scritto:(...) ma se invece di sincronizzare (...)
forse, se le due schedine costituiscono la struttura d'una sorta di back-up caldo, non si può.
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.
Avatar utente
Foto UtenteWALTERmwp
22,1k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 6364
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[10] Re: Sincronizzazione

Messaggioda Foto UtenteTheMask » 8 lug 2019, 20:53

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
Avatar utente
Foto UtenteTheMask
35 3
New entry
New entry
 
Messaggi: 72
Iscritto il: 14 gen 2015, 16:05

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti