Go Down

Topic: problema con SoftwareSerial e NewSoftSerial (Read 5517 times) previous topic - next topic

Etti

ma le due librerie non possono coesistere indicando l'una o l'altra dentro a determinate funzioni?

lesto

le librerie nascono apposta per evitare questi casini...
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ƎR

ok quindi abbiamo scoperto il motivo per cui SoftwareSerial non va come pensavo che andasse  :smiley-slim:
ora sto provando la NewSoftSerial sembra che vada ma ho un problema del quale non capisco il motivo, ho collegato il 2009 con la NewSoftSerial alla Serial1 del mega2560... quindi ho caricato questi due sketch:
questo per il 2009:
Code: [Select]
#include <NewSoftSerial.h>
NewSoftSerial ER_likenoother(2, 3);

void setup() 
{
  Serial.begin(115200);
  ER_likenoother.begin(115200);
}

void loop()
{
 
  while (ER_likenoother.available())
      Serial.print((char)ER_likenoother.read());
 
  while (Serial.available())
      ER_likenoother.print((char)Serial.read());
}


e questo per il mega:
Code: [Select]
void setup() 
{
  Serial.begin(115200);
  Serial1.begin(115200);
}

void loop()
{
  while (Serial1.available())
      Serial.print((char)Serial1.read());
     
  while (Serial.available())
      Serial1.print((char)Serial.read());
}


e quindi ho aperto 2 serial monitor e invio su uno e ricevo sull'altro...
quando invio dal 2009 al mega non ho problemi e leggo quello che ho inviato, mentre quando invio dal mega al 2009 leggo delle cose strane sul serial monitor abbinato al 2009...
è un problema del NewSoftSerial o ho sbagliato io qualcosa?  :~
grazie ancora per l'aiuto ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Federico Vanzati

Preso dalla pagina del reference:
Quote
Using speeds higher than 9600 baud will result in faulty communication.


F

ƎR

dov'era scritto?? questa frase non l'avevo proprio notata...
comunque adesso ho provato a 9600 e va, grazie ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

ƎR

ok ok ora va tutto, finalmente ho capito bene come funziona, grazie a tutti! ;)
un'ultima domanda... posso creare più di una NewSoftSerial giusto? non vanno in conflitto fra di loro?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72

Ricordati che ogni NewSoftSerial crea un buffer ed inserisce un codice in background gestito da un interrupt sul cambio di stato del pin di ricezione. Quindi 1 o 2 istanze non creano problemi, ma se ne metti molte rallenti il funzionamento del micro e rischi di esaurire la memoria.

ƎR

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

bigjohnson

Ciao,
proprio questa mattina ha fatto delle prove con l'ultima versione dell'ide e la softserial inclusa, tutto funziona bene e non ci sono problemi.

Alberto

leo72

Funziona anche in ricezione sul Tiny? A me non funzionava.
Se a te funziona, forse allora la nuova NewSoftSerial dell'IDE 1.0 è stata aggiornata.

bigjohnson

Io ho usato la SoftwareSerial con arduino uno e va.
Non ho il Tiny.

Alberto

leo72

Siccome stavamo parlando di Tiny, negli ultimi post, e siccome vedevo un piccolo chip sul tuo schedino, pensavo che ti riferissi a questo  ;)

lesto


Ricordati che ogni NewSoftSerial crea un buffer ed inserisce un codice in background gestito da un interrupt sul cambio di stato del pin di ricezione. Quindi 1 o 2 istanze non creano problemi, ma se ne metti molte rallenti il funzionamento del micro e rischi di esaurire la memoria.


attenzione, la NewSoftSerial può escoltare solo un RX alla volta... la funzione listen() è stata fatta apposta per qundi si hanno più istanze, per scegliere chi deve ascoltare in quel momento. Quindi niente simil parallelismo delle comunicazioni su più seriali virtuali (anche se sincermaente non capisco questa limitazione)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ƎR

ok ok per adesso non mi servono ancora 2 NewSoftSerial, magari in futuro...

comunque non capisco perchè se mando una sringa "1234567890" dal serial monito del mega al 2009, il 2009 riceve "1234567890"; mentre se mando la stessa stringa dal serial monitor del 2009 al mega, sul serial monitor del mega vedo solo "123"... il codice è quello postato in precedenza con l'unica variazione dei baud da 115200 a 9600... dov'è il problema? mi sono dimenticato di considerare qualcosa? ho modificato la libreria per adattarla agli ATtiny può aver creato qualche problema?


per i tiny sto provando per inviare inviano senza problemi a quanto pare, ma non capisco in ricezione cosa ricevono e se ricevono soprattutto...
ma questo argomento lo lascio nel topic degli ATtiny: http://arduino.cc/forum/index.php/topic,77374.75.html ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

ƎR

lasciate stare il problema precedente a quanto pare si è sistemato da solo... magia :)
non ho capito una cosa della NewSoftSerial... perchè non mi compila la funzione write? non è prevista dalla libreria?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Go Up