Forum: Mikrocontroller und Digitale Elektronik Bascom: Dim as ERAM speichert nicht


von theend (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich schreibe in eine Variable 8bits, also 1 Byte und versuche ihn 
dann anschließen per ERAM in den EEPROM zu speichern.

Byte - HEX - ASCII
01010110 56 V

Lade ich mir nun den EEPROM des Tinys auf meinen PC und betrachte diese 
Datei, finde ich kein "V" in dieser. Also gehe ich davon aus das er 
nicht richtig speichert. Sehe ich das richtig?

von Karl H. (kbuchegg)


Lesenswert?

1
A = "01010110"

und du denkst wirklich, du könntest einen ganzen String in einer 
Byte-Variablen speichern?

Warum schreibst du es denn nicht als
1
A = 56
wenn du schon nicht die korrekte Schreibweise für Bitkonstanten kennst.

von Stefan F. (Gast)


Lesenswert?

Ich kenne mich mit Bascom nicht aus, aber das:

> A = "01010110"

Ist ganz sicher eine Zeichenkette, kein Byte.

von Karl H. (kbuchegg)


Lesenswert?

Stefan us schrieb:
> Ich kenne mich mit Bascom nicht aus, aber das:
>
>> A = "01010110"
>
> Ist ganz sicher eine Zeichenkette, kein Byte.

OK, C ist jetzt sicher nicht die Ausgeburt an Pingeligkeit, wenn es um 
Datentypen geht. Aber was der BASCOM Compiler alles akzeptiert, erstaunt 
mich dann doch immer wieder.

von Bussard (Gast)


Lesenswert?

Hallo, so sollte es funktionieren:


Dim Text As Eram String * 10
' oder z.B.    Dim Count As Eram Byte

Text = "ABC123xyz"
'count = 64




'oder bei Deinem Code
A = &B01010110

Gruß

von stefanus (Gast)


Lesenswert?

> Aber was der BASCOM Compiler alles akzeptiert,
> erstaunt mich dann doch immer wieder.

Mich auch. Und mit jeder Frage zu Bascom in diesem Forum wächst meine 
Abneigung dagegen. Wer braucht überhaupt Bascom? Also ob Assembler, C 
und C++ nicht ausreichen würden...

von mue_c (Gast)


Lesenswert?

stefanus schrieb:
>> Aber was der BASCOM Compiler alles akzeptiert,
>> erstaunt mich dann doch immer wieder.
>
> Mich auch. Und mit jeder Frage zu Bascom in diesem Forum wächst meine
> Abneigung dagegen. Wer braucht überhaupt Bascom? Also ob Assembler, C
> und C++ nicht ausreichen würden...

Fragt ein Ami, warum man eine andere Sprache braucht als Englisch!
Na, weil die nichts anderes können.

von D'oh!!! (Gast)


Lesenswert?

stefanus schrieb:
> Mich auch. Und mit jeder Frage zu Bascom in diesem Forum wächst meine
> Abneigung dagegen. Wer braucht überhaupt Bascom? Also ob Assembler, C
> und C++ nicht ausreichen würden...

Du hast bestimmt auch nur 3 Paar Unterhosen. Und mit jedem weiteren Paar 
steigt deine Abneigung dagegen.

von Theend (Gast)


Lesenswert?

Bussard schrieb:
> Hallo, so sollte es funktionieren:
>
> Dim Text As Eram String * 10  ' oder z.B.    Dim Count As Eram Byte
>
> Text = "ABC123xyz"
> 'count = 64
>
> 'oder bei Deinem Code    A = &B01010110
>
> Gruß

Danke :)
Wie speichere ich PINB.0-7 als Byte in den eeprom?

von Karl H. (kbuchegg)


Lesenswert?

Theend, schön langsam wirds lächerlich
1
$regfile = "attiny2313.dat"
2
$crystal = 8000000
3
$hwstack = 40
4
$swstack = 16
5
$framesize = 32
6
7
'CONFIG
8
Dim A As Byte                                               'zum speichern
9
Dim Ae As Eram Byte                                         'eeprom
10
11
'START
12
13
A = 56
14
Ae = A
15
16
End


oder
1
Ae = 56

oder
1
A = &B01010110
2
Ae = A

oder eben auch
1
Ae = PINB

Zuweisung ist Zuweisung. Was immer du an Ae zuweist (das als ERAM 
Variable im EEPROM liegt), das wird auch dort gespeichert. Egal wo du 
den 8 Bit Wert her hast. Eine Zuweisung besteht aus einer Seite links 
vom = und einer Seite rechts vom =. Die Seite links vom = ist die 
Variable im EEPROM. Alles was dieser zugewiesen wird, landet auch dort. 
Rechts vom = kannst du haben was du willst. Die rechte Seite der 
Zuweisung wird ausgewertet, ergibt so einen Wert und der wird der links 
angegebenen Variablen zugewiesen. Und wenn es leicht geht, dann sollte 
die rechte Seite dann auch einen Wert ergeben, der im Datentyp so 
einigermassen mit dem Datentyp der Variablen auf der linken Seite 
übereinstimmt.
1
Dim A As Byte
2
A = "01010110"
links vom = steht eine Variable ('A'), die so definiert ist, dass sie 1 
Byte speichern kann. Rechts vom = steht ein String. Ist ein String 
dasselbe wie ein Byte? Nein, ist er nicht. Ein String ist eine 
Zeichenkette und besteht als solche aus mehreren Bytes - pro Buchstabe 1 
Byte. Daher ist diese Zuweisung Quatsch (zumindest in diesem 
Zusammenhang). Denn der String wird als ganzes nun mal nicht in dieses 1 
Byte passen. Lass dich nicht davon verleiten, das im String nur die 
Zeichen '0' und '1' vorkommen. Das hat an sich überhaupt nichts zu 
sagen. Das ist nach wie vor einfach nur ein Text. Ein String ist immer 
ein String, unabhängig davon was im String-Text steht. Da hätte 
genausogut auch
1
A = "test"
stehen können, das würde für die Operation, die bei der Zuweisung 
abläuft, keinen Unterschied machen.

: Bearbeitet durch User
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.