Hi!
Ich benutzte den MSP430f248 und arbeite mit der IAR Software.
Ich möchte den Falsh löschen und neu beschreiben. Wobei das löschen
ersteinmal neben sächlich ist da zZ überall 0xFF steht.
Der Info bereich ist leider zu klein, aus diesem Grunde habe ich mich
endscheiden am ende des Code bereiches, meine Daten zu schreiben.
Leider werden die Daten welche ich in eADC_ConfigDaten nicht erfolgreich
geschrieben.
Wo ist mein Fehler?
1 | void Flash_writedown_ADC( void )
|
2 | {
|
3 | USIGN16 *Flash_Segment;
|
4 | Flash_Segment = (USIGN16*)0xF000; /* Flash Segment start address */
|
5 | USIGN8 i_wort = 0;
|
6 | USIGN8 i_ADC = 0;
|
7 |
|
8 | STOP_WATCHDOG;// Hold Watchdog, it will be switched on by the next SERVE_WATCHDOG.
|
9 |
|
10 | FCTL2 = FWKEY | FSSEL_1 | FN0; /* select MCLK for flash timing */
|
11 |
|
12 | FCTL1 = FWKEY + ERASE; // Set Erase bit
|
13 | FCTL3 = FWKEY; // Clear Lock bit
|
14 |
|
15 | *Flash_Segment = 0; //Dummy write to erase Flash segment
|
16 |
|
17 | while (! (FCTL3 & WAIT) ); // Wait while not ready
|
18 |
|
19 | FCTL1 = FWKEY + BLKWRT + WRT; // Enable block-write operation
|
20 |
|
21 |
|
22 | for (USIGN16 i=0; i < 256; i++)
|
23 | {
|
24 | Flash_Segment[i] = eADC_ConfigDaten[i_ADC]._Word[i_wort] ;
|
25 | if(++i_wort>=32)
|
26 | {
|
27 | i_ADC++;
|
28 | i_wort=0;
|
29 | }
|
30 | }
|
31 | SERVE_WATCHDOG;
|
32 | _NOP();
|
33 | RESET_CPU; //RESET!
|
34 |
|
35 | }
|