04.11.2010, 02:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от =GM=
|
Взглянуть можно на 13-ти тактовый вариант?
|
Можно, но это просто "наброски на клочке бумаги". С ассемблером STM8 я еще на "Вы".
Код:
|
ADDW X,$deltaL 2
ld A,$accumHL 1
addc A,$deltaHL 1
ld $deltaHL,A 1
ld A,$deltaHH 1
addc A,$deltaHH 1
ld $deltaHH,A 1
EXG YL 1
ld A,(Y) 1
ld $port,A 1
jr start 2 |
Справа такты на команду. $deltaL - адрес младших 16 бит приращения фазы, $deltaHL и $deltaHH - адреса 8 битных половинок старшего слова. Старший байт адреса таблицы перед входом нужно занести в YH. $accumHL и $accumHH - адреса половинок старшего полуслова аккумулятора фазы. Младшая половина - в X.
Я впрочем особо не заморачивался, потратил минут 15 на это листая мануал по командам ядра. Так как асм мне нужен для поиска ошибок в листинге, я писать на нем ничего не собираюсь.
Последний раз редактировалось Falconist; 13.04.2011 в 23:39.
|
|
|
|
04.11.2010, 02:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Ну мы немножко отклонились от темы. Тут лучше создать отдельную тему "асм авр vs асм стм8"
Вопрос был у людей про потребление,токи,надежность и тд. Например можно ли поставить стм8 в серийное устр-во там где уже 10 лет стоит проверенный временем АВР,при условии что устр-во неизолировано от 220В и ловит все наводки,но АВР при этом пашет на ура и не сбивается.
|
|
|
|
04.11.2010, 03:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от Gnider
|
Например можно ли поставить стм8 в серийное устр-во там где уже 10 лет стоит проверенный временем АВР,при условии что устр-во неизолировано от 220В и ловит все наводки,но АВР при этом пашет на ура и не сбивается.
|
STM8 походу разрабатывался изначально с прицелом на устройства, где надежность очень важна. Например у него два ватчдога. Запись в еепром имеет режим блокировки. Также блокируются RTC в 8L151, случайно время не испортить. Очень забавная фича - автоматический переход на внутреннее тактирование при отказе внешнего. Отвалится кварц - мега просто остановится, а STM8 продолжит работать, просто получит немаскируемое прерывание для информации о таком печальном событии. В плане надежности в STM8 многое предусмотрено. А в серию сразу ставить смысла нет, можно опытный образец сделать, погонять да и... отгрузить ![Улыбка](images/smilies/icon_smile.gif) Если претензий не последует ![Валяюсь от смеха](images/smilies/icon_biggrin.gif) , то можно и о серии задуматься.
Последний раз редактировалось Falconist; 13.04.2011 в 23:39.
|
|
|
|
04.11.2010, 03:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Последний раз редактировалось Falconist; 13.04.2011 в 23:39.
|
|
|
|
05.11.2010, 16:09
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Похоже, для DDS быстрее 13 тактов не сделать.
Здесь STM8 проигрывает AVR вчистую.
Я уж не говорю про то, что в программе DDS на ATtiny2313 у меня там реализован ввод частоты с кнопок с удалением дребезга и зажиганием светодиодов НЕ ПРЕРЫВАЯ основной цикл выдачи отсчётов 2000 квыборок/с. Частота генерации может также вводиться через рс232.
kison, у вас там в коде ошибочки-описочки, я поправил
Код:
|
addw X,$deltaL 2
ld A,$accumHL 1
addc A,$deltaHL 1
ld $accumHL,A 1
ld A,$accumHH 1
addc A,$deltaHH 1
ld $accumHH,A 1
exg yl 1
ld A,(Y) 1
ld $port,A 1
jr start 2 |
Но камень неплох, где-то на уровне пика18, хотя у последнего можно делать, например, сложение прямо в памяти.
Последний раз редактировалось Falconist; 13.04.2011 в 23:39.
|
|
|
|
05.11.2010, 16:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от =GM=
|
Здесь STM8 проигрывает AVR вчистую
|
Ну не в чистую все же. Номинал для STM8S2xx - 24МГц. Кроме того возможность разгона есть ![Улыбка](images/smilies/icon_smile.gif) STM8 могут выполнять код из SRAM - так что потенциально ее можно и до 50МГц разогнать. Основной тормоз - флеш, а тут его можно исключить. Ну и наверняка мой вариант не оптимален, нужно изучить систему команд нормально, а не 10 минут мануал полистать. А там глядишь и по тактам мегу можно обогнать. ![Улыбка](images/smilies/icon_smile.gif)
И все равно для DDS нужно брать процессор пошустрее, тот же LPC11xx. ![Улыбка](images/smilies/icon_smile.gif) У него и частота выше и складывает он за 1 такт сразу 32 бита. Там около 10 мегавыборок выйдет. Это 1-2МГц синуса, не так и плохо.
Сообщение от =GM=
|
ошибочки-описочки, я поправил
|
А что изменилось?
Последний раз редактировалось Falconist; 13.04.2011 в 23:39.
Причина: не все буквы пропечатались
|
|
|
|
05.11.2010, 17:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Давайте рассмотрим типовую задачу - видеофильтр.
Есть ФИФО массив A на скажем 32 значения.
1) Сдвигаем массив (A[1]=A[0],....,A[31]=A[30])
3) Добавляем новое значение (A[0]=NewValue)
4) Копируем в массив "B"
5) Сортируем массив "B" скажем пузырьком
6) Суммируем эл-ты массива "B" с 8 по 23 (середину массива "B") в переменную S
7) S делим на 16.
В S получаем фильтрованное значение для массива А.
Шаги с 1 по 7 надо проделать 320x240 Раз.
A,B,NewValue - 16-битные. S - 32-битная.
|
|
|
|
05.11.2010, 19:13
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Здесь STM8 проигрывает AVR вчистую, если добавить
фичи из поста #215, то полностью...
Сообщение от kison
|
А что изменилось?
|
Количество тактов осталось прежним, но программа будет работать правильно. Я честно пробовал улучшить ваш результат по тактам - но ни в какую ![Очень расстроен](images/smilies/icon_verysad.gif) .
Сообщение от kison
|
Номинал для STM8S2xx - 24МГц. Кроме того возможность разгона есть STM8 могут выполнять код из SRAM - так что потенциально ее можно и до 50МГц разогнать
|
Ну тут можно хмегу подогнать, у неё тактовая 32 МГц. И где тогда будет STM8S2xx? Так что сравнивать надо по тактам, так честнее.
Ну, а при запуске из ОЗУ не будет использоваться 32-битный интерфейс флеши, так что вместо ускорения, получите замедление не менее, чем в 4 раза.
Сообщение от kison
|
И все равно для DDS нужно брать процессор пошустрее, тот же LPC11xx. У него и частота выше и складывает он за 1 такт сразу 32 бита. Там около 10 мегавыборок выйдет. Это 1-2МГц синуса, не так и плохо
|
Тогда уж пикколо, получите не менее 15 Мвыб/с. А если взять 100 МГц TMS320F2801/02/04/06/08, то и все 25 МГц получите. А они перемножают 32*32 за один такт.
Вроде бы армы не так сильны в дрыгании ногами, или я не прав?
Последний раз редактировалось Falconist; 13.04.2011 в 23:38.
|
|
|
|
05.11.2010, 19:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: Здесь STM8 проигрывает AVR вчистую, если добавить
Сообщение от =GM=
|
фичи из поста #215, то полностью...
Количество тактов осталось прежним, но программа будет работать правильно. Я честно пробовал улучшить ваш результат по тактам - но ни в какую .
Ну тут можно хмегу подогнать, у неё тактовая 32 МГц. И где тогда будет STM8S2xx? Так что сравнивать надо по тактам, так честнее.
Ну, а при запуске из ОЗУ не будет использоваться 32-битный интерфейс флеши, так что вместо ускорения, получите замедление не менее, чем в 4 раза.
Тогда уж пикколо, получите не менее 15 Мвыб/с. А если взять 100 МГц TMS320F2801/02/04/06/08, то и все 25 МГц получите. А они перемножают 32*32 за один такт.
Вроде бы армы не так сильны в дрыгании ногами, или я не прав?
|
В 100-й раз говорю. Архитектура не имеет никакого отношения к дрыганию ног. Это уж как реализует производитель.
У LPC была проблема 6 лет назад что он не могу дрыгать ногами чаще чем 2.5Мгц. Сейчас этой проблемы нет. Как в программе напишешь так и будет дергать. Но мне если честно ниразу не приходолось вручную дергать ногами с такой частотой.
Последний раз редактировалось Falconist; 13.04.2011 в 23:40.
|
|
|
|
05.11.2010, 20:14
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Вы в вашей "типовой" задаче п.2 пропустили :-)
Сообщение от Gnider
|
1) Сдвигаем массив (A[1]=A[0],....,A[31]=A[30])
3) Добавляем новое значение (A[0]=NewValue)
4) Копируем в массив "B"
5) Сортируем массив "B" скажем пузырьком
6) Суммируем эл-ты массива "B" с 8 по 23 (середину массива "B") в переменную S
7) S делим на 16
|
Ну, на аврке я бы уложился вгрубе в 500 тактов для шагов 1-7 (без 2), т.е. 25 мкс при тактовой 20 МГц, около 2с на всё-про-всё. Может быть 400, если пооптимизировать. Как на STM8?
Последний раз редактировалось Falconist; 13.04.2011 в 23:40.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:35.
|
|