Ока в Новосибирске

Клуб Окаводов Новосибирска
Текущее время: 08 авг 2025, 03:19

Часовой пояс: UTC + 7 часов




Начать новую тему Ответить на тему  [ Сообщений: 11831 ]  На страницу Пред.  1 ... 63, 64, 65, 66, 67, 68, 69 ... 592  След.

Актуальная статистика (не забывайте изменять статус!)
Собрал и буду собирать еще (соседу, свату, брату) 23%  23%  [ 54 ]
Собрал одно ЗУ 21%  21%  [ 49 ]
Уже собираю 29%  29%  [ 68 ]
Интересуюсь, размышляю - собирать или нет. Наверное буду. 27%  27%  [ 65 ]
Не буду собирать это устройство. 1%  1%  [ 2 ]
Всего голосов : 238
Автор Сообщение
СообщениеДобавлено: 19 мар 2014, 01:09 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11279
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
vpvideo писал(а):
Но при нагреве до макс температуры установленной на емкостях после дросселя всего по 4,2В.

Странно. Я оконечный каскад собирал один в один с первым каналом, и заработал он сразу. Посмотрите что там с ШИМом на максимальной температуре, на выходе АТмеги? Должна быть лог.1 Если да, то какая то проблема с ключом.

PS. Фьюзы атмеги8 точно верные стоят? 8мгц?

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 01:41 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11279
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
foxghost писал(а):
Алексей здравствуйте.
Будет ли еще изменения в схеме (из за датчика тока), а то ПП нарисовал, не очень хочется потом резать и перемычки ставить - не любитель этого.

Здравствуйте Артем! Не планируется, но чёрт ее знает. Но не должно. Помню, что не любите. Но как вот я могу сказать или гарантировать? Пока все работает как положено.

Специально потратил более четырех часов и убедился в том, что все таки нужны блокировочные конденсаторы и подтягивающие резисторы на портах энкодера.
Так же упразднил DAC3 регулятора яркости LCD-дисплея в пользу обычного RC-фильтра и ШИМ с основного МК (ШИМ то освободился, в связи с переездом вентиляции в другой МК). Еще раз обращаю внимание, что кто будет ставить обычный дисплей, то не паяйте и не разводите себе этот фильтр R25-C28 - фишка яркости работать не будет!

Указал на схеме, что "отныне 5А датчик тока нужно подключать на канал ADC0 АЦП через соответствующую ему RC-цепочку C8 и R10. При этом канал ADC1 нужно подключить на общий провод. В случае использования датчика 20А, нужно поменять порты местами: RC-цепочку C8/R10 подключаем к каналу ADC1, а канал ADC0 подключаем к общему проводу. Это необходимо для работы определения типа используемого датчика. " Если подключить к каналу 5А датчик на 20А, то ничего не случится - просто придется много крутить энкодер в подгонке нужного коэффициента.

Все вышеуказанные изменения добавил в СВОЮ схему и обновил архив на заглавной странице этого топика. Пользуйтесь файлом history.txt для определения последних изменений.

Что еще? Да вроде все. Как уже говорил, что не гарантирую, но постараюсь больше ничего в основную схему не вносить. А если что - не ругайте сильно. Ведь хочется и вам по-быстрее, и вообще как лучше. Постараюсь, что бы не получилось как всегда.

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 02:08 
Не в сети
Уже был(а), и не раз, и не два
Аватара пользователя

Зарегистрирован: 10 дек 2013, 05:05
Сообщения: 127
Авто: Opel
Имя: Сергей
Вопрос к АЛЕКСЕЮ по регулировке яркости. Если по выходу 14 ЦП поставить ключ и отфильтровать шим через дроссель и ёмкость, яркость на обычном индикаторе будет регулироваться? Я так понял там на выходе обычный шим.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 02:15 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11279
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
Baron76 писал(а):
Вопрос к АЛЕКСЕЮ по регулировке яркости. Если по выходу 14 ЦП поставить ключ и отфильтровать шим через дроссель и ёмкость, яркость на обычном индикаторе будет регулироваться? Я так понял там на выходе обычный шим.

Если поддержать программно - будет там шим. Но логика работы будет аналогичная логике регулировки яркости дисплея OLED. Он от постоянной высокой яркости выгорает, потому на длительных этапах яркость будет убавляться до процентов 30-40. Зачем и для чего регулировать яркость LCD, я не совсем понимаю. Это раз. Второе - потребуется транзисторный ключ, ибо мощности выхода у МК не хватит, что бы подсвечивать целый дисплей.

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 02:21 
Не в сети
Заслуженный бета-тестер
Аватара пользователя

Зарегистрирован: 09 дек 2013, 22:02
Сообщения: 147
Откуда: Чернигов
Авто: ВАЗ-2111
Имя: Владимир
Еще нюанс по вентиляторам. Чтоб не жарить датчики феном постоянно, снизил температуры до 25/35. (В помещении 21. Нормально можно пальцами включать вентилятор.) При уменьшении значения без определенной закономерности иногда значение резко перепрыгивает на большое значение. Например: хочу уменьшить до 25, скручиваю, а после 28-ти стает 83. (Цифры меняются). Так ведет себя и мин. и макс. А смотря на неторопливость перебора температуры это занимает много времени. Это не главное в приборе, но ...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 02:25 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11279
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
vpvideo писал(а):
снизил температуры до 25/35......... При уменьшении значения без определенной закономерности иногда значение резко перепрыгивает на большое значение. Например: хочу уменьшить до 25, скручиваю, а после 28-ти стает 83. (Цифры меняются).

Я же писал сегодня, что эта функция ГЛЮЧИИИТ, потому что я ее не отлаживал, а просто сделал прикидку - как оно будет.. И вместо 23 там может быть запросто цифра 223, или 2233, просто ее не видно всю. Не пользуйтесь ей пока. И.. снова перешейте атмегу8
Кстати не обяз греть ВСЕ датчики - достаточно греть любой из первых двух для канала №1 и третий для канала №2.

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 03:30 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11279
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
Ну вот, кажется сделал энкодер так, как хотелось. При чем не две скорости, а целых три! Ну, во всяком случае сама библиотека способна различать три градации скорости вращения. В БП работать стало удобней. Сейчас если крутишь медленно, то напряжение прирастает по 100мв каждые 3 импульса с энкодера. Если крутишь средне по скорости, то прибавляется по 100мВ, но каждый 1 импульс с энкодера. Если крутить остервенело :) то прибавляется по 500мв каждый 1 импульс. С калибровками - там почему то все тормозит жутко - буду разбираться почему. А теперь срочно спать!

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 10:18 
Не в сети
Заслуженный участник Клуба ЗУ-ОКА275

Зарегистрирован: 24 окт 2013, 11:44
Сообщения: 928
Откуда: Чувашия
Авто: КИА РИО 2018
Имя: Вячеслав
vpvideo писал(а):
Вячеслав-1 писал(а):
vpvideo
Не пробовали,как нагрев?


Проверить можно отключив выход ЦАП от ОУ и подав на последний 0-5 В с переменника.Только осторожно,контролируя ток амперметром.
А дросселя в ШИМе не прослаблены по току или по индуктивности?
oka275
ЗдОрово!Получился интелектуальный энкодер,как у меня в трансивере!

_________________
С уважением,Вячеслав.73!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 14:32 
Не в сети
Новичок

Зарегистрирован: 13 ноя 2013, 02:28
Сообщения: 9
Имя: Владимир
oka275 писал(а):
убедился в том, что все таки нужны блокировочные конденсаторы и подтягивающие резисторы на портах энкодера

А до этого использовали только встроенные в МК подтягивающие резисторы? Их обычно не достаточно, так как они весьма высокоомные, для подтяжки желательно всегда ставить внешние резисторы.
Необходимость наличия конденсаторов говорит о неоптимальности программы в плане ликвидации дребезга контактов. Для энкодера оптимальней всего использовать state machine, будет проще избавиться от дребезга. Хотя наличие конденсаторов, естественно, только улучшит ситуацию. Но они не обязательны, дребезг прекрасно ликвидируется програмно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 14:54 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11279
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
kvm писал(а):
А до этого использовали только встроенные в МК подтягивающие резисторы? Их обычно не достаточно, так как они весьма высокоомные, для подтяжки желательно всегда ставить внешние резисторы.

Это я знал, но думал может это у них недостаточно, а у меня будет достаточно :D

kvm писал(а):
Необходимость наличия конденсаторов говорит о неоптимальности программы в плане ликвидации дребезга контактов

Я сначала их припаял вместе с резисторами, а уже потом существенно переписал модуль. И сейчас, быть может, нужды в них совсем нет. Потом проверю как нибудь. В прочем, экономить 1 рубль на двух конденсаторах, которые даже если ничего не дребезжит, не сделают ничего хуже (а то и вовсе защитят от внештатных ситуаций), это как то не серьезно и не надёжно.

kvm писал(а):
оптимальней всего использовать state machine

Открыл википедию по данному термину (перевелось почему то как "Конечный автомат") и закрыл - хватило школьного курса издевательств. Запряжение кобылы тоже можно разложить на математические формулы. Меж тем вся суть ее запряжения заключается только в самом факте её запряжении. И с этой наукой справлялись наши деды без всякой высшей математики - был бы результат. Есть он или нет, можно проверить отпаяв конденсаторы. Кроме того хочу сказать, что зачастую можно оспорить сам факт отсутствия или присутствия дребезга, если только не использовать объективные средства контроля. Например, специально написанной для этого программы. :)

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 16:00 
Не в сети
Заслуженный участник Клуба ЗУ-ОКА275

Зарегистрирован: 24 окт 2013, 11:44
Сообщения: 928
Откуда: Чувашия
Авто: КИА РИО 2018
Имя: Вячеслав
У меня вроде обходится без дребезга,но конденсаторы лучше припаять!У этих энкодеров есть "факт"старения,вот тут они и пригодятся!

_________________
С уважением,Вячеслав.73!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 16:07 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11279
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
Вячеслав-1 писал(а):
У меня вроде обходится без дребезга,но конденсаторы лучше припаять!У этих энкодеров есть "факт"старения,вот тут они и пригодятся!

Не-не, конденсаторы не помешают. Вчера я написал что то типа измерителя скорости вращения энкодера, с целью понять зависимости и пределы для каждого из режимов. Так вот без конденсаторов там была полная галиматья! Правда в том режиме не предпринималось вообще никаких средств против дребезга. Конденсаторы сразу изменили картину в более лучшую сторону. А когда припаял резисторы, то вообще этот измеритель заработал четко и осязаемо.

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 16:54 
Не в сети
Новичок

Зарегистрирован: 13 ноя 2013, 02:28
Сообщения: 9
Имя: Владимир
oka275 писал(а):
Открыл википедию по данному термину (перевелось почему то как "Конечный автомат")

Да, действительно в русском языке это так и называется - конечный автомат, что, с моей точки зрения, немного не точно отражает суть. Правильней было бы перевести "машина состояний".

oka275 писал(а):
и закрыл - хватило школьного курса издевательств.

А вот это Вы зря сделали! Знание методолгии программирования машин состояний очень помогает в решении не тривиальных программых задач. Значительно упрощает создание создание сложных систем. Ведь что такое, скажем, меню - это и есть машина состояний в чистом виде! И, скорее всего, вы используете данный приём программирования, просто не задумывались, как это называется на "научном" языке.
oka275 писал(а):
Кроме того хочу сказать, что зачастую можно оспорить сам факт отсутствия или присутствия дребезга, если только не использовать объективные средства контроля. Например, специально написанной для этого программы.

Дребезг контактов оспаривать бессмысленно, так как он присущ любым механическим контактам! Кроме того, он легко обнаруживается с помощью осциллографа. Подключите к энкодеру и покрутите его - сразу увидите. А если осциллограф будет ещё и цифровым, то сможете рассмотреть его во всей красе. :)
То, что конденсаторы копеечные никто не спорит, правда только в единичном устройстве. :) Но существует принцип "необходимо и достаточно", который не следует нарушать. В данном случае (фактически обработка нажатия кнопки) конденсаторы действительно лишние. Лучше установите их по питанию, там они лишними не будут. Кроме того, со временем энкодер будет стареть и дребезг будет усиливаться, так что, если не предпринять программые меры по обработке дребезга (состояние контактов должно считываться несколько раз через небольшие интервалы времени), то придёт момент когда ёмкости установленных конденсаторов будет уже не хватать и появятся ложные срабатывания. Придётся заменять конденсаторы. :) А вот, если правильно обработать дребезг программно, то конденсаторы будут не нужны вообще и энкодер "проживёт" значительно дольше.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 17:24 
Не в сети
Уже был(а) и не раз

Зарегистрирован: 17 фев 2014, 21:10
Сообщения: 44
Откуда: Николаев
Авто: Renault Kangoo
Имя: Виталий
kvm писал(а):
oka275 писал(а):
.... Кроме того, со временем энкодер будет стареть и дребезг будет усиливаться, так что, если не предпринять программые меры по обработке дребезга (состояние контактов должно считываться несколько раз через небольшие интервалы времени), то придёт момент когда ёмкости установленных конденсаторов будет уже не хватать и появятся ложные срабатывания. Придётся заменять конденсаторы. :) А вот, если правильно обработать дребезг программно, то конденсаторы будут не нужны вообще и энкодер "проживёт" значительно дольше.


Поддерживаю. Истину глаголет KVM.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 17:31 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11279
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
halny писал(а):
Поддерживаю. Истину глаголет KVM.

Истина абстрактра и субьективна :) Если ёмкости конденсаторов перестанет хватать? А если программной компенсации перестанет хватать, то будет тоже самое. Так поставьте ёмкость побольше, с запасом, и забудьте о проблеме. Конечно не 100 микрофарад, иначе фронты срежет. Но 0.1мкф при 10кОм подтяжки - самое то. И вообще - хорош уже, развели из мухи слона. Надо же, функцию энкодера на коленке написали, вместо высшей математики! :o

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 18:07 
Не в сети
Новичок

Зарегистрирован: 13 ноя 2013, 02:28
Сообщения: 9
Имя: Владимир
oka275 писал(а):
Истина абстрактра и субьективна :)

Поверьте, в данном случае, истина вовсе не абстактна и не субьективна! Проверено и не однажды. Дребезг он и в африке дребезг! Можно, конечно и триггерами его обрабатывать, почему нет? Только смысл в этом? Программно он обрабатывается замечательно. И программной обработки не может не хватить. :) Скорее энкодер сломается вообще.
oka275 писал(а):
Надо же, функцию энкодера на коленке написали, вместо высшей математики!

Не думал я, что Вы так отреагируете на совершенно безобидное предложение. :( Если обидел Вас, то извините. Ничего плохого сказать не хотел! Просто обратил внимание на проблему и даже предложил решение. :) Вы же сами говорили, что имеете желание сделать проект лучше, чем предшественники. Если это действительно так, то из кирпичиков складывается целое здание, и от качества кирпичиков зависит жизнь всего здания. Энкодер, естественно, не главная часть, не фундамент здания, но и принебрегать им не стоит. Тем более, когда проблема уже существует.:) Ещё раз повторю - не хотел ни кого обидеть. :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 18:55 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11279
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
kvm писал(а):
Просто обратил внимание на проблему и даже предложил решение

К сожалению, данное предложение не приемлемо для меня на данном этапе. У меня сейчас нет ни времени, ни желания изучать космическую математику для того, что бы построить функцию обработки энкодера строго по научным канонам, дабы удовлетворить Вас. Да и не решение это, а так.. направление, без объяснения хотя бы общей идеи и примерных принципов построения. А то, что я увидел в википедии, это для меня просто набор бездушных формул, как для кота китайские буквы. Я не знаю, может я как тот Остап Бендер, который как оказалось играл 18 испанских партий... ну в общем так или иначе применил данную научную методику - не знаю. Я делаю как умею, и как могу, и при этом неизменно контролируя получившийся результат. Это для меня типа обратной связи. Если он меня не устраивает, то разбираюсь, переделываю.

Конечно это похоже на то, что "разжуйте и положите мне в ротик", но этим я занимаюсь почти ежедневно здесь и в личных сообщениях, объясняя то как работает ограничение тока или как работает функция установки напряжения, с приведением примеров. Если у Вас есть желание и время, пожалуйста, примите эту эстафету - это Вам вернется кармой, если хотите. :) А ведь я мог отвечать сухо, мол, вот даташит - читай, изучай, и через полгода, если проблема в у тебя сама не отсохнет и еще будут вопросы, то задавай - отвечу. Это - не мой стиль. Я не помню уже всех этих людей, но они помнят меня!

kvm писал(а):
Программно он обрабатывается замечательно.

Да как же, черт возьми? В МК садится двадцатиногий таракан о десяти головах? Примеры или хотя бы общий принцип? В моем случае процедура работает так: если прошлое состояние портов изменилось на состояние, соответствующее повороту энкодера вправо, срабатывает ряд инструкций, соответствующих движению вправо. Тоже самое влево. Если поступила сильно частая последовательность импульсов, не характерная даже для очень быстрого вращения энкодера, то она просто игнорируется. Если частота импульсов характерна для медленного вращения, то считаются подряд 3 импульса и в переменную scancode выставляется код 11, что значит скорость 1, направление 1. Данный режим облегчает выставление точных данных. Если частота импульсов характерна для средней скорости вращения, то учитывается каждый следующий импульс, а не через 3. При этом отсчитывается таймаут в ~0.7 секунды и только после этого в переменную scancode выставляется код 21. Если же вдруг пользователь закрутил энкодер остервенело (без паузы, иначе повторно активируется таймаут), то выставляется код 31. В обратную сторону все точно так же, только коды заканчиваются на 0. Если раньше энкодер "выстреливал" какие то непонятные очереди, то сейчас, в силу примененых алгоритмов, ничего такого не наблюдается. Попробую еще конденсаторы отпаять как нибудь.

oka275 писал(а):
Вы же сами говорили, что имеете желание сделать проект лучше, чем предшественники.

Да. Но в данном случае мне кажется, что попытка ловить меня на словах совершенно ни к месту, ни ко времени, и ни к конкретной ситуации.

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 20:20 
Не в сети
Новичок

Зарегистрирован: 13 ноя 2013, 02:28
Сообщения: 9
Имя: Владимир
oka275 писал(а):
К сожалению, данное предложение не приемлемо для меня на данном этапе. У меня сейчас нет ни времени, ни желания изучать космическую математику

Я прекрасно Вас понимаю, времени всегда не хватает! :) Я вот только не пойму почему state machine Вы упорно называете космической математикой?! Ничего космического и высше-математического там нет и не может быть. Нет желания и времени изучать, так и скажите, все Вас поймут. Но всё-таки найдите как-нибудь время и почитайте об этой технологии, уверяю Вам понравится и многие, казалось бы сложные вещи вещи станут на порядок проще.
То, что Вы рассказываете как и что делаете это очень хорошо, помогает найти правильное решение. Только не понятно, почему Вас так задело мое предложение? Я же Вам ни чего не навязывал, не критиковал, не грубил, просто предложил. Или Вам нужны только положительные отзывы? :D
Обсудить, что да как, я всегда готов. Вам нужен пример? Пожалуйста:

Описание алгоритма (да, на буржуйском, но текст не сложный, авто-переводчик справится):
http://www.buxtronix.net/2011/10/rotary-encoders-done-properly.html?m=1
Ниже код, переделанный мной на С:

Код:
/*-------------------------- VARIABLES DECLARATIONS FOR ROTERY ENCODER ---------------------------*/
typedef static enum{                                                       /* Encoder return code */
    RotEnc_DIR_NONE    = 0x00,                                           /* No complete click yet */
    RotEnc_DIR_CW      = 0x10,                                                 /* Clockwise click */
    RotEnc_DIR_CCW     = 0x20,                                         /* Counter Clockwise click */
    RotEnc_ButtonClick = 0x30
}RotEncoder_ReturnCode;

#define R_START     0x00
#define R_CW_FINAL  0x01
#define R_CW_BEGIN  0x02
#define R_CW_NEXT   0x03
#define R_CCW_BEGIN 0x04
#define R_CCW_FINAL 0x05
#define R_CCW_NEXT  0x06

/*
 * The below state table has, for each state (row), the new state to set based on the next encoder
 * output. From left to right in, the table, the encoder outputs are 00, 01, 10, 11, and the value
 * in that position is the new state to set.
 */
static const uint8_t RotEncStateTable[7][4] = {
//far rom uint8_t RotEncStateTable[7][4] = {
    {R_START,    R_CW_BEGIN,  R_CCW_BEGIN, R_START},                                   /* R_START */
    {R_CW_NEXT,  R_START,     R_CW_FINAL,  R_START | RotEnc_DIR_CW},                /* R_CW_FINAL */
    {R_CW_NEXT,  R_CW_BEGIN,  R_START,     R_START},                                /* R_CW_BEGIN */
    {R_CW_NEXT,  R_CW_BEGIN,  R_CW_FINAL,  R_START},                                 /* R_CW_NEXT */
    {R_CCW_NEXT, R_START,     R_CCW_BEGIN, R_START},                               /* R_CCW_BEGIN */
    {R_CCW_NEXT, R_CCW_FINAL, R_START,     R_START | RotEnc_DIR_CCW},              /* R_CCW_FINAL */
    {R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START}                                 /* R_CCW_NEXT */
};

/*-------------------------- ROTERY ENCODER ---------------------------*/
        RotEncPinState = (Enc1_B << 1) | (Enc1_A);
        RotEncState = RotEncStateTable[RotEncState & 0x0F][RotEncPinState];

        switch (RotEncState){
            case RotEnc_DIR_CW: {
                QActive_postISR(&AO_MainStateMachine, RotEnc_DIR_CW_SIG, 0);
                break;
            }
            case RotEnc_DIR_CCW: {
                QActive_postISR(&AO_MainStateMachine, RotEnc_DIR_CCW_SIG, 0);
                break;
            }
            default: {
                break;
            }
        }




Вся обработка занимает буквально 11 строчек. Здесь правда нет обработки ускоренного вращения, но она здесь и не нужна. Весь приведённый код обрабатывается в прерывании. Ускоренное вращение должно обрабатываться в основном коде. Мне оно пока было не нужно, если понадобится, то сделать его не составит особого труда.
Почитать на русском теорию можно, например, здесь:
http://www.softcraft.ru/auto.shtml


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 21:15 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11279
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
kvm писал(а):
называете космической математикой?!

Убедитесь сами http://ru.wikipedia.org/wiki/%D0%9A%D0% ... 0%B0%D1%82 Разве не высшая? Я таких закорючек и не знаю. Всегда завидовал и от части жалел тех, кто соображает в этом всем. Алгебру не понимаю с детства. И в бОльшей части потому, что там сухие безликие цифры. И еще за то, что постоянно приходилось искать какие то корни и прочие запчасти формул, которые постоянно куда то девались. Если бы материал подавался с жизненными примерами, то со знаниями математики на планете стало бы гораздо лучше. Например, все запомнили формулу подсчета обоев, которые необходимо купить на оклейку комнаты? Но мало кто запомнил квадратный пятичлен, потому что мало себе кто представлял как он выглядит и для чего пригодится.

kvm писал(а):
почему Вас так задело

потому, что (см. ниже):

kvm писал(а):
Энкодер, естественно, не главная часть, не фундамент здания, но и принебрегать им не стоит. Тем более, когда проблема уже существует

Вы даже не собирали мое устройство, не пробовали, не щупали, не читали код программы, а уже делаете поспешные выводы, что устройство ИМЕЕТ ПРОБЛЕМУ. Вот это меня и зацепило. Единственное чем можно сейчас оперировать, это фактом наличия в схеме конденсаторов и моим словесным описанием кода программы. Но про конденсаторы я уже писал, а при пересказе программы я мог и ошибиться. Критику конечно мало кто любит, но и поголовные дифирамбы я тут не жду. Потому если критикуете - пожалуйста, но только в отношении реальных проблем, а не существующих только у Вас в голове. Как то так, что ли.. А то убедили себя в ее существовании, не убедившись, и меня убеждаете в том же. Вы спросили причину - я ответил. Об остальном вроде тоже поговорили. Давайте уже и закончим этот разговор?

За ссылки - большое спасибо. Та, то на английском языке, как ни странно более понятна, чем та, что на русском. В последней много воды, абстракции и мало конкретного по моему вопросу. А что общего между меню и энкодером я вообще не пойму. В прочем, будет время - еще почитаю. Спасибо!

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 21:40 
Не в сети
Заслуженный участник Клуба ЗУ-ОКА275

Зарегистрирован: 24 окт 2013, 11:44
Сообщения: 928
Откуда: Чувашия
Авто: КИА РИО 2018
Имя: Вячеслав
Вы что прицепились к энкодеру?Работает всё нормально!Даже без конденсаторов!Будут проблемы,будем решать по мере поступления.Алексей ,делайте своё дело на благо нам,не обращайте внимание .....!А то получится как с Геной Брагиным,автором YESа на известном форуме.Теперь только по эл почте общаемся.

_________________
С уважением,Вячеслав.73!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11831 ]  На страницу Пред.  1 ... 63, 64, 65, 66, 67, 68, 69 ... 592  След.

Часовой пояс: UTC + 7 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB