PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit Bascom in den Flashspeicher Daten ablegen und lesen.



funkheld
30.09.2010, 12:15
Wie kann man mit Bascom verschiedene Daten in den Flashspeicher während der Laufzeit aufnehmen und wieder lesen.

Gruss

Richard
30.09.2010, 14:00
Wie kann man mit Bascom verschiedene Daten in den Flashspeicher während der Laufzeit aufnehmen und wieder lesen.

Gruss

Bascom Hilfe: DATA, $DATA,READ.....

Gruß Richard

funkheld
30.09.2010, 14:44
...The AVR has built-in EEPROM. With the WRITEEEPROM and READEEPROM statements, you can write to and read from the EEPROM...

Ich möchte nichts in das Eeprom reinschreiben, sondern während der Laufzeit in den Flashspeicher.



Gruss

Jaecko
30.09.2010, 15:19
Geht trotzdem mit DATA:
http://www.rn-wissen.de/index.php/Bascom_Tabellen#Tabellen_im_Programmspeicher

funkheld
30.09.2010, 17:56
Und das reinschreiben während der Laufzeit?

Gruss

Vitis
01.10.2010, 00:13
das in den Flash schreiben geht aus dem Programmcode heraus zunächst garnicht. In den Programmspeicher schreibt entweder der ISP oder der Bootloader, der in einem separaten Speicherbereich liegt und das dann daher kann.
Wenn Du zur Laufzeit ins Flash schreiben willst mußt Du Dir einen Bootloader schreiben, der im Loaderbereich liegt, vom Hauptprogramm angesprungen wird, die Daten speichert und wieder zurück ins Hauptprogramm geht.
Theoretisch und auch praktisch machbar, obs Sinn macht muß jeder für sich entscheiden.

Richard
01.10.2010, 07:58
Hmm, kann ich mir nicht so richtig vorstellen, aber probiert habe ich es bei AVR's auch noch nicht. Früher bei PIC's oder auch 80XX und 65XX mit ASM ging das aber ohne Probleme. Die haben aber auch eine von Neumann Struktur, (gemeinsamen Programm und Datenspeicher Bereich.

Möglich das man den Für einem Bootloader Bereich reservierten Platz für Tabellen nutzen kann wenn man gleich an dessen Anfang ein JMP auf die eigentliche Programm Start Adresse setzt Der den reservierten (Tabellenplatz) überspringt und das Programm startet.

Andererseits, liegen ja auch alle Anderen Variablen im Flasch und nicht im EEprom und können vom Programm gelesen und beschrieben werden...

Gruß Richard

funkheld
01.10.2010, 09:51
Nein, die liegen im normalen zusätzlichen RAM, zb beim Atmega32 sind es 4kb.



Gruss

funkheld
01.10.2010, 09:53
Ich habe jetzt auch nachgelesen, das es sich nicht lohnt, weil der Flash gegenüber den Eprom nur ca 10000 gelöscht (Eprom über 100000) und bespielt werden kann und danach Fehler auftreten können.

Vitis
01.10.2010, 17:26
Variablen liegen entweder in den Registern, oder im SRAM oder im EEPROM oder sind Konstanten, die bei der Kompilierung vom Compiler vor dem flashen verarbeitet werden.
Im Flash liegen die beim AVR nicht.
SPM geht beim AVR nur im Bootloader. Im Programmflash geht das normalerweise nicht. Macht auch nur in Einzelfällen Sinn.

Wenn du in C Progmem verwendest werden die Daten im Flash abgelegt, sind aber Konstanten und dementsprechend unveränderlich.