Speicherzelle auslesen

#663989
Lesenswert?

Niels Hüsken wrote:

> Wie ich bereits sagte, in der Regel hat man diese Sachen in einem
> Hexfile vorliegen.

Man kann sich auch bewusst dämlich anstellen.
Wie soll denn das laufende Programm diese Sachen aus dem
Hexfile, welches üblicherweise nur auf dem Entwicklungsrechner
existiert, auslesen?

> Warum sollte man sich die arbeit machen, diese aus
> dem Flashspeicher zu lesen?

Weil die Tabelle, die das Programm benötigt nun mal im
Flash liegt. Da solche Tabellen sehr oft konstanten Charakter
haben, macht es durchaus auch Sinn sie dort zu belassen und kein
SRAM dafür zu verschwenden.
Gast #663991
Lesenswert?

>Wie ich bereits sagte, in der Regel hat man diese Sachen in einem
>Hexfile vorliegen. Warum sollte man sich die arbeit machen, diese aus
>dem Flashspeicher zu lesen?

Das Hexfile wird doch aber in den Flash-Speicher "gebrannt". Und eine 
evtl. darin enthaltene Tabelle will doch auch wieder gelesen werden.

Aber vielleicht sollte Simon mal schreiben, was genau er eigentlich 
will. Allgemein kann man sagen: Ja, Flash-Speicherzellen können gelesen 
werden, auch mit einem PIC.
#663993
Lesenswert?

Karl heinz Buchegger wrote:

> Weil die Tabelle, die das Programm benötigt nun mal im
> Flash liegt. Da solche Tabellen sehr oft konstanten Charakter
> haben, macht es durchaus auch Sinn sie dort zu belassen und kein
> SRAM dafür zu verschwenden.

ähhmm, ja sorry. Jetzt ist mir klar, was gemeint ist.
Ich dachte, hier geht es darum, von aussen auf den Speicher des uc 
zuzugreifen um das Flash auszulesen....
Gast #664030
Lesenswert?

Hallo

Danke für die vielen Kommentare.
Ein Beispiel wenn ich jetzt unter der Adresse 740
zwei ASCII Zeichen AA abgelegt sind. Dann müßte ich doch irgend wie die 
ASCII Zeichen AA im Programm wieder lesen können oder ?
#664035
Lesenswert?

@ Simon (Gast)

>zwei ASCII Zeichen AA abgelegt sind. Dann müßte ich doch irgend wie die
>ASCII Zeichen AA im Programm wieder lesen können oder ?

Ja wo bleiben denn die PIC Spezialisten? Und um welchen PIC geht es 
denn? Was sagt das Datenblatt. Kann doch nicht so schwer sein.

MFg
Falk
Gast #664068
Lesenswert?

Das können so dierekt nur die PIC18 (TBLRD/TBLWRT).

Bei PIC12/16 musst du den Umweg über 'DT' zum anlegen von Tabellen gehen 
(siehe MPASM Manual). Vorrausgesetzt du willst Tabellen verwenden. Was 
genau brauchst du denn bzw. was willst du erreichen?
Gast #664085
Lesenswert?

Hallo tastendrücker

wie genau funktioniert das mit DT , ich benutze im Moment einen C 
Compiler muß mich jetzt erst mal wieder in Assembler einlesen. Ich denke 
ich kann in meinen C Quelltext auch Assembler einbinden.
Gast #664132
Lesenswert?

Es ist am besten, du sagst mal, was du machen willst.

- Text zur Ausgabe auf auf LCD aus dem Flash lesen
- Eine Wertetabelle anlegen
- Einfach nur rumspielen
- Die Forenteilnehmer testen
- ....

Dann kann ich dir evtl. einen Beispielcode geben.
Gast #664198
Lesenswert?

So könntest du den Text 'Hallo Welt' auf einem Display ausgeben (aus 
AN587):

---------------------------------------------------
    movlw   0          ; Zeiger auf 1. Zeichen
dispmsg
    movwf   TEMP1      ; Zeiger sichern

    call    Table      ; n. Zeichen aus Tabelle holen
    andlw   0FFh       ; String Ende?
    btfsc   STATUS,Z   ;
    goto    fertig     ; ja   -> Textausgabe fertig
    call    SEND_CHAR  ; nein -> Zeichen ausgeben
    movf    TEMP1,w    ; Zeiger auf
    addlw   1          ; nächstes zeichen
    goto    dispmsg    ; und weitermachen
fertig:
    :
    :


Table:
    addwf   PCL, F     ; Sprung zum n. Zeichen (n in W-Register)
    DT 'Hallo Welt', 0
---------------------------------------------------


Die Assembler-Direktive 'DT' macht aus

    DT 'Hallo Welt', 0

eine Reihe retlw's:

    retlw 'H'
    retlw 'a'
    retlw 'l'
    retlw 'l'
    retlw 'o'
    retlw ' '
    retlw 'W'
    retlw 'e'
    retlw 'l'
    retlw 't'
    retlw 0
Gast #664202
Lesenswert?

PS: Du must nur darauf achten, dass deine Tabelle keine Page-Grenzen 
überschreitet, weil sonst das

  addwf   PCL, F

sonstwohin springt. Wie das geht, finde mal selbst heraus 
(->Lerneffekt).
#664225
Lesenswert?

Simon wrote:

> na na so ist das nicht bin schon den ganzen Tag am ausprobieren und
> lesen von Datenblättern. :-)

Da kannste lange suchen, die Compilerbeschreibung steht in keinem 
Datenblatt.

Wie die entsprechende Syntax ist, hängt nicht vom Chip ab, sondern vom 
Compiler.

Ich benutze z.B. den 8051 mit Keil C51 Compiler und da heißt das 
Schlüsselwort "code":
1
unsigned char code text[] = "Hallo Welt";
2
printf("%s\n", text );


Peter
Gast #664238
Lesenswert?

>unsigned char code text[] = "Hallo Welt";

Das Array muss er jetzt aber noch an Adresse
740 (oder 0x740 ?) festnageln. Sonst klappt das was
er machen möchte nicht. Wie das geht steht wie immer im
Handbuch des Compilers.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren