Ciao a tutti, mi servirebbe un aiuto: ho "demultiplexato" l'uscita seriale di arduino su 4 uscite seriali differenti mediante 4 porte OR (con un 4071), con un ingresso in comune a tutte con il seriale da trasmettere, e l'altro ingresso di ciascun OR comandato da un uscita digitale in modo da dare o meno il consenso alla trasmissione su quella particolare uscita (basso=consenso).
Il problema nasce dalla gestione della logica di attivazione degli OR, perché la scrittura su seriale avviene in modo asincrono, quindi se io dopo aver dato il comando di scrittura abilito/disabilito le uscite senza aspettare che la trasmissione sia avvenuta (con flush()) le uscite vengono abilitate/disabilitate molto in anticipo rispetto alla trasmissione dati.
Purtroppo però il comando flush() blocca l'esecuzione di tutto il resto del programma finche la trasmissione non è terminata, e questo nel mio caso rappresenta un grosso problema (devo mantenere un refresh degli ingressi molto elevato anche "durante" la trasmissione su seriale) .
Stavo quindi cercando un modo per "rendere bloccante flush() solamente per la funzione di attivazione degli OR"; meglio, mi domandavo se esistesse una flag di "buffer TX vuoto" da controllare ad ogni ciclo, senza bloccare completamente l'esecuzione del programma. Su google ho trovato qualcosa a riguardo, ma le risposte non mi sono per nulla chiare. QUalcuno saprebbe aiutarmi? Grazie
Flag per buffer TX vuoto
2 messaggi
• Pagina 1 di 1
0
voti
0
voti
EDIT: non avevo pensato di guardare direttamente il sorgente del comando flush: qui https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/HardwareSerial.cpp alla riga 213 il ciclo while appartenente al flush() continua finché il bit UDRIE0 del registro *_ucsrb è presente oppure finché il bit TXC0 del registro *_ucsra è "pulito"; facendo qualche ricerca sul bit TXC0 mi pare di aver capito che sia proprio quello che sto cercando, ovvero una flag di trasmissione completata. Non mi resta che provare .. qualcuno ha qualche consiglio in merito?
2 messaggi
• Pagina 1 di 1
Chi c’è in linea
Visitano il forum: Nessuno e 1 ospite

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)
