Gast
#2260112
hallo forumsgemeine,
ich habe den ez430-rf2500 und im demoprogramm Sensor-Monitor wird in der
datei demo_AP.c und auch in der demo_ED.c als korrektur für dem
temperaturoffset die adresse 0x10F4 im Flashspeicher benannt. darin
sollen sich dann die korrekturdaten befinden:
__no_init volatile int tempOffset @ 0x10F4; // Temperature offset set at
production
nun habe ich 4 targetboards und 2 davon haben wenn man denn offset
dazuaddiert eine recht genaue temperaturausgabe. bei den beiden anderen
sind die abweichungen auch mit dem dazuaddieren des offset ca. 7°C
daneben.
nun wollte ich einfach mit den vorhandenen Beispielanwendungen einfach
die korrigierten zahlen in den Flashspeicher eintragen. das programm
läuft auch fehlerfrei ab. ändern tut sich der wert in der Adresse 0x10F4
nicht.
der code:
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
BCSCTL1 = CALBC1_1MHZ; // Set DCO to 1MHz
DCOCTL = CALDCO_1MHZ;
FCTL2 = FWKEY + FSSEL0 + FN1; // MCLK/3 for Flash Timing
Generator
char *Flash_ptrA; // Flash pointer
unsigned int i;
char value;
Flash_ptrA = (char *)0x10F4; // Initialize Flash pointer
FCTL3 = FWKEY; // Clear Lock bit
FCTL1 = FWKEY + ERASE + EEI; // Set Erase bit, allow
interrupts
*Flash_ptr = 0; // Dummy write to erase
Flash seg
FCTL2 = FWKEY + FSSEL0 + FN1; // MCLK/3 for Flash Timing
Generator
FCTL1 = FWKEY + ERASE; // Set Erase bit
FCTL3 = FWKEY + LOCKA; // Clear LOCK & LOCKA bits
// Dummy write to erase Flash seg A
Flash_ptrA = (char *)0x10F4; // Point to beginning of cal
consts
static int diff= -12;
staic char upperdiff, lowerdiff;
lowerdiff= diff;
upperdiff= diff>>8;
*Flash_ptr = lowerdiff;
*Flash_ptr++ = lowerdiff;
_NOP();
}
hat jemand eine idee wo mein fehler liegt?
vielen dank im vorraus
thomas