Forum: Mikrocontroller und Digitale Elektronik Atmega8 + externes EEprom + große Zahlen


von n+peter (Gast)


Angehängte Dateien:

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

von Flo (Gast)


Lesenswert?

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?

von Gast24 (Gast)


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 :-)

von Falk B. (falk)


Lesenswert?


von n+peter (Gast)


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

von Peter D. (peda)


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

von Olaf L. (oli6691)


Lesenswert?

Hallo,

schau mal in der Bascom - Hilfe nach DIM und dort speziell nach Overlay, 
das könnte die Lösung für dein Problem sein.

Cu Olaf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.