Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Polling

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: Polling

Messaggioda Foto Utentec1b8 » 20 set 2013, 17:42

wizard ha scritto:...darei veramente troppo impiccio :lol:

Per me non c'è problema, vedi tu...
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[12] Re: Polling

Messaggioda Foto Utentewizard » 20 set 2013, 17:58

Codice: Seleziona tutto
void master_TX(unsigned char *ind,char *ACK_RCV)
{
unsigned char ind_W[5];
char i,N_DISP;

N_DISP=polling(ind_W);
for(i=0;i<N_DISP;i++)
{
   start();
   idle();
   write(ind_W[i]);
   idle();
   if(ACKSTAT==0)
   {   
      write(CMD_TEMP);
      idle();
      if(ACKSTAT==0)
      {   
         restart();
         idle();
         *ACK_RCV=master_RX(ind_W[i]);
         *ind=ind_W[i];
         break;
      }
      else
      {
         *ACK_RCV=0;
         stop();
         idle();
      }
   }
   else
   {
      *ACK_RCV=0;
      stop();
      idle();
   }
}
}


Allora ti spiego a parole la funzione mastr_RX...praticamente tale funzione prende il singolo indirizzo, ne aggiunge una unità e, qualora riceve l'ack dallo slave, pone ACK_RCV a 1 e scrive il valore della temperatura altrimenti pone ACK_RCV a 0; alla fine c'è ovviamente un return ACK_RCV
Pensandoci bene il problema non può stare nella funzione che richiama master_TX perché essa stampa solo l'indirizzo trovato qualora ACK_RCV=1 o informa l'utente della non esistenza del dispositivo qualora ACK_RCV=0
Inoltre non può neppure stare nella funzione master_RX di cui ti ho detto
Il problema potrebbe stare sul break che ho inserito...ti dico subito però che sia così che commentato il risultato che ottengo non è quello desiderato
Avatar utente
Foto Utentewizard
25 1 5
Frequentatore
Frequentatore
 
Messaggi: 162
Iscritto il: 12 gen 2013, 17:48

0
voti

[13] Re: Polling

Messaggioda Foto Utentec1b8 » 20 set 2013, 18:03

Vista al volo direi che:
- con il break dovrebbe restituire solo il primo slave
- senza break dovrebbe restituire solo l'ultimo slave

Ma la guardo meglio....
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[14] Re: Polling

Messaggioda Foto Utentewizard » 20 set 2013, 18:09

Infatti è così!!! Ovviamente a me piacerebbe "non perdere tempo" e che una volta si è verificato l'ack esca dalla funzione per fare altro, da qui l'dea del break
Avatar utente
Foto Utentewizard
25 1 5
Frequentatore
Frequentatore
 
Messaggi: 162
Iscritto il: 12 gen 2013, 17:48

0
voti

[15] Re: Polling

Messaggioda Foto Utentec1b8 » 20 set 2013, 20:38

Ok, ma se esce appena riceve un ACK non puoi pretendere anche di elaborare tutti gli slave.
Devi decidere: elabori tutti gli slave o impieghi il minor tempo possibile ed elabori solo uno slave.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[16] Re: Polling

Messaggioda Foto Utentewizard » 21 set 2013, 10:36

Certo, questo mi è chiaro. Per tale ragione poi ho tolto il break non avendo però miglioramenti sostanziali
Avatar utente
Foto Utentewizard
25 1 5
Frequentatore
Frequentatore
 
Messaggi: 162
Iscritto il: 12 gen 2013, 17:48

0
voti

[17] Re: Polling

Messaggioda Foto Utentec1b8 » 21 set 2013, 12:25

No perché, come dicevo, la master_TX senza il break restituisce ancora un solo slave: l'ultimo.
La routine infatti riceve 2 parametri di tipo char (puntatori a char) e nn può restituite in un char più di un valore, quale valore? Senza il break l'ultimo letto e di conseguenza l'ultimo indirizzo.
Come per la polling dovresti trattare array di char e valorizzare i diversi elemnti dell'array.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[18] Re: Polling

Messaggioda Foto Utentewizard » 26 set 2013, 18:47

Foto Utentec1b8 problema risolto!!! :D
Grazie per i consigli e la pazienza :-)
Avatar utente
Foto Utentewizard
25 1 5
Frequentatore
Frequentatore
 
Messaggi: 162
Iscritto il: 12 gen 2013, 17:48

0
voti

[19] Re: Polling

Messaggioda Foto Utentec1b8 » 27 set 2013, 8:50

Ottimo! :ok:
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

Precedente

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti