02.11.2010, 17:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от kison
|
За одинаковые деньги получите M48 или STM8L151. Сравните их начинку и вопросов таких больше не будет
|
Не всегда нужен большой объем. МНЕ часто важна скорость выполнения критических участков кода (такая у меня защита). и если код получается в 5 раз больше - мне что, ставить в брелок АРМ на 16х5=75 МГц? У меня там тини2313 в 5х5 мм QFN-корпусе впритык стоит...
Ладно, буду сам разбираться. Спасибо кто пытался помочь.
Последний раз редактировалось Falconist; 13.04.2011 в 23:32.
|
|
|
|
02.11.2010, 17:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от Stanislav_S
|
кстати да алгоритм кривоватый
|
Алгоритм не оптимальный. Количество проходов по массиву не зависит от содержимого этого массива. А если там всего два значения не отсортированы? Должно хватить одного прохода, но не тут то было.. Ну оптимальность она сама по себе, а правила программирования на Си сами по себе. Сортировать локальный НЕИНИЦИАЛИЗИРОВАННЫЙ массив нет никакого смысла. А если вся программа только из этого и состоит - ее нужно всю сократить в ноль. Что с успехом проделывает WinAVR - мне даже листинг не показать, нету его
Сообщение от Stanislav_S
|
То что ИАР пока сыроват, это да, но глюков пока не встречал
|
Выходит он и под AVR сыроват ![Валяюсь от смеха](images/smilies/icon_biggrin.gif) Во всяком случае IAR-овский оптимизатор с задачей не справился. Не перестаю убежаться - свободный софт рулит. GCC ведет себя более предсказуемо и оптимизатор у него таких косяков не допускает.
Последний раз редактировалось Falconist; 13.04.2011 в 23:32.
|
|
|
|
02.11.2010, 17:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от ish0
|
Почитал ДШ на STM8L15X и нашел, что для реализации low power режимов, нужно исполнять код из RAM. Т.е. нужно копировать функции из флэша в рам (хрен знает как определить размер кода) и потом вызывать через указатель на функцию, или есть другой способ?
|
Другого способа нет. Это сделано для того, чтоб питание с флеши можно было снять. Можно не копировать, а поручить это линкеру, например расположив код в секции data, ну или как она там называется в выбранном компиляторе. Тогда стартап скопирует функцию вместе с глобальными инициализированными переменными. И можно вызывать просто по имени. Ну либо в рантайме, но тут действительно надо как то узнать размер функции и соответственно вся дальнейшая работа с функцией через указатель. В общем вопрос требует тщательного рассмотрения.
Сообщение от niXto
|
Ладно, буду сам разбираться.
|
С чем разбираться то?
Последний раз редактировалось Falconist; 13.04.2011 в 23:32.
|
|
|
|
02.11.2010, 17:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от niXto
|
Не всегда нужен большой объем. МНЕ часто важна скорость выполнения критических участков кода (такая у меня защита). и если код получается в 5 раз больше - мне что, ставить в брелок АРМ на 16х5=75 МГц? У меня там тини2313 в 5х5 мм QFN-корпусе впритык стоит...
Ладно, буду сам разбираться. Спасибо кто пытался помочь.
|
16x5=80.
Ставь АРМ в QFN и забудь про проблемы с быстродействием.
Последний раз редактировалось Falconist; 13.04.2011 в 23:32.
|
|
|
|
02.11.2010, 17:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от kison
|
Другого способа нет. Это сделано для того, чтоб питание с флеши можно было снять. Можно не копировать, а поручить это линкеру, например расположив код в секции data, ну или как она там называется в выбранном компиляторе. Тогда стартап скопирует функцию вместе с глобальными инициализированными переменными. И можно вызывать просто по имени. Ну либо в рантайме, но тут действительно надо как то узнать размер функции и соответственно вся дальнейшая работа с функцией через указатель. В общем вопрос требует тщательного рассмотрения. ?
|
Ну low-power и подразумевает что "отрубай все лишее" поэтому выполнение в памяти отрубает всякие там кэши и тд...
Последний раз редактировалось Falconist; 13.04.2011 в 23:32.
|
|
|
|
02.11.2010, 17:55
|
|
Прохожий
Регистрация: 07.10.2009
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 1 сообщении
|
Re: STM8(S/L), первые впечатления
Последний раз редактировалось Falconist; 13.04.2011 в 23:31.
|
|
|
|
02.11.2010, 18:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от Stanislav_S
|
Однако все таки задача немного высосана из пальца. Такие проги вряд ли кто пишет
|
Это стандартный "пузырек" - http://ru.wikipedia.org/wiki/Сортировка_пузырьком. Достаточно часто используется на практике, когда более тяжелые алгоритмы сортировки не нужны. Просто вышеприведенная реализация неверна.
Сообщение от Stanislav_S
|
я к ИАР привык
|
А у меня на него денег нет. Я нищеброд
Последний раз редактировалось Falconist; 13.04.2011 в 23:31.
|
|
|
|
02.11.2010, 18:32
|
|
Временная регистрация
Регистрация: 15.03.2006
Сообщений: 80
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
IAR под AVR для первого тестового примера при максимальной оптимизации по скорости при выполнении C=A+B решил не париться и ничего не складывать, сам посчитал результат 3 и сразу шлёпнул его в C.
Ай да молодец. Услужил
|
|
|
|
02.11.2010, 18:45
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от EugVor
|
IAR под AVR для первого тестового примера при максимальной оптимизации по скорости при выполнении C=A+B решил не париться и ничего не складывать
|
Код:
|
volatile uint8_t a;
volatile uint8_t b;
volatile uint8_t c;
void TestFunc(void)
{
c = a + b;
} |
Впрочем при вынесении в отдельную функцию и без volatile должно быть правильно. Но оптимизатор может заменить вызов этой функции заранее подсчитанным значением. volatile это исключает.
Последний раз редактировалось Falconist; 13.04.2011 в 23:31.
|
|
|
|
02.11.2010, 19:09
|
|
Временная регистрация
Регистрация: 15.03.2006
Сообщений: 80
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Да... volatile уже не трогает и начал юзать косвенную адресацию SRAM.
И всего 22 такта. Рано я поторопился с выводами.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:10.
|
|