MSP430F149 Flashwrite

OP #733449
Lesenswert?

Hallo,

weiß jemand wie ich in das Infosegment A einen Wert schreiben kann? 
Folgenes Listing zeigt wie ichs machen will, sieht jemand den Fehler?
  Flash_ptr = (char *) 0x1080;        // Initialize Flash pointer
  while(FCTL3 & BUSY);
  FCTL2 = FWKEY + FSSEL_1 + FN0;      // MCLK/2 for Flash Timing 
Generator
  FCTL3 = FWKEY;                      // Clear Lock bit
  FCTL1 = FWKEY + WRT;                // Set WRT bit for write operation
  P5OUT |=0x01;
  *Flash_ptr = 0x33;                  // Write value to flash
  while(FCTL3 & BUSY);
  P5OUT &=~0x01;
  FCTL1 = FWKEY;                      // Clear WRT bit
  FCTL3 = FWKEY + LOCK;               // Set LOCK bit

Am Port5.4 messe ich einen MCLK von 714kHz

Gruß
Gerhard
#733516
Lesenswert?

Das hier klappt auf dem F1611 wunderbar:
1
unsigned char WriteInfoMemA(unsigned int *Data, unsigned char NumWords)
2
{
3
  if(NumWords < 129)
4
  {
5
    _DINT();
6
    WDTCTL = WDTPW + WDTHOLD;                       // Stop watchdog timer
7
      FCTL2 = FWKEY + FSSEL_SMCLK + FN1 + FN3;      // SMCLK/10 for Flash Timing Generator -> ~ 400Khz
8
    unsigned int *FlashPtr;
9
    unsigned char i;
10
    FlashPtr = (unsigned int*)0x1080;
11
    FCTL1 = FWKEY + ERASE;                    // Set Erase bit
12
      FCTL3 = FWKEY;                            // Clear Lock bit
13
      *FlashPtr = 0;                           // Dummy write to erase Flash segment
14
    FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation
15
    
16
    for (i=0; i<NumWords; i++)
17
      {
18
        *FlashPtr++ = *Data++;                   // Write value to flash
19
      }
20
  
21
      FCTL1 = FWKEY;                            // Clear WRT bit
22
      FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
23
    _EINT();
24
    return i+1;
25
  }
26
  else return 0;
27
}
Mein SMCLK läuft mit 4,096MHz.

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