Hallo zusammen, ich habe mal eine Frage zum Schreiben in den internen Flash-Speicher eines PICs: Laut Datenblatt muss ein Flash-Block immer gelöscht werden, bevor in ihn hineingeschrieben wird. Warum? Es scheint zumindest in der Simulation sogar zu Problemen zu führen, wenn ich zuvor lösche:
1 | char buffer[64]; |
2 | char k = 0; |
3 | while(k<64) |
4 | buffer[k++] = 2; |
5 | WriteBlockFlash(0x40,1,buffer); // funktioniert, Block enthält überall 0x02 |
6 | EraseFlash(0x40,0x7F); // funktioniert, Block enthält überall 0xFF |
7 | WriteBlockFlash(0x40,1,buffer); // funktioniert nicht, Block enthält überall 0xFF |
Ist das ein Bug im Simulator, oder mache ich etwas falsch? (Etwas seltsam finde ich auch, dass der Funktion EraseFlash die Endadresse mitgegeben werden muss, anstelle der Anzahl Blocks, die gelöscht werden sollen. Es können doch sowieso nicht einzelne Bytes gelöscht werden..) Viele Grüße Stefan