2016-05-19 4 views
1

В функции настройки я очищаю EEPROM, если нажата конкретная кнопка. в функции петли в начале у меня есть этот код:Неверный номер возвращается с EEPROM.get arduino

if(millis() - last_sample >= 180){ 
     sampler(); 
    EEPROM.get(stateEEPROMAdress, stateCode); 
     stateCode = getState(stateCode); 
    EEPROM.put(stateEEPROMAdress, stateCode); 
    Serial.println(stateCode); 
} 

и куча коды выборки. затем в конце цикла я есть:

if(millis() - last_xbee >= 900){ 
EEPROM.get(packetEEPROMAdress,packetCount); 
    EEPROM.get(stateEEPROMAdress,stateCode); 
if(!initializing || (stateCode!= 0 && stateCode != 1)){ 
telemetry[2] = packetCount++;} 
telemetry[21] =stateCode; 
EEPROM.put(packetEEPROMAdress, packetCount); 

.... и печать кодов ...

Я также в начале эскиза я определил:

const int packetEEPROMAdress = 0; 
const int stateEEPROMAdress = packetEEPROMAdress + sizeof(int); 

, и это функция getState. простое определение состояния от значений датчиков:

int getState(const int stateCode=0){ 
    int outState; 
    //state 0 
if(stateCode == 0 &&(fabs(verticalSpeed) < 2 || fabs(relativeAltitude) < 5)&&initializing){ 
    outState = 0; 

    //true should change later to see is launch botton is on 
} else 
if(missionReady && !initializing && stateCode == 0){ 
    outState = 1; 
}else if(verticalSpeed > 3&&stateCode == 1){ 
    outState = 2; 
} 
//else 
//if(VerticalSpeed < 3 && stateCode == 2){ 
// stateCode = 2; 
// //apogee but no code in CDR 
//} 
else if(verticalSpeed < 2 &&stateCode == 2){ 
     outState = 3; 
} else if((fabs(relativeAltitude - 450)< 10 || relativeAltitude<440) &&stateCode == 3){ 
     outState = 4; 
}else 
//true should be replaced with seperation photocell is bright 
if(true && stateCode == 4){ 
    outState = 5; 
}else if(relativeAltitude < 3 && fabs(verticalSpeed) < .7 && stateCode == 5 ){ 
    outState == 6; 
    //activate Buzzer stop telemetry 
} 


return outState; 
} 

все хорошее, когда состояние 0. когда я посылаю команду, и состояния становятся 1. после нескольких циклов, которые появляются 1. число в EEPROM становится 8663. есть ли проблема в обращении к EEPROM?

ответ

0

Это было глупо :) Ничего не связано с EEPROM. Я не дал начального значения outState так большого количества, хранящихся в EEPROM, Жаль, если я получил ваше время :)