Для инициализации компараторов в даташите, в рекомендованном примере применяется команда MOVF CMCON, F ; чтение CMCON для устранения несоответствия Устранение несоответствия чего? Зачем нужна эта команда?
Пост 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 просто бессмысленно. У меня такое ощущение, что данную группу команд просто вырвали из контекста какой-то программы.
Пост 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 - остается только гадать. Словосочетание “условие несоответствия” тоже из этой “оперы”. Значит, в случае задействования прерывания от модуля компараторов, эту рекомендацию разработчиков нужно принять как данность.
Пост N: 150
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг:
0
Отправлено: 10.06.07 14:07. Заголовок: Re:
Evgeny Korabelnikov пишет:
цитата:
Значит, в случае задействования прерывания от модуля компараторов, эту рекомендацию разработчиков нужно принять как данность.
Задействовал прерывание по изменению уровня на входах компараторов. Вроде без movf CMCON,F все работает нормально. Единствено, (перед разрешением прерывания в INTCON,7) произвожу запись в CMCON,6 (или CMCON,7), тем самым устраняя это самое несоответствие. А регистр наверняка есть, както же запоминается предыдущее состояние входов.
Все даты в формате GMT
3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет