Jump to content

    

AVI-crak

Участник
  • Content Count

    307
  • Joined

  • Last visited

Community Reputation

0 Обычный

About AVI-crak

  • Rank
    Местный

Контакты

  • Сайт
    Array

Recent Profile Visitors

2347 profile views
  1. Я опоздал, да? printo("text", double, float, uint(8-16-32-64)_t, int(8-16-32-64)_t ) printo(...) printf(...) float = 351tik +1280b float = 5259tik +8208b double = 301tik +1376b double = 1570tik +8208b int64_t = 487tik +192b int64_t = 3387tik +8236b int32_t = 150tik +140b int32_t = 745tik +8208b all_format + 1684b always +8200b
  2. Там вариантов ошибки не так уж и много, контакты J1 подписаны прямо на плате, ещё и картинок в интернетах полно. Подпаиваться питанием не обязательно, и даже вредно - у платы есть свой usb разъём питания. Кстати, без программатора должно шится по udf - usb шнурком через куб_иде. Но оно в линуксах не работает.
  3. Для замечательной платки на stn32h750vb - нужен быстрый программатор на чипе stm32f723. С другими программаторами - замечательная платка на stn32h750vb будет прошиваться медленно и с ошибками.
  4. CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; DWT->LAR = 0xC5ACCE55; DWT->CYCCNT = 0; DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; -------------- __memory(); timz1 = DWT->CYCCNT; ваш код timz2 = DWT->CYCCNT; __memory(); timz3 = timz2 -timz1; /// время в тиках Для внешних событий нужно использовать таймер в режиме захвата, у него есть аппаратные триггеры по входу.
  5. Кроме наличия питания - очень важна последовательность включения линий, в доке на дисплей есть картинка с таймингами. Из неприятностей: рандомное выгорание пикселей, иногда целых строк. Стандартный драйвер на одном boost ключе имеет детали выполняющие сразу несколько функций одновременно: задержка, ограничение тока, перекачка энергии. Я к тому что менять номиналы деталей в этой схеме не нужно, и даже опасно.
  6. Не, походу макрос HEXFLOAT проще в использовании.
  7. #define HEXFLOAT(x) ((union {uint32_t i; float f;}) {x}.f) #define F_value HEXFLOAT(0x3e4ccccd) #define F_value2 0x0.CCCCCDp-2 int main(void){ printo(F_value,"\n"); printo(F_value2,"\n"); /// 200.00000298e-3 /// 200.00000298e-3 Работает!!! Хотя мне нужно это https://stackoverflow.com/questions/4825824/hexadecimal-floating-constant-in-c Теперь осталось понять как записать отрицательное число с плавающей точкой.
  8. Константа и объединение - это разные вещи. К тому-же мне не требуется иного применения кроме изначального задуманного float. #define F_value 0x3e4ccccd F_value будет использоваться как int32_t, а мне нужно чтоб использовалось как float.
  9. Посмотреть знаю как, мне нужно чтобы точно было, без вариантов. Числа float очень редко имеют точное представление в десятичной системе. Например 0.2f храниться как 0.20000000298023223876953125f с ошибкой к 0.2f в 2.98023223876953125e-9. Очень очень длинные числа. А мне нужно записать константу без вариантов двойного преобразования, сразу 0x3e4ccccd. Но так чтобы GCC не матерился.
  10. Подскажите плиз как это записать. Нечто специфическое и редкое, которое точно существует. Выглядит наверное так: #define ttgg 0f4a52bc77 Где-то слышал что подобный хак применялся в библиотеках математики, а вот теперь надо - а вспомнить не могу.
  11. STM32F743 SDRAM

    Я рассчитывал увидеть подключение проводками, аля аурдино. Вдруг поможет...
  12. STM32F743 SDRAM

    Фото физического подключения плиз в студию.
  13. Даже проще. Энкодеры как правило имеют гораздо большую степень свободы чем требуется двигателю, и оно не всегда совпадает с желаемым результатом. По этому все вычисления переводятся в относительные числа, даже дробь не всегда нужна. Показания счётчика энкодера считываются по общему счётчику, допустим каждые 100мкс (10КГц), для большей точности (время) - через дма. Из старого значения отнимаем новое - получаем перемещение, которое уже можно сделать абсолютным (счётчик двойной точности), и масштабировать текущую позицию для более удобных расчётов. Получаются те самые электронные шестерёнки. Ну а дальше сравнение текущей позиции с требуемой, и корректировка. кхм, одна операция сложения и проверка флага переполнения -это сложно?
  14. Повторяю ещё раз - дробный счётчик. На этот раз будем считать на пальцах, как начальных классах. Счётчик без целой части, только дробная - количество значений 5 (подсказка - это одна рука). Нам нужно за 10 сложений подняться на 3 ступеньки, то-есть должно быть 3 явных переполнения одной руки. 5*3/10=1.5~2 целых пальца. 2+2+2+2+2+2+2+2+2+2 2=4=1=3=5=2=4=1=3=5 5 - остаток дробной части, который дальше участвует в вычислениях. 0=0=1=0=0=1=0=1=0=0 3 ступеньки/переполнения.
  15. Это не при 144МГц, а при 10КГц общего счётчика, используя дробные значения для каждого программного счётчика. Каким образом -это я уже в трёх вариантах написал, но могу ещё проще. Возьми тетрадный лист в клетку, нарисуй кривую, а потом зарисовывай клеточки на которые она попадает. Это и есть реализация программного счётчика с дробным делителем. Клетки - это возможность перемещения, перескочить на новую клетку счётчик может только при переполнении, при этом дробная часть не сбрасывается, и продолжает участвовать в вычислениях дальше. К слову, графика рисуется точно таким-же способом.