Pages: 1 [2] 3 4 ... 8   Go Down
Author Topic: problema con SoftwareSerial e NewSoftSerial  (Read 5121 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 1
Posts: 185
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

le librerie nascono apposta per evitare questi casini...
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 956
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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:
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?  smiley-confuse
grazie ancora per l'aiuto smiley-wink
Logged

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

Global Moderator
Milano, Italy
Offline Offline
Edison Member
*****
Karma: 19
Posts: 1176
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

F

Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 956
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

dov'era scritto?? questa frase non l'avevo proprio notata...
comunque adesso ho provato a 9600 e va, grazie smiley-wink
Logged

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

Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 956
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ok ok ora va tutto, finalmente ho capito bene come funziona, grazie a tutti! smiley-wink
un'ultima domanda... posso creare più di una NewSoftSerial giusto? non vanno in conflitto fra di loro?
Logged

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22813
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 956
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ok ho capito grazie mille smiley-wink
Logged

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

Milan, Italy
Online Online
Sr. Member
****
Karma: 0
Posts: 346
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


* IMG_20111210_111518.jpg (59.54 KB, 640x480 - viewed 17 times.)
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22813
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Milan, Italy
Online Online
Sr. Member
****
Karma: 0
Posts: 346
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Alberto
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22813
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 956
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink
Logged

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

Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 956
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

lasciate stare il problema precedente a quanto pare si è sistemato da solo... magia smiley
non ho capito una cosa della NewSoftSerial... perchè non mi compila la funzione write? non è prevista dalla libreria?
Logged

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

Pages: 1 [2] 3 4 ... 8   Go Up
Jump to: