Перейти к содержанию
    

sidy

Свой
  • Постов

    376
  • Зарегистрирован

  • Посещение

Репутация

1 Обычный

Информация о sidy

  • Звание
    Местный
    Местный

Посетители профиля

4 410 просмотров профиля
  1. Проверьте тактирование USART модуля
  2. Т.е. из всего вышесказанного получается: чтобы получить число в требуемом десятичном виде мы мантиссу умножаем на 10 и полученное делим на порядок. Интересное свойство.
  3. Т.е. мы берем экспоненту в явном виде: data >> 23 & 0хFF и отнимаем ее от 150 (?) и сдвигаем на это значение мантиссу & исходное число... Осталось понять что есть 150
  4. Спасибо! Думаю это просто отличное решение. Только не совсем понятно: что означает (откуда берется) число 150?
  5. Это все понятно и даже используется. Просто есть один старый проект в который потребовалось добавить функционал.
  6. Да действительно, соптимизировал: 3,4 мкс занимает такое преобразование.
  7. Не могу сказать точно. Время выполнение данного участка кода я измеряю с помощь установки 1 и сброса в 0 ножки МК. В данном случае там всегда ноль, т.е. в 1 установиться не успевает. Можно сделать вывод что преобразование происходит очень быстро)
  8. Применение такого выражение позволило снизить время выполнения с 6 мкс до 5,2 мкс.
  9. Если в десятичном виде, то уложиться (от - 80 до 200) или если умножить на 10 (чтобы иметь 1 знак после запятой) от -800 до 2000.
  10. Добрый день есть устройство, которое передает в микроконтроллер значения в виде float_32 IEEE 754 Например -12.5 это будет 0xC148 0000 Мне в микроконтроллере данное число нужно как -125; Пробовал преобразовать как: int32_t a; float *b; b=(float*) &a return *b * 10; Все нормально получаю -125. Но в микроконтроллере нет аппаратной поддержки float, и всё это преобразование занимает 6 мкс. Хотелось бы конечно быстрее. В связи с этим возник вопрос можно ли это преобразования сделать как-то по другому? Желательно с помощью сдвигов и циклов целочисленных. Я попробовал получить отдельно: знак, мантиссу и экспоненту – все правильно, но как все это склеить в число не совсем понятно: sign = (1-2*(number>>31)); printf("%d\n", sign); exponenta = ((number<<1)>>24)-127; printf("%d\n", exponenta); mantissa = (number<<9)>>9; printf("%d\n", mantissa); Может есть возможность перехода от числа с плавающей точкой к числу с фиксированной точкой?
  11. Добрый день! Появилась необходимость использования протокола МЭК 60870-5-101. Раньше никогда не использовал и хотелось бы получше с ним разобраться. По мимо самого ГОСТа может кто подсказать хорошую и понятную литературу (статьи) по данному стандарту?
  12. Добрый день! У меня есть устройство с CAN на борту и есть преобразователь USB - CAN для ПК. Хотелось бы узнать, есть ли какие-нибудь программы для ПК, чтобы пообщаться с CAN-устройством?
  13. Тоже самое сделает сигнал Low-power managment reset внутри микроконтроллера.
×
×
  • Создать...