Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Protocollo

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[41] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 1:31

Quindi bisognerebbe impostare il limite di frame inviati/ricevuti per la variabile data.

sono a conoscenza della funzione sei() e cli().
un'operazione atomica è un'oprazione di base: somma sottrazione, shift ecc che non puo essere divisa

non ho mai sentito che si possono mascherare...
hai ragione, ho fatto confusione con i termini... la pila come si chiama?
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

1
voti

[42] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 1:36

Un'operazione atomica non è solo un'operazione di base. E' atomica una qualsiasi operazione composta di più parti che per motivi di sicurezza/coerenza dei dati/architetturali non DEVE subire preemption (interrotta). Un'operazione atomica richiede che prima del suo inizio gli interrupt siano bloccati e che vengano ripristinati solo al suo termine.
La pila appunto si chiama stack. Quello che serve è una coda queue o una priority queue.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[43] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 1:41

3ms bastano per completare un'operazione atomica?
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[44] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 1:44

Non si può sapere. Dipende dal tipo di operazione atomica e dal contesto. Comunque dimostra la tua buona volontà e scrivi il codice per implementare una coda con priorità o senza se non la ritieni fondamentale.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[45] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 1:46

Certo che si! stavo pensando a come farla. mi metto a lavoro!
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[46] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 1:48

il null esiste in C e in C++?
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[47] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 1:49

Bene. Ti do qualche consiglio per la realizzazione. Una coda richiede due metodi principali, uno per inserire ed uno per rimuovere dalla coda un oggetto. Durante l'inserzione va ordinata se richiesto. Il modello di memoria ideale per le code è quello della lista doppia.

Possibilmente realizzala in C++, visto che il gcc per avr c'è XD

NULL
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[48] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 2:09

non l'ho provato...
Codice: Seleziona tutto
typedef struct {
    uint8_t target;
    uint8_t bytes;
    uint8_t checksum;
   
    uint8_t *data;
} Packet;

class coda{
      private:
       Packet coda[10];
       uint8_t  pointer;     
       
      public:
             void inserisci(Packet p){
                  if(!pointer == 9){
                  coda[pointer] = p;
                  pointer++;
                  }else{
                     //sendFull();     
                  }
             }     
             Packet get(){
                    Packet out = coda[0];
                    for(uint8_t i = 0; i<9;i++){
                     coda[i] = coda[i+1];           
                    }       
                    pointer--;
                   return out;
             }
};

Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[49] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 2:12

No no no non ci siamo proprio. L'hai implementato con un array (malissimo) per di più non ridimensinabile (ancora peggio). Ci sono errori di sintassi e gli algoritmi usati sono lenti. Rivedi i miei suggerimenti di prima.
Ultima modifica di Foto Utentefairyvilje il 19 giu 2014, 2:14, modificato 1 volta in totale.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[50] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 2:13

Un attimo rivedo il codice sono le 2:14 xD
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti