-
        

Ergebnis 1 bis 5 von 5

Thema: Multiplikationen bei Bascom..

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.12.2008
    Beiträge
    27

    Multiplikationen bei Bascom..

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo zusammen,

    Ich bin gerade an meinem ersten richtigen Projekt und bin nun auf ein Problem gestoßen.

    Ich habe momentan noch die Demoversion von bascom-avr und wenn ich meinen code normal compiliere hat er eine größe von ca. 3,5kByte.
    Wenn ich nun noch eine ganz simple Multiplikation einbaue:
    A = 0,23 * B
    sprengt der Code die 4kB-Grenze der Demo.

    Ist das normal, dass Multiplikationen so viel Speicher benötigen?
    Eigentlich benötige ich für mein endgültiges Projekt auch komplexere Funktionen (e-Funktionen usw...), aber das würde dann sogar mit der Vollversion eng, da mein AtMega8 einen Speicher von 8kB hat.
    Allerdings habe ich noch einen externen EEPROM, kann ich da vielleicht Funktionen auslager oder so?


    Vielen Dank!

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.04.2008
    Beiträge
    113
    Schreib mal :

    A= B/100
    A = A*23

    Und poste mal was dann rauskommt an Größe.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    Fließkommaarithmetik braucht ne Menge Code
    und auch ne Menge Rechenzeit, daher versucht man
    die möglichst zu vermeiden ... schau mal ob nicht
    a = b/4 auch reicht
    oder wenns ganz kurz werden soll shift B,right,2
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von Easter
    Schreib mal :

    A= B/100
    A = A*23

    Und poste mal was dann rauskommt an Größe.
    Wenn er nur Ganzzahl verwendet, wird sich die Codegröße nicht ändern.
    Aber durch deine Art zu rechnen wird das Ergebnis ziemlich ungenau. Besser ist es immer, wenn du zuerst multiplizierst und dann dividierst. Also

    A = B * 23
    A = A / 100

    Für z.B. B=40 sollte dabei 9,2 (Ganzzahl 9) rauskommen. Bei dir käme 0 raus, in der umgedrehten Form ist A=9.
    Der Nachteil ist dabei nur, dass die Zahlen evtl. größer werden, als für den verwendeten Typ erlaubt. Dann muss man auf den nächst größeren gehen.

    Gruß

    Rolf

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.11.2003
    Beiträge
    355
    übrigens scheint Bascom Comiler laut simulator automatisch Sachen wie *2,/2, *4,/4 durch shift zu ersetzten, denn das Ergebniss der benötigten Befehle war das selbe.

Berechtigungen

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