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

[31] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 0:56

questo protocollo lo userò sugli AVR, e lavorano sequenzialmente... la scrittura su EEPROM posso anche sospenderla, è piu importante la uart
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[32] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 0:59

Non capisco la risposta. Cosa intendi per lavorano sequenzialmente? Ogni core di ogni processore lavora (quasi) sequenzialmente. Questo non vuol dire che non ci siano più task da eseguire.

Non vorrei dire cavolate mi corregga qualcuno, ma non puoi sospenderla così allegramente :mrgreen:
Le operazioni su eeprom devono essere atomiche. Pena problemi.
"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

[33] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 1:05

Gli AVR sono microcontrollori, lavorano sequenzialmente e non hanno uno schedulatore. il programma viene scritto dentro un while true ed è quello il processo da eseguire, gli interrupt invece sono dei task secondari che vengono avviati solo quando si ha una una certa variazione nel pin di interrupt. viene interrotto il l'esecuzione corrente per dare spazio a quella che si trova nell'interrupt per poi tornare a quella di prima.
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[34] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 1:10

=_= '
Gli AVR sono microcontrollori

Ok

lavorano sequenzialmente

Ok

e non hanno uno schedulatore

Nemmeno un intel core i7 se è per questo...

il programma viene scritto dentro un while true ed è quello il processo da eseguire,

Ehm ok se vuoi dirla così... E se io nel while(true) scrivessi il codice per uno schedulatore?

Se ritieni di aver ragione non so che farci. Hai mai sentito parlare di sistemi operati real time?
Comunque ok facciamo finta di niente. I tuoi interrupt sono più veloci della luce, quello dell'interfaccia seriale è prioritario su tutti e i problemi non esistono. Se vuoi un protocollo ideale sia un protocollo ideale. Se poi non funziona non so che dirti :D
"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

[35] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 1:14

si, so che posso scrivere uno schedulatore... ma dove metterò questo protocollo non userò uno schedulatore :ok:
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[36] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 1:19

Non voglio sapere cosa verrà fuori. Comunque...

Idealmente parlando il nostro sistema non perderà mai sincronia. Questa è mantenuta da un segnale di clock lungo tutta la rete di nodi ed è generato dal nodo centrale. Il protocollo di comunicazione ad alto livello è il seguente:

Il nodo principale inserisce le richieste da fare su una coda eventualmente con priorità. Il task (che nel tuo caso non esiste) deputato all'invio delle richieste estrae la prima dalla coda e inizia ad inviarla. Tutti gli slave sospendono il loro lavoro e ricevono bit per bit tutti i dati inviati sul bus. Ricostruita l'informazione (non serve nemmeno verificare la coerenza tanto è ideale no?) sul buffer locale contollano la loro firma con quella nella richiesta. Se coincide si prodigano all'interpretazione altrimenti continuano nel loro lavoro.
Viene prodotto il pacchetto della risposta ed evaso sulla linea comune del bus dedicata alla ricezione da parte del nodo centrale. Solo quello con la firma giusta è abilitato all'invio quindi il bus è sempre occupato da un solo nodo alla volta. Il nodo centrale riceve felicemente tutti i dati ed è felice e contento.
Il nodo centrale ha inoltre un interrupt programmato come timeout che viene resettato ogni volta che riceve un carattere quando si trova in modalità che richede una risposta.
"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

[37] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 1:25

in ogni caso, anche se c'è uno schedulatore, gli interrupt prevalgono su tutto. perché quello che è scritto nel main() viene interrotto ed eseguito il codice dentro l' ISR. si potrebbe interrompere un'istruzione prima del context switch o un'istruzione dopo, perché tutto gira a ritmo di clock e quindi il context switch avverrebbe ugualmente.. :lol: si, così è quello che ho pensato. nelle foto che ho postato (sono state cancellate) avevo fatto una bozza di stack di richieste in modo che non ci sarebbero stati conflitti. per il fatto della priorità ho appena pensato che si puo classificare in base al comando/richiesta
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[38] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 1:25

Il protocollo di comunicazione prevede l'invio di richieste in pacchetti di lunghezza variabile, non superiore ad un certo limite.

Codice: Seleziona tutto
struct Packet{
    uint8 target;
    uint8 bytes;
    uint8 checksum;
   
    uint8 *data;
};


Questi oggetti vengono messi in coda dal nodo centrale e inviati secondo l'ordine. Magari viene fatto qualche controllo di coerenza in modo che il pacchetto sia sensato. E poi inizia a spedire tutto. Arrivato alla sezione data, inizia a scorrere il puntatore per bytes celle e manda pure quelle.
"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

[39] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 1:27

daniele1996 ha scritto:gli interrupt prevalgono su tutto.

Sai che gli interrupt possono essere abilitati, disabilitati e mascherati vero?
Sai anche che cosa è un'operazione atomica?
"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

[40] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 1:29

Perché mai usare uno stack? Con quale criterio servo l'ultimo arrivato? Evviva la starvation... :mrgreen:
"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

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Google [Bot] e 15 ospiti