АвторСообщение
постоянный участник


Пост N: 1
Зарегистрирован: 08.06.07
Откуда: Россия, Майкоп
Рейтинг: 0
ссылка на сообщение  Отправлено: 09.06.07 20:19. Заголовок: Компараторы


Для инициализации компараторов в даташите, в рекомендованном примере применяется команда
MOVF CMCON, F ; чтение CMCON для устранения несоответствия
Устранение несоответствия чего?
Зачем нужна эта команда?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]





Пост N: 22
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг: 0
ссылка на сообщение  Отправлено: 09.06.07 21:26. Заголовок: Re:


Натыкался я на это творение. Посмотрел на него, поудивлялся, языком поцокал, выкинул его из головы и со спокойной совестью пошел дальше.
Во-первых, зачем нужна задержка в 10 мкс.?
До нее не происходит ничего такого, что оправдывало бы необходимость ее применения.
Тайна сия велика есть, и она ведома только тому, кто эту задержку “родил”.
Во-вторых, пересылать содержимое регистра CMCON в самого себя (movf CMCON,F) конечно можно, но зачем?
Единственное что может оправдать применение этой команды, так это необходимость проверки содержимого CMCON на нулевой или на ненулевой результат (команда movf воздействует на флаг Z).
Но где обязательная в этом случае бит-ориентированная команда ветвления (btfsc Status,Z или btfss Status,Z)?
Нет ее. А раз это так, то применение команды movf CMCON,F просто бессмысленно.
У меня такое ощущение, что данную группу команд просто вырвали из контекста какой-то программы.


Безумству храбрых поем мы песню. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 238
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 1
ссылка на сообщение  Отправлено: 09.06.07 22:23. Заголовок: Re:


Ну раз речь зашла о компараторах...
Видел я несколько схем где на основе компаратора изготавливали 10-ти разрядный!! АЦП. Как это можно осуществить?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 23
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг: 0
ссылка на сообщение  Отправлено: 10.06.07 00:45. Заголовок: Re:


Нашел в электрических характеристиках: задержка при переключениях режимов работы 10 мкс
Вспомнил что команда MOVF xx, F применяется для устранения несоответствия при прерывании от изменения уровней на RB4-RB7.
В даташите, в разделе 9.5 ”Прерывания от компараторов” описано, что надо обязательно что-то записать в cmcon или просто прочитать его, не важно куда, но интересно, как это аппаратно делается?
Может быть паралельно с ним устроен еще один (теневой) регистр, в который копируется все из cmcon при чтении или записи и потом сравнивается побитно для установки флага прерывания?

Владимир, спасибо за “въедливость”. Это помогает выяснить истину.
С тем, что после настройки модуля компараторов нужна задержка величиной не менее 10 мкс вполне и безоговорочно можно согласиться. Плохо только то, что разработчики внятно не объяснили деталей (зачем она нужна и что при этом происходит). Об этом можно только догадываться.
Но давайте разберемся, в каком случае нужна эта задержка. Она нужна в том случае, когда, в программе, работа с модулем компараторов начинается сразу же после окончания его настройки.
А теперь посмотрите на стр. 56 даташита.
Задержка там не нужна по той простой причине, что ее обеспечивают команды, следующие после команды movwf CMCON.
Среди них нет команд, работающих с компаратором (например, команды опроса состояния бита №6 или 7 регистра CMCON).
И вообще, очень редко (почти никогда) бывает так, что работа с модулем компараторов начинается сразу же после его настройки (по истечении менее 10 мкс.).
По команде movf CMCON,F: это специфику я проглядел, так как ориентировался на работу без прерываний. Каюсь. Спасибо за “указивку”. Это и мне, и другим наука.
Что касается механизма ее работы, то понятно, что перезапись в “самого себя” происходит через какой-то дополнительный, буферный регистр.
Что это за регистр и как он воздействует на флаг CMIF - остается только гадать.
Словосочетание “условие несоответствия” тоже из этой “оперы”.
Значит, в случае задействования прерывания от модуля компараторов, эту рекомендацию разработчиков нужно принять как данность.


Безумству храбрых поем мы песню. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 150
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 10.06.07 14:07. Заголовок: Re:


Evgeny Korabelnikov пишет:

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



Задействовал прерывание по изменению уровня на входах компараторов.
Вроде без movf CMCON,F все работает нормально.
Единствено, (перед разрешением прерывания в INTCON,7) произвожу запись в CMCON,6 (или CMCON,7),
тем самым устраняя это самое несоответствие.
А регистр наверняка есть, както же запоминается предыдущее состояние входов.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 301
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 20.09.07 19:15. Заголовок: Re:


Evgeny Korabelnikov пишет:

 цитата:
Словосочетание “условие несоответствия”

Ну, это же - русский перевод.

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия