PIC18 Ram Prüfung

Gast #2479926
Lesenswert?

Hallo Zusammen

Ich möchte den Ram von meinem PIC18 beim Hochlauf testen, also mit einem 
Wert beschreiben und wieder auslesen. Ich möchte dies in C machen, weiß 
jedoch nicht wie ich über die schon def Variablen, die in diesem Bereich 
liegen, den gesamten Ram als eine Variable ansprechen kann.
Bitte um Hilfe. Danke.

Lg.
Johann K.
Gast #2480237
Lesenswert?

Noch mal nachgefragt

Wie kann ich mit C das Ram beschreiben und lesen ohne eine Variable zu 
definieren.

#pragma udata dTestdd=0x200  //Ram ab
unsigned char ucSerOutTelEnd;  //Telegramm Ende
unsigned char ucSerOutPufEmpty;  //Serielleausgabepuffer ist leer
unsigned char uaSerOutPuf[200];  //Ausgabepuffer Seriellekommunikation
unsigned char ucSerOutAdr;    //Adresse für Ausgabepuffer
unsigned char ucPufDatInNew[6];  //aktuell eingelesene Eingänge
unsigned char ucPufDatInOld[6];  //letzt eingelesene Eingänge
unsigned char ucReadPufSpi;      //Lesepuffer SPI
unsigned char ucCounterTest;
unsigned char ucTestArry[10];

Diese Variablen liegen im Ram und ich möchte ab der Adresse 0x200 den 
RAM mit schrieben und lesen auf korrekte Funktion prüfen ohne die 
Variablen zu verwenden.


Danke.
Gast #2480739
Lesenswert?

Ganzen Speicher ansprechen ist eigentlich kein Problem.

for (volatile char *p = 0x200; p < 0x800; p++) {
    *p = Testwert;
    if (*p != Testwert) ....
}

Nur wenn du es in C schreibst, musst du im generierten Assemblercode 
überprüfen, ob der Optimizer wirklich eine Funktion erzeugt, die den 
getesteten Speicher nicht benutzt. Nach Murphys Gesetz vergisst du 
dieses Problem wieder, schaltest Debug-Optimierung ein und dein Programm 
stürzt bereits beim Start ab.

In Inline Assemler dürfte die Sache recht problemlos nur mit SFRs gehen.

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