- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 11

Thema: Verbindung zwischen zwei uC

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Unabhängig vom Kompiler/IDE sind while-Schleifen tötlich, egal wie harmlos sie aussehen:

    while (Serial.available()==0);
    while((StringStatus = StringStatus_empfange) && (Serial.available()==0))

    (und 'ne Zuweisung statt des Vergleichs ist besonders fies ;)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Zitat Zitat von radbruch Beitrag anzeigen
    while((StringStatus = StringStatus_empfange) && (Serial.available()==0))
    (und 'ne Zuweisung statt des Vergleichs ist besonders fies
    Desshalb sagte ich ja, mit Sicherheit Tippfehler enthalten^^
    (Habs oben mal ausgebessert)

    Aber weist du was besseres? (Wenn man keine ISR benutzen darf)

    Das Problem ist ja, dass wenn man ein IF anstatt WHILE verwendet, der Controller pro 1x Hauptschleife durchlaufen auch nur 1 Zeichen entgegennehmen kann. Und da sowohl Geschwindigkeit des UART als auch die Zeit die die Hauptschleife um einmal durchzulaufen benötigt unbekannt sind, ist es nicht möglich abzuschätzen, ober der Buffer überläuft oder nicht.

    Mal abgesehen davon, dass ich damit warscheinlich sowiso überfordert währe, das auszurechnen^^

    Mit der While-Schleife entleert er bei jedem Durchlauf der Hauptschleife den Buffer, so dass ein Überlauf wohl recht unwarscheinlich ist...

    Hättest du ne bessere Lösung?

    Gruß

    [EDIT]: @nec-rot:
    Ich werds mal versuchen^^

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    23.03.2011
    Beiträge
    5
    danke Schumi

    mit dem I2C Bus hab ich das teil ja auch schon zum laufen bekommen, und zwar direkt über den Mikrocontroller 1.
    Vielleicht kann man den Code effizienter einsetzen um die Zykluszeit kaum zu beeinflussen.



    //Einlesen der Entferung über I2C mit SRF02 Ultraschallsensor.

    #include <Wire.h>

    #define srf02Address (0xE0 >> 1)
    #define cmdByte 0x00 //Startbefehl zum messen
    #define rangeByte 0x02
    #define startMessung 0x51

    byte MSB = 0x00;
    byte LSB = 0x00;


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

    void loop()
    {
    int rangeData = getRange();

    Serial.println(rangeData); // Ausgabe der Entfernung

    delay(200);

    }

    int getRange()

    {
    int range = 0;

    Wire.beginTransmission(srf02Address); //Ultraschallmesser wird über seine Adresse angesprochen
    Wire.send(cmdByte); //Startbefehl zum messen
    Wire.send(startMessung); //Startet Messvorgang in cm
    Wire.endTransmission();

    delay(100);

    Wire.beginTransmission(srf02Address);
    Wire.send(rangeByte);
    Wire.endTransmission();

    Wire.requestFrom(srf02Address, 2);
    while(Wire.available() < 2);
    MSB = Wire.receive();
    LSB = Wire.receive();

    range = (MSB << + LSB;

    return(range);
    }

  4. #4
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Also...
    1. Ich hab nen Tippfehler, einmal Stringstatus anstatt StringStatus geschrieben....
    2. Ich kanns nicht erfolgreich kompilieren, weil der AVR-GCC meine math.h anmault (warum weis ich nicht... mal gucken)
    3. #2 würde mir sowiso nichts bringen, weil mein Gehirn nicht 2 AVRs, inclusive Pheripherie simulieren kann^^ Und um den Code von Hand durchzugehen ist es zu viel und zu komplex....
    4. mit dem I2C Bus hab ich das teil ja auch schon zum laufen bekommen, und zwar direkt über den Mikrocontroller 1.
      Eindeutig die bessere Lösung - aber ich bin ein I2C-Noob und kann dir da leider nicht weiterhelfen
    Du kannst es aber auch nochmal mit der Seriellen versuchen, ich hab die Fehler oben ausgebessert..

    Gruß
    -schumi-

    PS: Für Code gibt es Codeblöcke, dann bekommt der auch keine Smileys Die findest du im Editor in der Zweiten Symoblleiste, der 3. Button von rechts (Das Schweinegatter)

Ähnliche Themen

  1. Verbindung zwischen Bauteilen bei Experimentierplatine
    Von RobotMichi im Forum Robby RP6
    Antworten: 9
    Letzter Beitrag: 03.12.2009, 06:09
  2. Fehler bei Verbindung zwischen PC u. ATmega8 via LPT
    Von Foooob im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 14
    Letzter Beitrag: 15.05.2008, 00:01
  3. Verbindung zwischen Servo und Bein...
    Von TLink im Forum Mechanik
    Antworten: 4
    Letzter Beitrag: 23.04.2008, 07:04
  4. Ges.: Geschwindigkeit Verbindung zwischen Display und PC
    Von jahibo15 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 1
    Letzter Beitrag: 27.08.2007, 21:03
  5. Diplomarbeit: Verbindung zwischen PDA und B&R SPS!
    Von doolitle15 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 1
    Letzter Beitrag: 12.11.2005, 20:17

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress