- 12V Akku mit 280 Ah bauen         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 34

Thema: Asuro per IR-Transceiver fernsteuern

  1. #11
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Anzeige

    Praxistest und DIY Projekte
    Das Problem hatte ich vor allem bei dem Programm für die Ermittlung der Parameter für die myasuro.h-Datei aus der LIB.
    Ich verwende(te) die 2.7er-Lib doch nicht.

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    @damaltor
    Na gut ich habe fürchterlich übertrieben mit den 'Meilen'.
    Ausserdem gebe ich dir natürlich Recht, dass das ganze eine eigene Vorliebe ist.
    Aber der HEX-Output bei deinem Beispiel ergibt immerhin 22 Byte Unterschied zugunsten der IF-Orgie.

    Size before:
    test.elf :
    section size addr
    .text 1600 0

    Size after:
    test.elf :
    section size addr
    .text 1622 0

    Je nachdem, welchen der beiden IF_CODE-Zeilen auskommentiert gibt es da die Unterschiede:
    Code:
    #include "asuro.h"
    
    //#define IF_CODE	1
    #undef  IF_CODE
    
    int main ()
    {
    char wert, a=0;
    
      wert = PollSwitch ();
    
    #ifdef IF_CODE
    
      if(wert==1){
    	  a=wert+1;
      }
      if(wert==2){
      	a=wert+2;
      }
      if(wert==3){
    	  a=wert+3;
      }
      if(wert==4){
      	a=wert+4;
      }
      if(wert==5){
    	  a=wert+5;
      }
      if(wert==6){
      	a=wert+6;
      }
      if(wert==7){
    	  a=wert+7;
      }
      if(wert==8){
      	a=wert+8;
      }
      if(wert==9){
    	  a=wert+9;
      }
      if(wert==10){
      	a=wert+10;
      }
    
    #else
      
      switch (wert){
      case 1:
    	  a=wert+1;
        break;
      case 2:
    	  a=wert+2;
        break;
      case 3:
    	  a=wert+3;
        break;
      case 4:
    	  a=wert+4;
        break;
      case 5:
    	  a=wert+5;
        break;
      case 6:
    	  a=wert+6;
        break;
      case 7:
    	  a=wert+7;
        break;
      case 8:
    	  a=wert+8;
        break;
      case 9:
    	  a=wert+9;
        break;
      case 10:
    	  a=wert+10;
        break;
      }
    
    #endif
    
      return a;
    }
    Benutzt man aber die Variante, dass die IF's eigendlich mit "else if" fortgeführt werden sollten um so halbwegs performat zu sein, reduziert sich dieser Vorteil auf popelige 4 Byte bei dem 10-er Beispiel:
    -> Und hier liegt ein entscheidender Vorteil vom swtich/case: Performanter, da ein Sprung zur Stelle erfolgt die gerade benötigt wird und eben nicht ein 'rumraten' wohin es denn nun gehen soll.

    Size before:
    test.elf :
    section size addr
    .text 1618 0

    Size after:
    test.elf :
    section size addr
    .text 1622 0
    Code:
    #include "asuro.h"
    
    //#define IF_CODE	1
    #undef  IF_CODE
    
    int main ()
    {
    char wert, a=0;
    
      wert = PollSwitch ();
    
    #ifdef IF_CODE
    
      if(wert==1){
    	  a=wert+1;
      }
      else if(wert==2){
      	a=wert+2;
      }
      else if(wert==3){
    	  a=wert+3;
      }
      else if(wert==4){
      	a=wert+4;
      }
      else if(wert==5){
    	  a=wert+5;
      }
      else if(wert==6){
      	a=wert+6;
      }
      else if(wert==7){
    	  a=wert+7;
      }
      else if(wert==8){
      	a=wert+8;
      }
      else if(wert==9){
    	  a=wert+9;
      }
      else if(wert==10){
      	a=wert+10;
      }
    
    #else
      
      switch (wert){
      case 1:
    	  a=wert+1;
        break;
      case 2:
    	  a=wert+2;
        break;
      case 3:
    	  a=wert+3;
        break;
      case 4:
    	  a=wert+4;
        break;
      case 5:
    	  a=wert+5;
        break;
      case 6:
    	  a=wert+6;
        break;
      case 7:
    	  a=wert+7;
        break;
      case 8:
    	  a=wert+8;
        break;
      case 9:
    	  a=wert+9;
        break;
      case 10:
    	  a=wert+10;
        break;
      }
    
    #endif
    
      return a;
    }

    @radbruch
    Ja was soll das denn? Nicht die LIB benutzen, ist das denn erlaubt?
    Der Hinweis von mir bezog sich nur auf die Speicherplatz-Probleme die ich bei dem Asuro-Programmteil hatte um da alle Tests unterzubringen.
    Lieber Asuro programieren als arbeiten gehen.

  3. #13
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    hrhr... da hast du natürlich recht...
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    @damaltor
    Deine neue Fußzeile läßt mich folgende Vermutung anstellen:
    Bist du Fan von Prinzenrolle? Dann sollten wir uns mal zusammentun mit einer großen Familienpackung. (Eine für dich und eine für mich natürlich)
    Lieber Asuro programieren als arbeiten gehen.

  5. #15
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    prinzenrolle fetzt... aber ja! doppelkekse fetzen auch und kosten etwa 1/4 vom original. aber sie gehen eben nicht in die keksdose

    aber jo, lass uns mal doppelkeks-abend machen XD
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.06.2007
    Alter
    31
    Beiträge
    104
    Zitat Zitat von Mr.Roboto
    ... wenn ich nichts drücke bleibt er doch auch stehen !!
    bei mir Fährt er immer, wenn man einemal eine Taste gedrückt hat. Weiß allerdings nicht, woher das kommt. Vielleicht, wenn man zulange eine Taste drückt?
    Gruß Roboaktiv


    It is öde to be blöde

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    25.05.2007
    Ort
    Giessen und Fulda
    Alter
    38
    Beiträge
    81
    wenn du mein programm nutzt, dürfte das nicht sein, evtl. speicherst du das eingegebene zeichen in eine variable, wenn du dann kein neues zeichen eingibts, fragst du das gespeicherte ab, nicht das, was aktuelle über die tastatur kommt

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.06.2007
    Alter
    31
    Beiträge
    104
    Soweit ich weiß benutz ich dein Programm. Zumindest benutz ich. Vielleicht kommt es zwischen den verschiedenen Libaries zu irgendwelchen Fehler. Ich benutze die von der Asuro CD. Die ist vom 17.10.2003. Kann es sein ,das du irgendeine andere Libary hast?

    Gruß Roboaktiv
    Gruß Roboaktiv


    It is öde to be blöde

  9. #19
    Benutzer Stammmitglied
    Registriert seit
    25.05.2007
    Ort
    Giessen und Fulda
    Alter
    38
    Beiträge
    81
    jo, ich benutz die aktuelle Version, hab aber in dem programm nur standard funktionen verwendet, denk isch

  10. #20
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo,
    es existiert kein Unterschied zwischen der CD-Version und der aktuellen LIB.
    Beide Versionen sind absolut identsch.
    Da Mr.Roboto die SerRead()-Funktion ja im 'blocking'-Mode aufruft, muss sie auch lange warten, bis das eine geforderte Zeichen kommt.
    Wenn aber tatsächlich einmal ein Zeichen (w,s,a,d) zum Starten der Motoren gekommen ist, gibt es auch keinen Code mehr, der die Motoren stoppt.
    Die 'große' while-Schleife landet dann ja wieder im SerRead(), wartet dort auf ein nun nicht kommendes Zeichen, und die Motoren drehen weiter.
    Somit geht es also so wie Mr.Roboto sagt. Bei mir tut's das jedenfalls auch genau so. Er läuft, und läuft, und läuft, .... und genau dafür braucht man die lange Leitung
    Lieber Asuro programieren als arbeiten gehen.

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress