24.10.2014, 14:11
|
|
Вид на жительство
Регистрация: 02.04.2008
Адрес: Ленинград
Сообщений: 346
Сказал спасибо: 67
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от niXto
|
Однако из-за одной этой переменной компилятор не сможет использовать занятый регистр в других местах программы - тех же циклах, в итоге потери памяти и быстродействия могут быть ещё больше. У стм32 не настолько много регистров, чтобы выделять один из них под глобальную переменную
|
Да у меня программа по сути очень простая.
Никаких особых вычислений деления и пр. излишеств, никаких работ с 32 и 64 разрядами.
ШИМ туда, ШИМ сюда. Кнопочку нажали, кнопочку отжали.
Куча подпрограмм даже без локальных переменных.
Так что все регистры не пользуются.
Хотелось код сократить. Уж очень разросся.
Стал анализировать - if занимает очень много и при работе с переменными размещенными в ОЗУ отжирает колоссально.
Просто мне не стоит забывать что одно и тоже написанное для 8-ми разрядного контроллера и 16-ти, если код простой (основные переменные типа char и тупо складываем 8-ми разрядные числа без переноса напр.)
и работаем с портами для 16-ти разрядного займет больше памяти.
Естественно это в общем случае.
Казалось что 16кБ хватит на все... Оно конечно хватит. ужму. ![Улыбка](images/smilies/icon_smile.gif)
С 8-мью разрядами в моем случае вероятно так бы и произошло Хватило точно.
Последний раз редактировалось Mike121234; 24.10.2014 в 14:23.
|
|
|
|
24.10.2014, 15:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Переменные делай uint32_t - и программа будет короче и работать быстрее
|
|
|
|
24.10.2014, 16:27
|
|
Вид на жительство
Регистрация: 02.04.2008
Адрес: Ленинград
Сообщений: 346
Сказал спасибо: 67
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Boba_spb
|
Переменные делай uint32_t - и программа будет короче и работать быстрее
|
Не, я в 16-разрядном режиме работаю (Thumb)
Проверял, что short, что char - одинаковый код по размеру....
Ну а скорость не проверял мне не надо....
|
|
|
|
24.10.2014, 16:56
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Mike121234
|
Не, я в 16-разрядном режиме работаю (Thumb)
|
Вам не про режим говорят, да и нет у STM32 ARM-режима, только Thumb.
Сообщение от Mike121234
|
Проверял, что short, что char - одинаковый код по размеру....
Ну а скорость не проверял мне не надо....
|
Переменные на 32-разрядном МК лучше с точки зрения производительность и прочего делать 32-разрядными.
|
|
|
|
28.10.2014, 23:25
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Добрый день. У меня небольшая проблема с задержками на процессоре STM32F051C8. Через таймер можно выставить задержки от 1 мс. (частота таймера 48 мгц, максимум). Задержки в мкс выставить не получается, минимум около 1 мс и больше. Даже если описывать задержки через циклы то появляется очень большая нелинейность. (например разница между одним прохождением цикла и 2-3 не в два - три раза соответственно, а на пару мкс. т.е. для нужных задержек надо выбирать количество прохождения циклов методом проб... что не радует). Как можно реализовать подключение к датчику температуры DS18B20 через 1-wire не используя USART? Пробовал разные библиотеки и не одна из них не работает из-за невозможности выставить необходимые задержки в мкс... Сам датчик общается, смотрел осциллографом, датчик данные передает, но МК не принимает...
Завтра попробую разобраться с USART, но не очень бы хотелось его использовать... Странно, что такой относительно мощный МК не может выставить задержку в мкс... хотя на пике, даже не очень производительном, все решалось очень просто. Подскажите как вообще можно выставить задержки в МК? или не мучаться, а использовать сразу юсарт?
|
|
|
|
28.10.2014, 23:38
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
swat24, процедуры delay_us и delay_ms есть в файле systic.c
Работают идеально.
|
|
|
|
29.10.2014, 00:09
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
я этот файл нашел только в примере, в библиотеках его нет. Где его вообще брать? Попробую с примером, если получится отпишу
|
|
|
|
29.10.2014, 00:38
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Чего там может не получится-то?
|
|
|
|
29.10.2014, 01:05
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
после того, как не получилось сделать микросекундную задержку даже циклами уже и не знаю, что может тут не получится))
В общем спасибо за совет, завтра попробую
|
|
|
|
29.10.2014, 01:11
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Минимально необходимый тайм-слот для 1-wire 10мкс, вроде. Это даже для STM8 без всякого бит-банга более, чем достаточно. Куда форум катится?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:14.
|
|