реклама на сайте
подробности

 
 
> Проблема с чтением EEPROM в MEGA32
masterpc
сообщение Jul 22 2008, 07:24
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 124
Регистрация: 1-03-07
Из: Винница
Пользователь №: 25 788



Привожу кусок кода:
Код
union {
       int ival;  
       unsigned int uival;      
       byte bval[2];
      }tp;


    
        tp.uival = 812;
        WriteByteToEEPROM(400, tp.bval[0]);  
        WriteByteToEEPROM(401, tp.bval[1]);  


        tp.bval[0]=ReadByteFromEEPROM(400);
        tp.bval[1]=ReadByteFromEEPROM(401);                  
        Out_digit_LCD(1,1,(tp.ival)*10,0,8);

Проблема в том, что я читаю либо два раза подряд младший байт, либо два раза подряд старший, хотя при считывании EEPROM с процика в ячейках лежит то, что нужно. Видимо проблема с чтением, но я не смог понять в чем именно. Даже если я писал просто два байта подряд, а потом их считывал, то получал либо первый байт два раза либо второй.
Код
        WriteByteToEEPROM(400, 12);  
        WriteByteToEEPROM(401, 78);

        Out_digit_LCD(1,1,(ReadByteFromEEPROM(400))*10,0,8);  
        Out_digit_LCD(2,1,(ReadByteFromEEPROM(401))*10,0,8);

вот ф-и чтения/записи, азял из даташита на мегу32
Код
void WriteByteToEEPROM(int Address, byte Data)
{
    // Wait for completion of previous write
    while(EECR & (1<<EEWE))
    // Set up address and Data Registers
    DisableInterrupts();
    EEAR = Address;
    EEDR = Data;
    /* Write logical one to EEMWE */
    EECR |= (1<<EEMWE);
   /* Start eeprom write by setting EEWE */
    EECR |= (1<<EEWE);
    EnableInterrupts();    
}


byte ReadByteFromEEPROM(int Address)
{
    /* Wait for completion of previous write */
    while(EECR & (1<<EEWE))
    // Set up address register
    EEAR = Address;
    /* Start eeprom read by writing EERE */
    EECR |= (1<<EERE);
    // Return data from Data Register
    return EEDR;
}

Уже не знаю, тчо делать, подобный код работает на меге 88 без всяких проблем, только функции чтения/записи немного другие, но тоже из даташита.
Заранее спасибо!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 12:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01355 секунд с 7
ELECTRONIX ©2004-2016