10.11.2010, 19:47
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Вот ещё фактики про дма
1) Передача одного байта занимает 3 такта. ЦПУ похоже стоит.
2) Передача одного слова, скажем для цап, занимает 5 тактов. ЦПУ похоже стоит.
3) Из п.2 следует, что максимальная скорость передачи для STM8L равна 16/5=3.2 МГц. Больше ничего не делается, т.к. все шины заняты, цпу стоит. Так что, ни о каких 10МГц выдачи отсчётов речь просто не идёт.
4) Время установления выхода ЦАПа составляет 7 (макс до 12 мкс), т.е. частота выдачи (83)-142 кГц.
5) Внешний цап в связке с дма использовать нельзя, т.к. дма не может работать с портами ввода-вывода.
Вывод такой. Это костыли какие-то, а не дма. А в остальном чип хорош, да.
|
|
|
|
10.11.2010, 23:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от =GM=
|
1) Передача одного байта занимает 3 такта. ЦПУ похоже стоит.
|
Нет, не стоит. Есть приоритеты у DMA и даже при самом высоком ядро остановится на такт при одновременном доступе с DMA к одному ресурсу. Например к ОЗУ. Но в это время вполне можно работать с регистрами например. Можно задать приоритет DMA пониже, тогда ждать будет как раз DMA, а CPU работать.
Сообщение от =GM=
|
3) Из п.2 следует, что максимальная скорость передачи для STM8L равна 16/5=3.2 МГц. Больше ничего не делается, т.к. все шины заняты, цпу стоит. Так что, ни о каких 10МГц выдачи отсчётов речь просто не идёт.
|
Пошли откровения. Может это... документацию почитать?
Сообщение от =GM=
|
4) Время установления выхода ЦАПа составляет 7 (макс до 12 мкс), т.е. частота выдачи (83)-142 кГц.
|
Ну что поделать, мало потреблять и быстро работать видимо не выходит. Ну пусть тогда не STM8L, а STM32F100 - там ЦАП с 1мкс установки. Стоимость - те же 50р.
Я же не говорил, что STM8 прямо на все задачи ложится. Нет конечно, надо подбирать подходящий под конкретную задачу. Но со многим и STM8L справится - звук, типа голоса, музыки. Или НЧ генератор 20-50000Гц. В общем много где и нешустрый ЦАП сгодится.
Сообщение от =GM=
|
5) Внешний цап в связке с дма использовать нельзя, т.к. дма не может работать с портами ввода-вывода.
|
Да все равно смысла в этом нет. Если нужен синус выше 50КГц, лучше взять более приспособленный кристалл. Например тот же STM32F100. Навешивать же внешний ЦАП как то неинтересно - он стоит дорого. Дороже микроконтроллера со встроенным. А резисторный еще дороже.
С STM32F100 наврал - ЦАП за 4мкс устанавливается. Но это от минимума до максимума, так что килогерц на 400 синуса рассчитывать можно.
Кстати и внешний ЦАП к STM8L можно подключить. Канал 3 DMA имеет такую возможность.
Последний раз редактировалось kison; 11.11.2010 в 00:04.
|
|
|
|
11.11.2010, 00:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Дело в том что DDS это фактичекси 2 арифметические операции. Никто не спорит что можно откапать 8-битник который две эти операции,который две эти операции подряд будет делать быстро. Но это все синтетика.
Я уже какой раз прошу сравнивать большие куски программ. Несколько я привел.
Сравнения я так и не увидел.
|
|
|
|
11.11.2010, 03:32
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Вам же сказали, по моей оценке вгрубе можно уложиться в 500 тактов. Кстати, от вас сравнения тоже не видно, с чем сравнивать-то?
|
|
|
|
11.11.2010, 03:50
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Такие откровения
Сообщение от kison
|
Пошли откровения. Может это... документацию почитать?
|
Вообще-то, цифры про 3 такта и 5 тактов для передачи байта и слова посредством дма взяты из документации на стм8л, так что учите матчасть.
Проц, как вы наверное заметили, в основном работает с памятью, поскольку более-менее ходовых регистров у него всего 3. Теперь, если вы посмотрите, как реализован дма, то вы придёте в ужас. Он захватывает общую шину, так что больше никаких операций просто физически невозможно совершить. Поэтому и говорю, что это не полновесный дма, а некие костыли в системе.
Сообщение от kison
|
Кстати и внешний ЦАП к STM8L можно подключить. Канал 3 DMA имеет такую возможность
|
Вроде бы не имеет. Я ещё раз проверю, конечно, а вы пока расскажите, как будете подключать внешний цап к дма?
|
|
|
|
11.11.2010, 08:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от =GM=
|
Вообще-то, цифры про 3 такта и 5 тактов для передачи байта и слова посредством дма взяты из документации на стм8л, так что учите матчасть.
|
Я не про такты, а про то, что больше ничего не делается. Еще как делается. Например за время требующееся на команду условного перехода вполне пройдет полная транзакция DMA. Но конечно полностью от конфликтов не уйти, поэтому я честно сказал - примерно на 10% ядро все же притормозится. Пусть даже на 20, это все равно лучше 100% загрузки и невозможности использовать прерывания. С DMA прерывания доступны.
Сообщение от =GM=
|
Теперь, если вы посмотрите, как реализован дма, то вы придёте в ужас. Он захватывает общую шину, так что больше никаких операций просто физически невозможно совершить. Поэтому и говорю, что это не полновесный дма, а некие костыли в системе.
|
Вполне нормально реализован. Ну вот с ЦАП - транзакция должна выполниться за время между запросами. Не нужно выдерживать позицию вывода с точностью до такта, все равно данные идут в буферный регистр ЦАП. Для встроенного ЦАП делать выборки выше мегасэмпла смысла не имеет, все равно 50-70КГц предел для синуса. Ну и за 16 тактов всяко место для 3 на транзакцию найдется. Если задать DMA максимальный приоритет,то да - ядро будет приостанавливаться. Но и это не беда, 3/16*100 = 18% загрузки. Однако имеем еще 82 на разные нужды.
Сообщение от =GM=
|
Вроде бы не имеет. Я ещё раз проверю, конечно, а вы пока расскажите, как будете подключать внешний цап к дма?
|
Я - не буду. ![Улыбка](images/smilies/icon_smile.gif) Но как можно это сделать расскажу. Есть куча параллельных асинхронных ЦАП, вплоть до R2R матрицы, хоть последняя и совсем хреновый выбор. Но и интегральные встречаются. 3 канал DMA может работать с адресами 0х4000-0х5FFF, а там все регистры GPIO.
|
|
|
|
11.11.2010, 13:29
|
|
Временная регистрация
Регистрация: 15.03.2006
Сообщений: 80
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Изобразил скрипт для расчёта таймеров STM8 ›› http://eugenemcu.ru/index/0-65
|
|
|
|
11.11.2010, 17:11
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от kison
|
Я не про такты, а про то, что больше ничего не делается. Например за время требующееся на команду условного перехода вполне пройдет полная транзакция DMA
|
Не думаю, а то больно умный чип выйдет ![Весело](images/smilies/icon_laugh.gif) . ПМСМ, на время работы дма всё остальное просто замирает, так было исторически, это и для разработчиков проще в реализации. Учтите, в ядре ещё трёхкаскадный конвейер стоит, поэтому архисложно что-либо сделать или не сделать, когда дма захватил системную шину (см. картинку), мало ли какой сигнал и куда пойдет во время работы дма.
Сообщение от kison
|
Есть куча параллельных асинхронных ЦАП. 3 канал DMA может работать с адресами 0х4000-0х5FFF, а там все регистры GPIO.
|
С регистрами вы меня убедили, похоже, можно работать. А как быть с выводом 16-битных значений на внешний цап? Имеется в виду вывод не одного байта, а двух. Есть у дма возможность вывести два байта в два порта?
И последнее. Как вы планируете запускать дма через 1 мкс?
Последний раз редактировалось =GM=; 11.11.2010 в 17:16.
|
|
|
|
11.11.2010, 17:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от =GM=
|
Не думаю, а то больно умный чип выйдет . ПМСМ, на время работы дма всё остальное просто замирает, так было исторически, это и для разработчиков проще в реализации. Учтите, в ядре ещё трёхкаскадный конвейер стоит, поэтому архисложно что-либо сделать или не сделать, когда дма захватил системную шину (см. картинку), мало ли какой сигнал и куда пойдет во время работы дма.
|
Ну значит в ST дебилы сидят. Или напротив - там думают что пользователи - дебилы. Они ведь в документации приоритеты расписали и четко указали, что только высший приоритет для DMA может притормозить CPU. Но и при других приоритетах DMA как то работает. Несмотря на то, что ядро имеет более высокий приоритет. А вот по Вашей логике кроме высшего все остальные приоритеты неработоспособны в принципе. ![Улыбка](images/smilies/icon_smile.gif) Типа DMA будет вечно ждать когда же ядро шину освободит.
Сообщение от =GM=
|
А как быть с выводом 16-битных значений на внешний цап? Имеется в виду вывод не одного байта, а двух. Есть у дма возможность вывести два байта в два порта?
|
Нет. Точнее есть, но в два соседних адреса. Порты же разнесены, так что - такой возможности у STM8L нет. Но есть у STM32F100
Сообщение от =GM=
|
И последнее. Как вы планируете запускать дма через 1 мкс?
|
Таймером. Им тактируется ЦАП, по этому такту содержимое буферных регистров идет в выходные регисты ЦАП. Сразу после этого ЦАП сам запрашивает очередную транзакцию от DMA.
|
|
|
|
11.11.2010, 17:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.01.2007
Сообщений: 3,123
Сказал спасибо: 61
Сказали Спасибо 1,153 раз(а) в 624 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
IAR Embedded Workbench for STM8 v.1.20.1 если интересно http://iar.com/website1/1.0.1.0/2891/1/
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:24.
|
|