Visualizza messaggio singolo
Vecchio 03 luglio 12, 10:57   #13 (permalink)  Top
Davide B.
User
 
Data registr.: 12-04-2006
Residenza: Mondovì
Messaggi: 103
Per me puoi anche usare dei BVA, non è che sono invidioso.
Mi rimane il dubbio del fatto che un ciclo while(1) con una serie di if annidate non abbia jitter maggiore di una gestione interrupt fatta "al minimo sindacale".
Mi spiego meglio.
Da quello che ho capito, i tuoi main dovrebbero assomigliare a qualcosa del genere
Codice:
while(1)
{
if (RichiestaPeriferica1)
{
}
if (RichiestaPeriferica2)
{
}
if (RichiestaPeriferica3)
{
}
if (RichiestaPeriferica4)
{
}
}
o, ancora peggio, il ciclo while è sostituito da un timer (in interrupt).
Supponiamo che debba essere servita Periferica4, e che la richiesta arrivi subito dopo l'if (RichiestaPeriiferica4)
Nella condizione migliore, ogni if può essere scritta con 4 istruzioni in assembler, la while (1) con un bel salto incondizionato all'indietro.
Nella migliore delle ipotesi hai che la latenza, a seconda del momento in cui ti arriva la richiesta, può variare di diversi cicli macchina, e che la latenza è pesantemente dipendente da come è fatto il ciclo.
Se ti arriva prima del ciclo, magari ti ci vuole un ciclo macchina, se ti arriva dopo, magari anche una ventina o una trentina...
Se poi mi aiuti a capire, posso anche correre il rischio di imparare qualcosa.
Davide B. non è collegato   Rispondi citando