Контроллер нагрузки

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Контроллер нагрузки

Сообщение Zhuk72 »

CaseBot писал(а):
Zhuk72 писал(а):Зачем так разбивать инициализацию? Достаточно только goto INIT, а то ненароком можете залезть и в прерывания на 4-й адрес.
У меня всё под контролем 8) даже еще одно место под инструкцию по адресу 0x03 осталось.

Читаемость и восприятие кода ухудшается.
Если бы памяти было под завязку и каждое словоместо на счету, тогда да, можно поизвращаться, но не в этом же случае :)

CaseBot писал(а):Когда наступает прерывание (кстати я его использовал для того, чтобы легче было изменять интервал, и заодно реализуется эдакий фильтр дребезга, да и всё равно намеренно нажать и отпустить кнопку за 65 мс не так-то просто)...

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

Ну как, никто не проверил код на своем Протеусе?
Вот чувствую, что уже надо, надо закупиться девелоперской платой, чтобы в реалии испытывать написанное :write:
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
CaseBot
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт июл 19, 2013 15:08:01
Откуда: Дальний Восток

Re: Контроллер нагрузки

Сообщение CaseBot »

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

Вход в прерывание никак не связан с нажатием какой-либо из кнопок, он сам по себе.. А в прерывании читается и сравнивается состояние входов, даже при дребезге может быть только одно состояние: либо 0, либо 1..
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Контроллер нагрузки

Сообщение otest »

никто не проверил код на своем Протеусе?

loop1
movf GPIO,f ; Фиксируем состояние порта
Proteus не видит что 1бит в порту выдаёт 1-цу. Он видит только вход. Закоментируй строку и заработает.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Контроллер нагрузки

Сообщение Zhuk72 »

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

Добавлено чуть позже:

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

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
lucifern
Открыл глаза
Сообщения: 51
Зарегистрирован: Пн апр 08, 2013 07:56:28

Re: Контроллер нагрузки

Сообщение lucifern »

МПЛАБ у меня стоит. И протеус тоже :) Год назад сам исправлял чисто логически код в одной программе,но там было все доступно и разжевано,поэтому справился. А тут получается программа с нуля. Я в этом не силен. Кстати, здесь идет управление "-". А можно сделать управление "+"?
Последний раз редактировалось lucifern Пн мар 24, 2014 07:26:56, всего редактировалось 4 раза.
lucifern
Открыл глаза
Сообщения: 51
Зарегистрирован: Пн апр 08, 2013 07:56:28

Re: Контроллер нагрузки

Сообщение lucifern »

Добавил в свой код сохранение и загрузку предыдущего состояния выходов, но опять-таки проверить работоспособность не на чем..
Значение OSCCAL не стал записывать (мало ли, может, уже выставлено корректное значение)..


Ваш код работает только для одной кнопки.остальные не реагируют

Может код должен выглядеть так(исправил чисто логически):
LIST P=12F629
__CONFIG 0X3F84
INCLUDE "P12F629.INC"
;----------
RESW EQU 0X20
RESS EQU 0X21
GP_PREV EQU 0X22
MEM_WR EQU 0X23
;----------
ORG 0
BSF STATUS, RP0 ;BANK 1
MOVLW B'00000111' ;PRESCALER VARIABLE
GOTO INIT
;----------
ORG 4 ;INTERRUPT
MOVWF RESW
MOVF STATUS, W
MOVWF RESS

BTFSC GP_PREV, 3 ;TEST BUTTON 3
BTFSC GPIO, 3
GOTO GPTEST4
BTFSS GP_PREV, 2 ;BUTTON 3 IS PRESSED
BSF GPIO, 2
BTFSC GP_PREV, 2
BCF GPIO, 2
BSF MEM_WR, 0 ;SAVE OUTPUTS STATE

GPTEST4 BTFSC GP_PREV, 4 ;TEST BUTTON 2
BTFSC GPIO, 4
GOTO GPTEST5
BTFSS GP_PREV, 1 ;BUTTON 2 IS PRESSED
BSF GPIO, 1
BTFSC GP_PREV, 1
BCF GPIO, 1
BSF MEM_WR, 0 ;SAVE OUTPUTS STATE

GPTEST5 BTFSC GP_PREV, 5 ;TEST BUTTON 1
BTFSC GPIO, 5
GOTO ENDPROC
BTFSS GP_PREV, 0 ;BUTTON 1 IS PRESSED
BSF GPIO, 0
BTFSC GP_PREV, 0
BCF GPIO, 0
BSF MEM_WR, 0 ;SAVE OUTPUTS STATE

ENDPROC MOVF GPIO, W
MOVWF GP_PREV ;SAVE GPIO
BCF INTCON, T0IF ;CLEAR INTERRUPT FLAG
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15545
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Контроллер нагрузки

Сообщение BOB51 »

lucifern писал(а):МПЛАБ у меня стоит. И протеус тоже :) Год назад сам исправлял чисто логически код в одной программе,но там было все доступно и разжевано,поэтому справился. А тут получается программа с нуля. Я в этом не силен. Кстати, здесь идет управление "-". А можно сделать управление "+"?

Могу и подкорректировать, только шПрота не перевариваю... :kill:
Первое - при управлении активной 1 потребуется обязательная процедура защиты от случайного включения при подаче питания на схему.
Второе - требуется всеж хороший антидребезг по кнопам (на первое время можно "забыть").
Третье - чего все дружно вцепились в последовательный побитовый опрос входных линий??? :shock: - для данной задачи есть и другие варианты решений, гораздо вкуснее... :roll: :hunger:
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Контроллер нагрузки

Сообщение Zhuk72 »

1. Когда в окончательном варианте добавится сохранение состояний выходов в ЕЕПРОМ, то на выход сперва пойдет это значение, а к тому времени как всё устаканится, входы стабилизируются. Кроме того можно и задержку добавить в начале, после подачи питания. Даже ее правильно будет поставить для любого случая.
3. Изобразите? Интересно посмотреть. Уж не маской ли случайно?
Последний раз редактировалось AlekseyEnergo Пн апр 07, 2014 01:04:21, всего редактировалось 1 раз.
Причина: Нарушение пункта 2.7 правил форума. Подредактировал.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15545
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Контроллер нагрузки

Сообщение BOB51 »

В том числе и маской (как промежуточное значение). :)
В общих чертах стандартный алгоритм:
Метод векторной таблицы по захвату состояния линий клавиатуры и сравнения с предыдущим эталоном.
По результату (при подтверждении либо нажатия либо отпускания) инверсия соответствующих выходных линий.
Затем ожидание стабильного спокойствия и возврат в исходное состояние.
8)
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Контроллер нагрузки

Сообщение Zhuk72 »

Не знаю, я не вижу в этом особой "вкусности". Для опроса 3-х битов в МК, который ничем не занят, по-моему лучше сделать последовательный опрос. Там всего-то 8 тактов (если не нажато), включая возврат по циклу.
Речь идет именно о данной конструкции. Но вполне может быть задача, при которой данный метод будет нерационален.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15545
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Контроллер нагрузки

Сообщение BOB51 »

Допустим, выход из "ленивого" режима после прерывания по изменению состояния выводов далее соовсем малость - считать данные с входного прота и при их подтверждении через задержку антидребезга отработать соответствующие изменения. А ежли без антидребезга всего-то чтение-сдвиг-переход к выполнению. 8)
А мож и сдвига не понадобится...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15545
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Контроллер нагрузки

Сообщение BOB51 »

В моем видении и pic12f508 сгодится.
Примерно вот в таком виде:
key3.pdf
(152.49 КБ) 286 скачиваний

это теоретический набросок (макеткой не проверялся), для схемки с полевичками и батарейки хватит, а силовая с автоподхватом весьма "жирнюче" будет.
Ну и относительно кноп - допустима любая из возможных комбинаций, каждое последующее нажатие инвертирует соответствующий выход. Исходно все отключено, туда же попадем, если удержать любое нажатие более 110 секунд.
key3.rar
(17.77 КБ) 1152 скачивания

Мож кому сгодится. 8)
Ответить

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