dubbi sulla softwareSerial

buondì a tutti,
ho un dubbio su questa libreria,ma non mi son messo ancora a studiarmi bene il codice..
qualcuno saprebbe dirmi come mai,in caso di seriali multiple, bisogna sempre mettere il listen prima di poter ascoltare?non si potrebbero usare gli interrupt(non intendo quei pochi messi direttamente a disposizione dall'ide,ma quelli previsti dalluC) per vedere se ci son dati in arrivo?
supponendo di avere molti "slave" collegati all'arduino che OGNI tanto trasmettano pochi dati..

E' lo stesso autore che lo spiega nel sito "Arduiniana" arduiniana.org/libraries/newsoftserial/.

La NewSoftSerial (da cui deriva la Software Serial) consente istanze multiple, essendo, però, solo una in ascolo (listen) per volta

...
Imagine four serial devices connected to an Arduino, each transmitting at 38,400 baud. As bits arrive, Arduino’s poor little processor must sample and process each of 4 incoming bits within 26 microseconds or else lose them forever.
...

Se uno ne ha proprio bisogno, potrebbe pensare ad una MEGA con 4 USART a bordo.

Ettore Massimo Albani

grazie per la risposta :slight_smile:
io stavo pensando ad un'altra situazione: ogni device ogni tanto(>1sec) trasmette pochi byte all'arduino..quando l'arduino si accorge che c'è una comunicazione entrante,commuta automaticamente su essa..in molte situazioni hai una trasmissione NON simultanea da parte dei vari device..volevo chiedere se c'era qlks che implementasse ciò,x esempio usando i pinChangeInterrupt dell'atmel..

Sì, avevo capito la tua domanda, ma non so se si possa fare con la libreria esistente.

Dando un'occhiata la listato cpp, pare che utilizzi gli interrupt interni PCINT (quattro per l'esattezza) per operare sull'istanza creata ed attiva in quel momento.

La limitazione vale solo per la ricezione e non dobbiamo dimenticare che c'è anche la trasmissione: probabilmente questi interrupt servono a gestirla.

Comunque la tua idea mi sembra fattbile: perché non la proponi direttamente al suo ideatore?

quasi quasi provo a modificarla..ci sarebbe qualcun altro interessato in questa modifica?