Protocollo
Moderatore:
Paolino
0
voti
[31] Re: Protocollo
questo protocollo lo userò sugli AVR, e lavorano sequenzialmente... la scrittura su EEPROM posso anche sospenderla, è piu importante la uart
-

daniele1996
610 3 8 11 - Sostenitore

- Messaggi: 1554
- Iscritto il: 29 ago 2011, 11:29
0
voti
[32] Re: Protocollo
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
Le operazioni su eeprom devono essere atomiche. Pena problemi.
Non vorrei dire cavolate mi corregga qualcuno, ma non puoi sospenderla così allegramente
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?
Qualcosa non ha funzionato...
Lo sapete che l'arroganza in informatica si misura in nanodijkstra?
-

fairyvilje
15,0k 4 9 12 - G.Master EY

- Messaggi: 3047
- Iscritto il: 24 gen 2012, 19:23
0
voti
[33] Re: Protocollo
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.
-

daniele1996
610 3 8 11 - Sostenitore

- Messaggi: 1554
- Iscritto il: 29 ago 2011, 11:29
0
voti
[34] Re: Protocollo
=_= '
Ok
Ok
Nemmeno un intel core i7 se è per questo...
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
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
"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?
Qualcosa non ha funzionato...
Lo sapete che l'arroganza in informatica si misura in nanodijkstra?
-

fairyvilje
15,0k 4 9 12 - G.Master EY

- Messaggi: 3047
- Iscritto il: 24 gen 2012, 19:23
0
voti
[35] Re: Protocollo
si, so che posso scrivere uno schedulatore... ma dove metterò questo protocollo non userò uno schedulatore 

-

daniele1996
610 3 8 11 - Sostenitore

- Messaggi: 1554
- Iscritto il: 29 ago 2011, 11:29
0
voti
[36] Re: Protocollo
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.
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?
Qualcosa non ha funzionato...
Lo sapete che l'arroganza in informatica si misura in nanodijkstra?
-

fairyvilje
15,0k 4 9 12 - G.Master EY

- Messaggi: 3047
- Iscritto il: 24 gen 2012, 19:23
0
voti
[37] Re: Protocollo
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..
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
-

daniele1996
610 3 8 11 - Sostenitore

- Messaggi: 1554
- Iscritto il: 29 ago 2011, 11:29
0
voti
[38] Re: Protocollo
Il protocollo di comunicazione prevede l'invio di richieste in pacchetti di lunghezza variabile, non superiore ad un certo limite.
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.
- 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?
Qualcosa non ha funzionato...
Lo sapete che l'arroganza in informatica si misura in nanodijkstra?
-

fairyvilje
15,0k 4 9 12 - G.Master EY

- Messaggi: 3047
- Iscritto il: 24 gen 2012, 19:23
0
voti
[39] Re: Protocollo
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?
Qualcosa non ha funzionato...
Lo sapete che l'arroganza in informatica si misura in nanodijkstra?
-

fairyvilje
15,0k 4 9 12 - G.Master EY

- Messaggi: 3047
- Iscritto il: 24 gen 2012, 19:23
0
voti
[40] Re: Protocollo
Perché mai usare uno stack? Con quale criterio servo l'ultimo arrivato? Evviva la starvation... 
"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?
Qualcosa non ha funzionato...
Lo sapete che l'arroganza in informatica si misura in nanodijkstra?
-

fairyvilje
15,0k 4 9 12 - G.Master EY

- Messaggi: 3047
- Iscritto il: 24 gen 2012, 19:23
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Google [Bot] e 15 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)