Salve ragazzi, sul mio progettino ho due atmega che comunicano tramite seriale in modo unidirezionale quindi il primo (master) svolge la funzione di trasmissione e l'altro (slave) quella di ricezione.
Ad un certo punto vorrei inibire la ricezione seriale sullo slave e il metodo più efficiente che ho trovato per farlo è l'istruzione Serial.end()
Domanda: rischio in qualche modo di danneggiare i pin tx/rx dello slave se il master trasmette mentre lo slave non ha la seriale abilitata?
Lo so, è una domanda un pò insolita...
Grazie a tutti in anticipo
Non ho mai usato quella funzione ma non credo turbi minimamente il micro che in quel momento ha la seriale inibita.. credo che quel comando agisca solo a livello software eliminando eventuali dati che arrivano dalla seriale e non che porti a livello logico 0 o 1 il pin, prova a vedere dentro alla libreria cosa fa ...
Ho visto ma per me è più difficile capire che fa il codice che decifrare una tavoletta sumera...
void HardwareSerial::end()
{
cbi(*_ucsrb, _rxen);
cbi(*_ucsrb, _txen);
cbi(*_ucsrb, _rxcie);
}
Non hai alcun problema a disabilitare la connessione seriale. Quando p.es. mandi uno sketch sul chip di Arduino dov'è scritto che lo sketch precedente debba avere i pin tx/rx settati in un qualche modo? Se apri il serial monitor mandi sempre una comando tx al micro di Arduino, se non è "aperto" alla comunicazione semplicemente il serial monitor non mostra nulla.
Sulla lib davvero non sono in grado di aiutarti, per l'hw garantisco
Hai ragione, in effetti l'esempio del serial monitor spiega tutto.
Grazie 1000!