Помогите решить проблему с энкодером

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
kia74
Родился
Сообщения: 5
Зарегистрирован: Пт июл 19, 2013 10:46:38

Помогите решить проблему с энкодером

Сообщение kia74 »

Здраствуйте Уважаемые форумчане!

Возникла проблема с работой энкодера на Pic16f628a.
Счетчик на 99 мин. 59 сек.
Программу написал. В Протеусе проверил. На макете работает.

Суть такова: Меняется скорость работы энкодера. При начальной настройке счетчика вращать энкодер нужно довольно медленно. После запуска и остановки таймера, когда значения еще остались, вращать можно с любой скоростью.

С железом проблем нет, пробовал других деталях - все точно так же.

Может где какой ляп или косяк в программе. Два дня ломал голову - не вижу причины.

Заранее благодарен!
Вложения
test2.PDF
(26.47 КБ) 226 скачиваний
test_2.c
(9.11 КБ) 391 скачивание
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Помогите решить проблему с энкодером

Сообщение urry »

Процедура обработки декодера хорошо сделана Ридико Л И и, по-моему , она де факто является стандартом (очень многие пользуются), так что выдумывать велосипед...
На этом сайте есть.
Замечания к коду.
1 Никогда не ставьте задержку в прерываниях. Ну вообще никогда.
2 При обработке прерывания от портов 4-7 мало сбросить флаг, нужно прочитать или записать порт, чтобы зафиксировать изменение - там же, в прерывании
3 Для выставления 99 минут необходимо 99*60 = 5940 щелчков энкодера, берем 20 щелчков энкодера на оборот, итого провернуть энкодер 297 раз.
Немного напряжно для пользователя, не находите ? На энкодере есть кнопка, вот при нажатии на нее сделайте приращение- уменьшение не на 1, а на 50,например.
Реклама
kia74
Родился
Сообщения: 5
Зарегистрирован: Пт июл 19, 2013 10:46:38

Re: Помогите решить проблему с энкодером

Сообщение kia74 »

Спасибо большое за ответ!
Задержку в прерывании поставил временно. Без нее очень плохо и не удобно работает, пока. Исправлю ошибку уберу конечно.

Энкодер у меня с фиксацией положений 12 щелчков за оборот, с кнопкой, на 24 пока не нашел.
Больше 15 минут таймер ставить может ни когда не буду. А код на 99 мин написан с запасом на будущие разработки.

Минуты и секунды выставляются отдельно, выбор производится кнопкой самого энкодера. Так что даже довольно удобно.

Процедуру Ридико посмотрю обязательно.
Я сейчас уехал от железа, остался только компьютер. В воскресенье вечером буду пробовать.

Поясните, пожалуйста, как же прочитать порт или записать, чтобы зафиксировать изменение, желательно с примером.

Заранее благодарен.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Помогите решить проблему с энкодером

Сообщение urry »

http://www.microchip.com/stellent/idcpl ... e=en011050
перед сбросом флага читается порт.
Далее, для отбивки секунды используйте неостанавливаемый таймер (те в прерывании по переполнению не трогайте регистры таймера) с методом Брезенхема - будет поточнее
пример здесь
http://www.microchip.ru/phorum/read.php ... eply_39000
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Помогите решить проблему с энкодером

Сообщение urry »

Немного помучил ваш код. Куда-то исчез постоянный клиент и просто есть время.
Вложения
kot_enc.zip
(110.34 КБ) 209 скачиваний
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25277
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Помогите решить проблему с энкодером

Сообщение КРАМ »

urry писал(а):На энкодере есть кнопка, вот при нажатии на нее сделайте приращение- уменьшение не на 1, а на 50,например.
Не юзабельно... :(
Юзабельно сделать дискрет функцией угловой скорости. Быстро крутишь - меняется на минуты, медленно на десятки секунд. Совсем медленно - единицы секунд...
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Помогите решить проблему с энкодером

Сообщение urry »

возможно, нужно попробовать.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25277
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Помогите решить проблему с энкодером

Сообщение КРАМ »

Юрий, это не я придумал.
:)
Это фича от Matsushita Electric.
У меня СВЧ печка Panasonic именно так и регулирует время.
Исключительно удобно...

Изображение
kia74
Родился
Сообщения: 5
Зарегистрирован: Пт июл 19, 2013 10:46:38

Re: Помогите решить проблему с энкодером

Сообщение kia74 »

Огромное спасибо!
Вы мне очень помогли. Я многому у Вас научился!
Разобрал код по косточкам. Кое что переделаю по себя, для удобства, и выложу все полностью.
Ответить

Вернуться в «PIC»