29.10.2014, 02:05
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Действительно! Атмэловско-пиковский ногодрыг на СТМ такой няшный, аж слеза пробивает. Просто загляденье и радость души!
|
|
|
|
29.10.2014, 02:12
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от STM32F0
|
Действительно! Атмэловско-пиковский ногодрыг на СТМ такой няшный, аж слеза пробивает. Просто загляденье и радость души!
|
Человек с таким ником должен был постыдится хвалить битбанг как минимум в приличном обществе. У нулевой серии его нет.
|
|
|
|
29.10.2014, 02:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Easyrider83, мне на изиэлектрониксе подсказали самый кошерный способ реализации 1-wire: на таймере с DMA. DMA дергается по прерыванию таймера в конце передачи очередного бита и устанавливает нужную скважность в соответствии со следующим значением из массива. На другом канале этого же (или другого) таймера работает захват, помещая длительности единички в другой массив.
В итоге после окончания передачи дергается прерывание и выставляется флаг "готово".
Ну, а в основном цикле как только мы такой флаг получили, обрабатываем массив полученных данных, преобразуя его в байтики.
Правда, я так и не дотукал, как это все настроить. Пилю на чертовом UART'е. А там, к сожалению, некоторые процедуры необходимо делать с ожиданием заполнения входного буфера.
Черезжопность.
Но что поделать? Рукожопие черезжопностью характеризуется: у одних рукожопых 1-wire через ногодрыг с delay(), у других — через UART с ожиданием (либо заполнения входного буфера, либо окончания передачи по DMA)...
А у нерукожопых все работает. Но уж очень хитро как-то.
P.S. Выставлять явные задержки (или ждать чего-то, как я быдлокожу) — это как вернуться в эпоху DOS'а: все сидят, и ждут, пока дискетка доформатируется... А тем временем какой-нибудь концевик выламывается двигателем...
__________________
Союз Советских Социалистических Округов Северной Америки
Последний раз редактировалось eddy; 29.10.2014 в 02:19.
|
|
|
|
29.10.2014, 02:19
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
eddy, тратить DMA на 1-wire - это примерно тоже самое, что systic на паузы. Но ваше право.
У меня STM8 чисто на прерываниях эмулирует DS1822, передавая вместо температуры влажность с I2c датчика SI7005 и еще кое-какие полезные байты.
|
|
|
|
29.10.2014, 02:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Easyrider83
|
eddy, тратить DMA на 1-wire - это примерно тоже самое, что systic на паузы.
|
Можно и вручную в прерываниях выполнять функции DMA. А вообще, надо бы попробовать с DMA. Сдается мне, будет классно!
Правда, как реализовать операцию discovery через DMA, я не знаю. Но она, к счастью, не так уж и часто выполняется — можно и забить на всех, пока будет эта операция работать.
Все остальное, ясен пень, в фоне должно делаться. Не хватало еще подвесить систему на время чтения очередного датчика...
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
29.10.2014, 03:15
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Easyrider83
|
Человек с таким ником должен был постыдится хвалить битбанг как минимум в приличном обществе.
|
Так кто-то же говорил про:
Цитата:
|
Куда форум катится?
|
Ладно когда кухарки говорят о задержках, а тут? Мне уже стыдно!
|
|
|
Сказали "Спасибо" STM32F0
|
|
|
29.10.2014, 11:38
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
тратить ЮСАРТ и ДМА на обработку датчика температуры (при считывании раз в пару минут) как-то не очень правильно. А так у меня часы работают в фоне, таймеры тоже. Единственное, для чего необходимы задержки это датчик температуры...
по прерываниям от таймера я пробовал делать задержки для датчика, но мкс он не выставляет, минимум 1 мс. Похоже это еще и из-за обработки прерываний.
Последний раз редактировалось swat24; 29.10.2014 в 11:43.
|
|
|
|
29.10.2014, 12:10
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от swat24
|
тратить ЮСАРТ и ДМА на обработку датчика температуры (при считывании раз в пару минут) как-то не очень правильно. А так у меня часы работают в фоне, таймеры тоже. Единственное, для чего необходимы задержки это датчик температуры...
|
ЮАРТ, ДМА. таймеры это всего лишь ресурсы. И если они свободны, то почему их не тратить? Зачем над ними чахнуть злым Кощеем? Потом, юзать только задержки как-то однобоко, нет выбора возможности реализации, что неизбежно скажется в самый неподходящий момент.
|
|
|
|
29.10.2014, 12:24
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Easyrider83
|
тратить DMA на 1-wire - это примерно тоже самое, что systic на паузы. Но ваше право.
У меня STM8 чисто на прерываниях эмулирует DS1822,
|
Здесь фишка в том что аппаратное все ...
__________________
Осторожно , злой кот
|
|
|
|
29.10.2014, 19:49
|
|
Частый гость
Регистрация: 23.04.2014
Сообщений: 20
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Изучаем STM32 Cortex M3
Сообщение от eddy
|
это как вернуться в эпоху DOS'а: все сидят, и ждут, пока дискетка доформатируется... А тем временем какой-нибудь концевик выламывается двигателем...
|
В ДОС были прерывания (хардварные и софтварные), таймер. Если никто их не перехватывал и не обрабатывал - ССЗБ. ДОС это вообще офигенная ось, на самом деле, для линейных задач.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:16.
|
|