-         

Ergebnis 1 bis 9 von 9

Thema: Ausgabe von Double Zahlen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    01.07.2004
    Ort
    Osnabrück
    Beiträge
    30

    Ausgabe von Double Zahlen

    Anzeige

    Hallo,
    wie kann ich "Double" Zahlen mit print über UART ausgeben?
    Die Ausgabe mit print funktioniert soweit. Nur bei Double Zahlen erhalte ich Unsinn.
    Vielen Dank schonmal für die Hilfe.

    Euer moin

    PS.: Ich arbeite mit einem ATMEGA8 und der aktuellen Bascom-Version.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    29
    Beiträge
    1.614
    was meinst du denn mit doubles? single-typ? weil es doubles nich gibt in bascom, oder ist das neuerdings implementiert?
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Double ist seit über einem halben Jahr implementiert mitsamt allen trigonometrischen Funktionen.
    Die Probleme mit der Ausgabe können an einem zu niedrigen Softstack oder FrameSize liegen.
    Für die Umwandlung von Binary in ASCII müssen einige Daten auf diese Stacks gelegt werden.
    Probier mal diese Werte zu erhöhen.
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    29
    Beiträge
    1.614
    ihr meint mit double doch warscheinlich single oder? die trigonos hab ich nämlich schon längst drinne, welche version von Bascom habt ihr denn?
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    per fusing in string,
    dann string ausgeben ... so würds ich machen
    wenns direkt aufs terminal muss.
    ansonsten zerlegen in byte, dann übertragen,
    in der zielanwendung die bytes wieder zusammensetzen
    und in singel zurück.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    ich muß josef zustimmen. Bascom kann auch double verarbeiten, funktioniert glaub ich mit ner externen ASM-Routine, auf die Bascom zurückgreift.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    01.07.2004
    Ort
    Osnabrück
    Beiträge
    30
    Ich habe das angehänge mit Double Zahlen ausprobiert. Es funktioniert perfekt
    Man muß nur den Stack und drastisch erhöhen - sonst rechnet er falsch ;-(( (Beispiel Ausgabe der Zahl 10 )
    Der Nachteile ist, dass beim einem ATMEGA8 das Flash zu 47% mit diesem kleinen Programm ausgefüllt wird.

    Hier das Programm:
    $regfile = "m8def.dat"
    $crystal = 16000000
    $baud = 1000000 '1000000
    Dim A As Double , C As Double , X As Double , Y As Double , Z As Double
    A = 1
    C = 10
    Y = 1000
    X = 2000
    Z = 10000

    Print A
    Print C
    Print Y
    Print X
    Print Z
    A = 1000
    C = A / 3
    Print C

    A = 10
    C = 0.3
    Y = C * A
    X = A / Y
    Print A
    Print C
    Print X

    X = Tan(x)
    Print X

    End



    Hier die Antwort des Terminalprogramms:
    1
    10
    1E3
    2E3
    10E3
    333.333333333333
    10
    300E-3
    3.33333333333333
    194.1255059836E-3

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Die Routinen für DOUBLE-Berechnung sind keine triviale Angelegenheit. Da kommen schnell einige KB FLASH zusammen. Die Implementation von DOUBLE ist auch nicht auf vielen Compilern für die ATMEL-AVR zu finden.

    Die Routinen sind, wie Rage_Empire schon gesagt hat in den Library DOUBLE.LBX und die trigonometrischen Funktionen in DOUBLE_TRIG.LBX enthalten.

    Sofern die Genauigkeit von SINGLE genügt, kann man mit SINGLE anstatt DOUBLE einiges an FLASH und RAM sparen.
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

  9. #9
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    Aslo ich konnte bis jetzt noch alles in Singles überwältigen....von PID-Regler bis zu Frequenzberechnungen. Dabei ist das Ergebnis erstaunlich genau.
    Was man ebenfalls bedenken sollte ist die Rechenzeit, die bei Singles und Doubbles drastisch erhöt wird. Denn von nix kommt nix.

Berechtigungen

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