eram iss eh schlecht, du solltest die register verwenden...
Martin
Hi,
Ich habe ein problem und zwar ich muss bei einem attiny12 einen wert
z.b. 1000 von 10000 abziehen. Nun habe ich geschrieben :
$regfile = "at12def.dat"
$crystal = 1000000
Dim I As Eram Integer
I = 10000
Do
I = I - 100
Loop
end
Und da meint er invaling datatype
ist das normal ?
was könne man dagegen tun?
Grüße Furtion
eram iss eh schlecht, du solltest die register verwenden...
Martin
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
Und wie progt man die register?
ich habe davon 0 ahnung
Grüße Furtion
geh mal in icq on, da kann ich dir das besser erklärn, iss etwas komplitzierter
Martin
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
Wäre nett, wenn das funktioniernde umgeschriebene Programm dann hier veröffentlicht wird, dann haben alle etwas davon.
lg
Alex
Ja, da bin ich auch gespannt,ob es mit Bascom eine Lösung gibt....
wobei ich bezweifle, daß von Xryder tatsächlich etwas an Hilfe kommt.
Gruß
Sven
Was ist denn daran so kompliziert und geheimnisvoll?
Lies Dir mal die Bascom-Hilfe zum Thema "Eram" durch. Du kannst diese Variablen nicht wie normale Variablen behandeln, z. B. in Berechnungen. Es sind nur direkte Zuweisungen erlaubt.
Also musst Du über Zwischenvariablen gehen.
Ich greife mal Dein Beispiel auf, Du solltest es so aber nicht einspielen:
$regfile = "at12def.dat"
$crystal = 1000000
Dim H As Integer
Dim I As Eram Integer
H = 10000
Do
H = H - 100
I=H
Loop
end
Das EEPRPOM hat nur eine begrenzte Anzahl Schreibzyklen (nominell 100.000) und Du schreibst bei jedem Programmdurchlauf hinein. Gut möglich, dass der Chip das nur ein paar Sekunden mitmacht...
EEPROM-Variablen schreibt man normalerweise nur in langsamen Zyklen oder innerhalb einer Setup-Routine, die nicht permanent durchlaufen wird.
Viele Grüße
Torsten
@senf: wasn mit dir los, ich muss bloß bis morgen meine facharbeit fertigmachen, daher antworte ich da nich ad-hoc...
@torsten: du hast das problem nicht ganz verstanden, er hatn attiny, die haben eben gar kein sram, also kannste h gar nicht deklarieren.
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
Hallo X-ryder,
wenn ich Deine Antwort lese, kann ich eigentlich nur sagen, Frage nicht verstanden. Du hast seinen Quellcode nochmals abgeschrieben mit kleinen Korrekturen, toll! Das diese kleinen Tinys kein Sram haben, dürfte wohl jeder wissen, der ein Datenblatt lesen kann.
Du hast aber so groß und breit erklärt man muss einfach die vorhandenen internen 32 Register als ram benutzen...kann man auch nachlesen.
Was uns aber alle hier interessiert ist wie man das unter Bascom anstellt. Du hast ja erklärt du weißt wie es geht, also wir warten. Wobei ich nicht glaube, daß es mit Bascom klappt, wenn man sich das def-File mal genau anschaut...
Gruß
Sven
P.s. Viel Erfolg bei Deiner Facharbeit.
senf, ich bin dir echt dankbar, das du beiträge damit reinbekommst, das du andere versuchst fertigzumachen, ich hab dir das in deinem anderen post schon geschrieben, brauche das also hier nicht mehr zu tun.
mein wissen zu dem thema ist, das man es mit Bascom hinbekommt, man muss bloß mindestens die hälfte aller befehle in assembler mnemonics schreiben, da die meisten methoden in Bascom eigene variablen im sram anlegen wollen, das kann man allerdings in der hilfe nachlesen, welche methode sowas macht, und wie die variablen heißen.
nun ist es so, das ich kein assembler kann, und auch nicht die zeit habe, das ganze jetzt nachzuschlagen, also schlage ich vor, senfi schlägt das ganze mal nach, der hat ja auch genug zeit rumzumeckern.
eins weiß ich auf jeden fall, einen wert in ein register legen tut man mit "ldi", die syntax dazu lautet:
ldi Rxx, wert
dabei ist xx eine zahl zwischen 0 und 31 und das ganze mit führenden nullen, also auch 01 oder so. wert kann dabei ein byte groß werden, mehr ist nicht möglich.
wie man ein register ausliest ist eine andere sache, denn man muss den genauen anwendungszweck wissen, man braucht ja solang kein register auslesen, wie man es nicht irgendwo ausgeben will, dafür gibt es auch keine direkte methode (ja, ich weiß, iss unverständlich, einfach mehrmals lesen, wenn senfi dazu stellung nehmen will, meinetwegen...)
man kann auch mit den variablen rechnen, das müsste dann mit add wert, wert oder sowas gehen, aber das will uns unser lieber senfi ja presentieren...
ach ja, senfi, nochwas: manche leute können einfach nicht so gut englisch wie du und ich, die können nicht einfach mal ein datenblatt durchlesen. genauso schaut sich nicht jeder die defdatfiles an.
mal sehen, ob ac immer noch einen gruß sendet.
Martin
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
Lesezeichen