www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik M16C Block_1 vom Flash


Autor: Maik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo...ich habe einen Mc16C62P und will Daten im BlockA und Block1 des 
Flash ablegen. Ich habe auf der Seite http://www.m16c.de/ folgende 
Vorlage verwendet: Simple Flash API for CPU-Rewrite Operations. Diese 
sollte laut beschreibung daten in alle möglichen blöcke ablegen können.

Das Programm funktioniert ohne Probleme wenn ich daten im BlockA 
schreibe. Sobald ich aber in einen anderen Block schreibe funktioniert 
dies nicht. Ich habe sowohl den EW1 und EW0-Mode getestet, aber das 
selbe ergebnis. Danach habe die ganze API mal ausfühlich debugged, aber 
ich bekomme einfach nicht raus wo der fehler liegt, zumal alle pointer 
usw. auf korrekte werte zeigen.

Muss man für einen anderen Block zusätzlich Veränderungen in 
irgendwelchen Registern vornehmen?!?

vielen dank für eure hilfe im voraus! Maik

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte das selbe Problem, wenn ich mich richtig erinnere, musste ich 
PROTECT_BITS = 1 definieren. Dann hats funktioniert.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, hast du externen RAM dran? Dann funktioniert sinnigerweise im 
EW1-Modus das externe Speicherinterface nicht mehr.
Ich benutze
#include     "Flash_API_M16C.c"

temp_char = FlashErase( BLOCK_7 ); 
for(i=0;i<3600;i++)FlashWriteBuffer[i]=Betriebsparameter.AmplitudenKennl 
inie[i];
temp_char = FlashWrite( 
FLASH_PTR_TYPE)0xD0000,(BUF_PTR_TYPE)FlashWriteBuffer, 14400);

Solange allerdings FlashWriteBuffer im ext.RAM lag, funktionierte es 
nicht.

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe kein ext. RAM dran, ich verwende die API um ein Update der 
Applikation zu ermöglichen. Soweit ich mich erinnere, hat das Löschen 
nicht sauber funktioniert, als PROTECT_BITS = 1 war. Block A ging wie im 
Sample, die anderen Blöcke nicht.
Ich habe nie mehr als 1024 Bytes auf einmal geflasht. Eventuell solltest 
du mal versuchen, den Schreibvorgang in mehrere Pages aufzuteilen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.