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

 
 
> Работа с массивами.
Jenya7
сообщение Feb 8 2015, 09:12
Сообщение #1


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

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



Что то запутался я.
Код
uint32_t LOGGER_GetDelta(uint32_t address, unsigned char *delta_h_l)
{
    uint32_t low_byte, high_byte;
    
    // start read
     SPI_CSlow();
    // send command
    SPI_SendByte(SPIEEPROM_CMD_READ);
    // send address
    SPI_SendByte(address>>8);
    SPI_SendByte(address&0x00FF);
    // read contents of memory address
    SPI_TransferByte(0x00);
    low_byte = majority32const(&USART1->RXDATA);
    SPI_TransferByte(0x00);
    high_byte = majority32const(&USART1->RXDATA);
    // stop read
    SPI_CShigh();

    *delta_h_l = low_byte;
    *(delta_h_l+1) = high_byte;

    return ((high_byte << 8) | low_byte);
}

Смотрю в дебаггере low_byte, high_byte получают правильные данные а *delta_h_l, *(delta_h_l+1) не получает ничего.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Opex
сообщение Feb 8 2015, 09:39
Сообщение #2


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

Группа: Свой
Сообщений: 75
Регистрация: 13-03-11
Из: Екатеринбург
Пользователь №: 63 574



Нужно low_byte и high_byte привести к типу unsigned char перед записью в массив.
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 8 2015, 09:43
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Opex @ Feb 8 2015, 12:39) *
Нужно low_byte и high_byte привести к типу unsigned char перед записью в массив.

Компилятор сам это сделает, согласно стандарту С, обрезав старшие разряды.
Я подозреваю, что указатель указывает куда-то не туда, куда записать ничего физически нельзя.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 13:14
Рейтинг@Mail.ru


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