Atmega8 + externes EEprom + große Zahlen

Gast #1602428
Lesenswert?

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 #1602435
Lesenswert?

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 #1602462
Lesenswert?

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
#1602488
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren