PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : speichern auf internen EEprom dauert sehr lange



Olle_Filzlaus
05.12.2005, 07:50
Hallo,

habe mich mal an den internen EEprom gewagt und etwas gespeichert, funktioniert auch super und wenn ich mit pony prog das eeprom auslese steht auch an der von mir vorgegebenen adresse die daten.

aber. das speichern dauert ca 30 sekunden. also ewig. auf meinem alten c51 prozie dauert das speichern keine sekunde.

habe ich ein fehler im prgramm oder dauert das wirklich so lange. wenn ja, kann ich da einen speicherfortchritt programmieren. so wie bei windows wenn sich der balken da vergrößert.

achja kurz zum programm. ich speicher die daten von variable a und lade sie auf variable N wieder raus. mehr nicht. ist nur zum üben für das speichern mit eeprom.

achja, das das speichern so lange dauert liegt aber niccht an den wait 5. das soll nur dazu dienen zwischen den einzelnen schritten eine kleine pause zu machen.

ach und trotz display off befehl wackelt das display und es entstehen dadrauf zeichen. nur kurz, aber trotzdem sichtbar.

thx für eure hilfe

arno



'*********************************
'* Atmega8 mit 8MHz *
'* *
'* EEprom lesen und speicher *
'*********************************

$regfile "m8def.dat"
$crystal = 8000000

Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.2 , Rs = Portd.0
Config Lcdbus = 4
Config Lcd = 16 * 2

$eeprom

Dim A As Byte , N As Byte , S As Byte
S = 0
Display Off
A = 125
Writeeeprom A , 100 'WRITEEEPROM Wert,Adresse
Waitms 200
Lcd A ; " gespeichert"
Wait 5


Readeeprom N , 100 'READEEPROM Wert,Adresse
Display On
Cls
Lcd N ; "geladen"
Wait 2


Do
Locate 2 , 1
S = S + 1
Waitms 400
Lcd S ; " "

Loop


End 'end program

Ratber
05.12.2005, 08:48
In deinem Programm sehe ich nur Wait 5 für 5 Sekunden und natürlich den Waitms 200/400 für 0.2/0.4 Sekunden Pause.


Ich habe gerade nen M8 hier.

Wenn du willst kann ich dein Prog. ja mal laden und nachvollziehen.


So wie ich es gerade lese speichest du ein Byte in Adresse 100
Wartest 0.2 Sekunden
Gibst Meldung auf LCD und wartest 5 Sekunden.

Danach liest du den Wert wieder aussem EEprom,gibst ihn auf Display,wartest 2 Sekunden.

Danach trittst du in die endlosschleife ein und gibst alle 0.4 Sekunden die Variable "S" in Zeile 2 des LCD aus.

Wo genau hast du denn die 30 Sekunden verzögerung ?
30 Sekunden bis die Meldung "Gespeichert" kommt oder woanders ?

Torsten_G
05.12.2005, 11:47
Du könntest es auch mal mit

DIM A as ERAM BYTE

versuchen

Dann kannst Du Dir "Writeeprom" und "Readeeprom" eigentlich sparen.

Normalerweise geht das Speichern rasend schnell... :-k

Grüße

Torsten

Rage_Empire
05.12.2005, 12:01
Warum geht eigentlich dieser ERAM-Bafehl bei "Single" nicht?

Olle_Filzlaus
05.12.2005, 12:11
jo, der braucht ca 30 sekunden eh er den wert auf dem EEprom gespeichert hat. weiß auch nicht warum.

kann ja sein das derprozie so langsam ist.

cu arno

Ratber
05.12.2005, 12:16
So,habs mal probiert.

Also ich hab da keinerlei verzögerungen ausser den Programierten und natürlich den Technisch gegebenen (EEProm braucht einige ms).


Vieleicht hat der Compiler ja nen hau wech.

Welche Version nutzt du denn ?

oe9vfj
05.12.2005, 14:51
Warum geht eigentlich dieser ERAM-Bafehl bei "Single" nicht?


Dim eSingle as ERAM Single

Dim sSingle as Single

sSingle = 2.3456

eSingle = sSingle

sSingle = eSingle
wird anstandlos compiliert.

Olle_Filzlaus
05.12.2005, 16:11
mhm. eventuell hat mein AVR einen kleinen treffer weg.

bei mir braucht der immer ewig.

aber wenn der code stimmt bin ich ja zufrieden. da kann ich erstmal mein vorhaben weiterprogrammieren.

ich benutzte die demo version von bascom. wollte ja eigentlich mit c programmieren (bisher nur assembler und c51 erfahrung). aber mit c habe ich nichts ausser ein paar lampen zum laufen bekommen.

bei bascom bin ich noch am überlegen. ein feines programm, aber bin ich damit so vielseitig wie mit nem c compiler???

thx arno

recycle
05.12.2005, 17:25
bei bascom bin ich noch am überlegen. ein feines programm, aber bin ich damit so vielseitig wie mit nem c compiler???

Du schreibst doch, dass du Erfahrung in Assembler hast.
In Bascom kannst du auch Assemblercode einbinden. Die Gefahr, dass du völlig in der Sackgasse landest, sollte dann doch eigentlich nicht bestehen.

Von den vielen Funktionen die Bascom mitbringt, würde ich schon sagen, dass es recht vielseitig ist.
Falls man mit C mehr machen kann, bringt mir das z.B. wenig, solange ich es nicht kann, weil ich kein C kann.

Wenn du mit C nur ein paar Lämpchen ans leuchten bekommst und mit Bascom schon im EEprom rumschreibst, zahlt sich die Vielseitigkeit von C für dich offensichtlich auch nicht so sehr aus wie die "Einfachheit" von Bascom.

Ratber
05.12.2005, 18:08
mhm. eventuell hat mein AVR einen kleinen treffer weg.

bei mir braucht der immer ewig.


Is natürlich auch möglich.
so nen Kandidat hat mich mal vor einiger Zeit nen ganzen abend aufgehalten.



aber wenn der code stimmt bin ich ja zufrieden. da kann ich erstmal mein vorhaben weiterprogrammieren.


Ja,wie gesagt hab ich nix auffälliges gefunden was die Funktion behindern sollte.



ich benutzte die demo version von bascom. wollte ja eigentlich mit c programmieren (bisher nur assembler und c51 erfahrung). aber mit c habe ich nichts ausser ein paar lampen zum laufen bekommen.

bei bascom bin ich noch am überlegen. ein feines programm, aber bin ich damit so vielseitig wie mit nem c compiler???

thx arno

Also Assembler nutze ich nur wenn es nötig ist.
(Wie Recycle schon sagte gehts auch Inline)

Den meisten krempel bekommt man auch mit Bascom hin also warum sollte ich mir Weiße Haare wachsen lassen weil ich ewig für eine Funktion unterwegs bin ? :D


C ist mit im übrigen zu Chaotisch.

Eigentlich sollte ne Sprache strukturiert und einwenig intuitiv sein aber bei C und besonders bei C++ bekomm ich beim hinsehen schon Hirnsausen.



Was die Vielseitigkeit angeht so kann ich da keine Erfahrungswerte liefern aber bis jetzt hab ich noch nix vermissen müssen

Rage_Empire
05.12.2005, 21:08
@Josef: Ja, so geht das bei mir auch. Aber wenn ich das in meinem Source so machen will kommt immer die Fehlermeldung: "Varaile not dimensioned"

Kann ich mit ERam-Variablen nur eingeschränkt handeln, bzw. rechnen?

Olle_Filzlaus
05.12.2005, 21:34
Jo, ich finde die c beispiele auch immer ziehmlich verwirrend, in bascom geht das alles so "einfach". also sehr intuitiv. man denkt sich was und kann es fast genau so umsetzen.

nur was mich bissel an bascom abschreckt, und deswegen will ich es auch bis zum kleinsten testen, sind die 80€ für den compiler. ich bin student und bekomme kein bafög, also ist bei mir die kohle arg knapp. und ich würde mir am liebsten mal noch so ein avr bascom büchlein dazu kaufen damit man schöne beispiele hat. aber auch nochmal 40€.
sachbücher sind eh sehr teuer, obwohl, wenn man bedenkt was da für wissen und hilfe drin steht sind die das meisten wert.

ok, war bissel offtopic, aber das sind zur zeit so meine nebenprobleme.

das mit dem "defekten" avr kann ich am wochenende testen. habe noch einen auf halte.

erstmal thx für eure hilfe
cu
arno

linux_80
05.12.2005, 21:47
Kann ich mit ERam-Variablen nur eingeschränkt handeln, bzw. rechnen?

normalerweise gar nicht, man muss sie immer erst einer anderen "normalen" Variable übergeben.

aus der Bascomhilfe:

For ERAM variables, it is important to understand that these are not normal variables....
You can not use an ERAM variable as you would use a normal variable.

Torsten_G
05.12.2005, 23:02
...
nur was mich bissel an bascom abschreckt, und deswegen will ich es auch bis zum kleinsten testen, sind die 80€ für den compiler. ich bin student und bekomme kein bafög, also ist bei mir die kohle arg knapp.
...

Hallo Arno,

die Bascom-Demoversion ist kostenlos und kann (wieder!) 4k Code erzeugen, also immerhin 50% der Kapazität des Mega 8.

Damit kommt man schon gehörig weit, und wenn man wirklich größere Monsterprogramme schreibt, tun sicher auch die 80 Euronen nicht weh...

Viele Grüße

Torsten

Ratber
06.12.2005, 05:52
Jo, ich finde die c beispiele auch immer ziehmlich verwirrend, in bascom geht das alles so "einfach". also sehr intuitiv. man denkt sich was und kann es fast genau so umsetzen.

Ja,genau deswegen nutze ich es ja auch.
Man kann sich mehr auf die eigentliche Aufgabe des Programmes konzentrieren anstatt großartig an irgendeiner funktion herumzudoktern.



nur was mich bissel an bascom abschreckt, und deswegen will ich es auch bis zum kleinsten testen, sind die 80€ für den compiler. ich bin student und bekomme kein bafög, also ist bei mir die kohle arg knapp. und ich würde mir am liebsten mal noch so ein avr bascom büchlein dazu kaufen damit man schöne beispiele hat. aber auch nochmal 40€.
sachbücher sind eh sehr teuer, obwohl, wenn man bedenkt was da für wissen und hilfe drin steht sind die das meisten wert.


Wie Thorsten schon sagte kommt man mit den freien 4K schon ne ganze Ecke weit und ausser den 4K-Codegrenze hat die Demo keinerlei einschränkungen gegenüber der Vollversion.

Was die Beispiele und ein Buch angeht so kann ich nur empfehlen die beiligenden Demos abzuklappern und den Hilfstext zu studieren denn da sind jedemenge Beispiele drinne.
Auf der Homepage gibt es übrigens das 1.11.80 Handbuch als PDF zum Download (Achtung ca. 32 MB)

Weiteres dazu hier (https://www.roboternetz.de/phpBB2/viewtopic.php?t=14261)

Ansonsten einfach mal das Web (google) durchsuchen (Stichworte "Bascom,Listing,Projekt,Programm.......") da findet sich Tonnenweise Material in Form von Codeschnipselbn,Tips und ganzen kompletten Projekten.
Ja und natürlich hier im Forum und auf der Homepage wie auch in anderen Foren.




das mit dem "defekten" avr kann ich am wochenende testen. habe noch einen auf halte.


Ja,Vrgleichen,Testen usw.
Ansonsten weg damit wenn er unklar bleibt.
Die Dinger kosten ja schließlich nicht die Welt.

Rage_Empire
06.12.2005, 07:31
@linux80:
Ok, das ist mein Fehler. Danke für eure Hilfe und Sorry, das ich etwas von dem eigentlichem Thema abgeschweift bin.

Olle_Filzlaus
11.12.2005, 16:16
So, melde vollzug!!!!

specihern geht jetzt super schnell.

lag an einem fuxe bit. BODLEVEL war noch gesetzt, nach deaktivieren dieses bites ging es dann prima

cu arno

Ratber
12.12.2005, 10:31
Das freuht mich für dich aber nun rätsel ich etwas herum ws der Bodlevel damit zu tun haben sollte. :-k