Citazione:
Originalmente inviato da Davide B. Dunque... USB, Ethernet, timer, seriali, SD... tutto in polling?
Nei PIC può darsi, negli ARM sicuramente esistono modi più efficienti.
Quando ho 3 seriali utilizzo 3 interrupt diversi.
Forse fai un po' di confusione tra kernel real time ed interrupt... |
La scelta di usare o meno interrupt a iosa dipende principalmente dal tipo di applicazione, dall'affidabilità che si vuole raggiungere e sicuramente anche dall'architettura del micro.
E' chiaro che ogni interrupt va ad interromper il normale flusso del programma, comporta il salvataggio di registri, della posizione dell'ultima istruzione e magari anche di qualche variabile nonchè il loro successivo ripristino.
Tutte queste operazioni quindi vanno ad alterare il tempo di ciclo dell'intera applicazione e quando si usano più interrupt, anche se con livelli di priorità ben congegnati, le possibiltà che qualcosa vada storto aumentano. Sicuramente si ha una latenza non predicibile del tempo di ciclo.
Gli ARM ed anche i dsPIC e famiglie superiori hanno le funzioni DMA che consentono ad esempio di ricevere dati senza interrompere la normale schedulazione del programma, quindi basta all' interno del ciclo principale andarsi a leggere il flag del canale DMA e se settato operare di conseguenza a tempo opprtuno.
A me l'uso smodato degli interrupt in applicazioni semplici come quelle che mi trovo normalmente a realizzare non piace e mi ricorda un poco lo 'spaghetti code' irto di 'GOTO' di alcuni programmatori in BASIC; in genere preferisco anche usare più micro piccoli dedicati ad operazioni time-critical anzichè un megaprocessore che fa tutto lui, son scelte.