- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 7 von 7

Thema: UART Kommunikation, aber wie

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.01.2014
    Beiträge
    7
    Der von die gepostete Code fällt in die zweite von mir angegebene Variante (Konvertieren ind ASCII-Format) und benötigt zwar einige Rechenoperationen, aber er erfüllt seinen Zweck (da der Wert 0x00 nicht mehr auftreten kann) und das ist das Wichtigste Ein paar kleine Möglichkeiten zur Optimierung sind mir noch aufgefallen.

    1) Die Variable datahexchar wird eigentlich gar nicht gebraucht:
    Code:
    for(i=4;i>0;i--)
    {
            datahexchar[i-1] = hex[data[i-1]];
    	*Adress = datahexchar[i-1];
    	Adress++;
    }
    wird zu
    Code:
    for(i=4;i>0;i--)
    {
    	*Adress = hex[data[i-1]];
    	Adress++;
    }
    2) Die aufwendigen Multiplikationen und Divisionen lassen sich, weil durch Zahlen dividiert wird welche ein Vielfaches von 2 darstellen, durch Schiebeoperationen ersetzen:
    Code:
    data[3] = Wert / 4096;
    wird zu
    Code:
    data[3] = Wert >> 12; // 2¹² = 4096
    und
    Code:
    Wert = Wert - (data[3] * 4096);
    wird zu
    Code:
    Wert = Wert - (data[3] << 12);
    Alternativ lässt sich die Operation meiner Meinung nach auch über den Modulus-Operator anschreiben:
    Code:
    Wert = Wert % 4096;
    Das sind aber nur mehr kleine Anregungen, im Grunde funktioniert deine Lösung ja

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    17.12.2013
    Beiträge
    10
    Danke für deine Mühe! Ja, der Code ist noch nicht gerade schön... Ich habe allerdings erst gerade wieder angefangen zu programmieren und da mache ich es gerne sehr übersichtlich und wenns dann funktioniert, versuche ich es zu komprimieren...

    Zu erstens:
    Ich habe das mal genau so gemacht wie du es hier beschrieben hast, dass hat aber nicht funtioniert.. Vielleicht ein Compiler fehler...

    2.) Das werde ich wohl so machen! Ich bin allerdings nicht so Sattelfest mit den schiebeoperationen... Daher habe ich es eben mal so gemacht um zu schauen ob es überhaupt funktioniert! Danke nochmals für deine kompetenten ratschläge!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    01.01.2014
    Beiträge
    7
    Zitat Zitat von QuadV Beitrag anzeigen
    Zu erstens:
    Ich habe das mal genau so gemacht wie du es hier beschrieben hast, dass hat aber nicht funtioniert.. Vielleicht ein Compiler fehler...
    Interessant. Könnte es eventuell sein, dass du in den Projekteinstellungen die Optimierung eingeschalten hast. Afaik ist bei den AVR-Studio-Projekten immer -Os (Optimierung auf die Programmgröße) eingestellt. Bei dieser Einstellung optimiert der Compiler ziemlich aggressiv und das kann in weiterer Folge zu den widersprüchlichsten Phänomenen führen. Ansonsten freut es mich, dass ich dir helfen konnte Keep up the good work und niemals locker lassen

Ähnliche Themen

  1. Probleme mit UART-Kommunikation
    Von __lissy__ im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 21.05.2013, 08:55
  2. Syntax für UART Kommunikation
    Von spelli2001 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 24.06.2012, 14:51
  3. Elektor RFM12 Code in UART ändern. Aber wie?
    Von Bammel im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 16.09.2009, 19:52
  4. µC Kommunikation via UART?
    Von Killer im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 24.12.2007, 02:22
  5. Uart-Kommunikation zwischen µCs
    Von ProgDom im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 20.04.2006, 00:37

Stichworte

Berechtigungen

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

12V Akku bauen