Atmega8 + externes EEprom + große Zahlen

Gast #1602428
Hallo !

Ich möchte z.B. für einen AH-Zähler den letzten Wert (bis 6 Stellen) 
sicher zwischenspeichern, habe zum testen dafür ein kleines externes 
EEprom (24C01) an den Atmega8 verbunden, und mich mit aus anderen 
Beiträgen Bascom-Codes rumgespielt, sobald die Speicherwerte über die 
Variable Byte hinausgehen, wird es echt kompliziert, schon der ständige 
Variablenwechsel macht mich fertig, da die eine das nicht kann, die 
andere das wieder nicht.

Habe meine letzte Version eines Bascom-Programmes beigefügt, das 
funktioniert auch ganz gut (Zahl zerlegen - einspeichern - auslesen - 
zusammenbauen),
aber wenn ich dieses Programm verwende (> 3kB), bleibt für das 
eigentliche Programm kein Platz mehr.

Womöglich hat jemand eine einfachere, bessere Lösung, Bascom ist nicht 
gerade mein Fach, muss mir immer alles woanders rauspicken, aber C bzw. 
Asm ist totales chinesisch für mich.

mfg Peter
Angehängte Dateien:
Gast
wieso speicerst du nicht einfach byteweise ab, also z.B. ne 32 bit-Zahl 
als 4 mal 1 Byte, sondern machst diesen Krampf mit Division durch 
Zehnerpotenzen?
Gast
Was ist denn bei Basic "single" - ich schätze mal, das ist auch eine 
Gleitkommazahl?
Ideal für dich wäre ein long integer, also 64bit Ganzzahl. Ob es sowas 
in Bascom gibt? Ich glaube ja.
In C würde man das ganze dann in eine union schreiben und kann dann auf 
die einzelnen Bytes zugreifen, ganz ohne Rechnerei. Andersherum genauso.
Auf jeden Fall solltest du dich von den dezimalen Denkweise trennen :-)
Gast
Danke für die einweiligen Antworten, warum ich nicht das und das mache 
?, deswegen frage ich ja hier nach, um vielleicht Beispiele zu bekommen, 
das es andere Möglichkeiten gibt, das weiß ich wohl, aber nicht welche, 
ich bin Bauarbeiter und Gelegenheitsbastler, und eben kein Programmgenie 
bzw. Computerelektroniker oder dergleichen, bitte um weitere Anregungen,
ich hab echt lange rumgesucht, aber eben noch nichts für mich 
verständliches gefunden,

mfg Peter
Jede CPU arbeitet intern mit Binärzahlen.
Dein Bascom-Compiler wandelt also alle Zahlen, die Du dezimal oder als 
Kommazahl hinschreibst nach binär um.
Je nach Zahlenformat werden dafür 1..4 Byte benötigt.
Und erst die Ausgaberoutinen wandeln es extra für den Menschen nach 
dezimal um.

Es ist daher am effektivsten die Zahlen im EEPROM direkt im 
Lieblingsformat der CPU abzulegen, also als 1..4 Bytes.

In C nimmt man dafür einfach eine Union, wieviel Byte die Union groß 
ist, ermittelt der sizeof-Operator.

Ob Bascom sowas auch kann, weiß ich nicht. Ich kann kein Bascom.
Aber Bascom hat ja ne Hilfe und es gibt auch ein Manual und auch die 
Bascom Herstellerseite.

Das Manual hast Du bestimmt schon:

http://www.mcselec.com/index.php?option=com_docman&task=doc_details&gid=140&Itemid=54


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.