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

 
 
> Запись float в EEPROM.
Jenya7
сообщение Apr 12 2015, 10:18
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Раньше без проблем писал char и int во внешнюю память пользуясь функцией.
Код
void SPIEEPROM_Write(uint32_t address, uint32_t lenght, uint8_t *buffer)
{
    // Note!!!Every write operation demands a write enable!!!
    SPI2_CSlow();
    SPI_SendByte(USART2,SPIEEPROM_CMD_WREN);
    SPI2_CShigh();

    // start write
    SPI2_CSlow();
    // send write command
    SPI_SendByte(USART2,SPIEEPROM_CMD_WRITE);
    // send address
    SPI_SendByte(USART2,address>>8);
    SPI_SendByte(USART2,address&0x00FF);
    while(lenght--)
    {
        // send data to be written
         SPI_SendByte(USART2,*buffer++);
    }
    // stop write
    SPI2_CShigh();
}

Теперь понадобилось записать float.
пробую так
Код
void SPIEEPROM_WriteFloat(uint32_t addr, float *fval)
{
    uint8_t i;
    uint8_t farr[4];
    uint8_t *num;
    num=(uint8_t *)fval;
    for(i=0;i<4;i++)
    {
        num++;
        farr[i]=*num;
    }
    SPIEEPROM_Write(addr,4,farr);
}

и так
Код
void SPIEEPROM_WriteFloat(uint32_t addr, float fval)
{
    uint8_t farr[4];
    farr[0] = (uint8_t)fval & 0xFF;
    farr[1] = (uint8_t)fval >> 8;
    farr[2] = (uint8_t)fval >> 16;
    farr[2] = (uint8_t)fval >> 24;
    SPIEEPROM_Write(addr,4,farr);
}

ерунда какая то получается. может кто подскажет как правильно?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:06
Рейтинг@Mail.ru


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