Forum: Mikrocontroller und Digitale Elektronik write-program-memory()


von Bojan J. (Gast)


Lesenswert?

> -Das Flash muss vor dem Beschreiben gelöscht werden.

Hey! :)

Ich hoffe ihr könnt mir weiterhelfen. Ich nutze den internen 
Programmspeicher (write_program_memory) (natürlich nur unbenutzten ab 
Adresse 0x61AA - 18F4550 ist der PIC) um GPS Daten über einen kurzen 
Zeitraum zu sichern. Nun ist die Frage, wie ich eine bestimmte Adresse 
(z.B. 0x61AA) löschen kann um erneut sie mit einem Wert zu beschreiben?

Ich suche seit einer Ewigkeit nach einem Befehl, jedoch finde ich 
nichts!

Ich hoffe ihr könnt mir weiterhelfen.

l.g.

PS - Programmauszug:
1
int16 pointer;
2
  // Receive Pointer
3
  if(firstwrite == 1) {
4
    pointer = STARTADDRESS;
5
    pointer += 4;
6
    firstwrite = 0;
7
  } else {
8
    read_program_memory(STARTADDRESS, &pointer, 2);
9
    pointer += 4;
10
  }
11
  // Save Float
12
  printf(usb_putc,"Pointer: %lx\r", pointer);
13
  write_program_memory(pointer, &data , 4);
14
  printf(usb_putc,"Data: %.4f\r", data);
15
  delay_ms(1000);
16
  // Save current Pointer Position
17
  int16 temp = pointer; 
18
  write_program_memory(STARTADDRESS, &temp, 2);
19
  delay_ms(1000);

von Sam .. (sam1994)


Lesenswert?

Macht das die Funktion nicht vor dem schreiben?

von Bojan J. (Gast)


Lesenswert?

Ich weiß es leider nicht,

In der oben bereits herausgeschnittenen Methode übergebe ich einen Float 
data. Dieser wird auf die Adresse auf welche der int16 pointer zeigt 
geschrieben. Der pointer wird immer um 4 Adressen hinaufgezählt und 
anschließend auf die erste Stelle geschrieben.

Nun ist mir klar das es ein Flashspeicher ist und er in Zellen 
organisiert ist. Nun weiß ich nicht wie ich die Größe bei dem 18F4550 
einer Zelle herausfinden kann. Desweiteren muss ich ja die ganze Zelle 
löschen, falls ich einen Wert in dieser ändern will.

Ich hoffe mir kann wer weiterhelfen!

l.g.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.