Go Down

Topic: Baudrate auf Arduino M0 ändern (Read 138 times) previous topic - next topic

s0544342

Hallo,

ich nutze einen M0 und muss viele Daten über USB an den PC senden.
Ich sende die Daten mit serial.print an den PC.

Laut arduino.cc  soll mit serial.begin() die Baudrate vorgegeben werden aber egal was ich eingebe die Baudrate ändert sich nicht.  Ich muss mindesten 40.000 Daten pro Sekunde übertragen besser wären mehr.

Kann mir jemand helfen?

Hier noch mein Code den ich nutze:

Code: [Select]
   
    #include <Wire.h>
    #include <time.h>

    #define AD7991_Adresse 0x28 // Device address in which is also included the 8th bit for selecting the mode, read in this case.
   
    int Readbyte, Bytes=32,modulo,LSB,MSB,valeur;
    float X_out;
    String dataString;         // a String to hold incoming data
     
    void setup() {
     
      //Start_Time=micros();
      Wire.begin(); // Initiate the Wire library
      Serial.begin(115200);
      // reserve 200 bytes for the inputString:
      dataString.reserve(200);
      while(!SerialUSB){};
      Init_AD7991(); // initialisation du module Pmod AD2
      Wire.setClock(3400000);
     
     // Wire.requestFrom(AD7991_Adresse,Bytes); // Request the transmitted two bytes from the two registers
    }
    void Init_AD7991(void){
      Wire.beginTransmission(AD7991_Adresse);
      Wire.write(0x08); // configuration of the I2C communication in HIGH SPEED Mode
      Wire.endTransmission();
      Wire.beginTransmission(AD7991_Adresse);
      Wire.write(0x10); // configuration of Pmod AD2 (read of V0)
      //Wire.write(0x20);
      Wire.endTransmission();
       
}
    void loop() {
      dataString = "" ;
      int j=1;
      while(j<=5){
      Wire.requestFrom(AD7991_Adresse,Bytes); // Request the transmitted two bytes from the two registers
      if(Wire.available()<=Bytes) {
      for (int i=1; i <= Bytes; i++){
        Readbyte = Wire.read();// Reads the data from the register
         modulo=i%2;
        if (modulo>0){
        MSB=Readbyte;
                }
        else{
        LSB=Readbyte;
        valeur=MSB<< 8 |LSB ;
        X_out=valeur*5.0000/4096.0000;
        dataString += String(X_out);
        dataString += ",";
          }       
          }
        j++;
        }
      }
       SerialUSB.println(dataString);
     
       }


gregorss

Code: [Select]
 
          }      
          }

Wenn ich zwei Klammern so übereinander stehen sehe, bekomme ich fast Pickel. Mein „Erste-Hilfe-Vorschlag": Formatiere/Gliedere Deinen Code so, dass man Strukturen schon dann erkennt, wenn man den Code selbst noch nicht gelesen hat. Also zum Beispiel: Einheitliche Einrückungen und Klammerungen, überflüssige (Leer-) Zeilen löschen ...

Gruß

Gregor
Wenn man keine Probleme hat, kann man sich welche machen (Häuptling „Großes Lötauge" der M3-Hopi)

temucin

#2
Mar 13, 2018, 04:10 pm Last Edit: Mar 13, 2018, 04:11 pm by temucin
Hallo,

als erstes ... wo ist !SerialUSB deklariert.
Du öffnest eine Serielle Com Verbindung und dann sendest du über USB?

Ich denke das kann so nicht funktionieren. Denk nochmal über deine Konstruktion nach.
Nimm mal das USB weg.....

Gruss Temucin alias TFT

postmaster-ino

Hi

40000 'Daten' - wenn ich von Byte ausgehen darf, sind Das 400000 (4 hundert tausend) Bit - Das wird mit 115200Baud 'schon knapp' - wenn wirklich Alles gut geht, wirst Du 11520 Byte/Sek übertragen können, Da muß aber wirklich ALLES zusammen passen und sauber laufen.

MfG

Thorsten4171

Quote
Ich denke das kann so nicht funktionieren. Denk nochmal über deine Konstruktion nach.
Nimm mal das USB weg.....
@temucin
Wird beim überprüfen als Fehler ausgeworfen

Go Up