PS. Подпрограммы по обмену данных МК-датчик брал из другого проекта (под pic16f628). Внес только некоторые изменения.
- Вложения
-
- Project.rar
- (77.46 КБ) 243 скачивания
Код: Выделить всё
bcf datchik ;Единичный импульс
call Delay500 ;Задержка 500мкс.
bsf datchik ;Единичный импульс
movlw TRISIO_IN
Banksel TRISIO ;
iorwf TRISIO,F ;
bcf datchik ;Единичный импульсZhuk72 писал(а):Из того, что заметил сходу.
Для чего все эти маневры с регистрами прерываний, если сами прерывания не используются?
Далее:Если по истечении паузы датчик уведет шину в ноль, когда вы даете bsf datchik, до переключения на вход ПИК имеет шансы подпалить порт.Код: Выделить всё
bcf datchik ;Единичный импульс call Delay500 ;Задержка 500мкс. bsf datchik ;Единичный импульс movlw TRISIO_IN Banksel TRISIO ; iorwf TRISIO,F ;
Дальше не смотрел.
Спать, спать, спать...
P.S. И вообще загляните в раздел Периферия, тема про эти датчики запинена. Там много полезного.
Alex, например, на последних страницах объясняет куда что подавать.
это лишнее и опасноKuzia писал(а):Я так понял это для того чтобы шину побыстрее подтянуть к 1
Датчик вообще никому ничего не должен, он имеет право притянуть линию к нулю, если посчитает нужным. По этому, во избежании всяческих коллизий ни линии, лог. единицу осуществляют с помощью подтягивающего сопротивления, переводя вывод устройства в высокоимпедансное состояние. Просто возьмите это за правило.датчик не должен подтянуть шину к 0
Благодарю за теорию. Я это, вроде, понимаю. Однако не работает в симуляторе.Аlex писал(а):Гляньте ещё сюда - http://forum.chipmk.ru/index.php/topic/ ... t__p__1543 Может чего интересного найдёте.
Добавлено after 11 minutes 29 seconds:Датчик вообще никому ничего не должен, он имеет право притянуть линию к нулю, если посчитает нужным. По этому, во избежании всяческих коллизий ни линии, лог. единицу осуществляют с помощью подтягивающего сопротивления, переводя вывод устройства в высокоимпедансное состояние. Просто возьмите это за правило.датчик не должен подтянуть шину к 0
Интерфейс 1-Wire - не исключение. Существуют ещё интерфейсы, работающие по такому принципу.
Очень Вам признателен. Второй раз подряд мне помогаете. Точно добавил movf GPIO,f и получилось как надо. Не верно написал (на форуме) не INTCON а CMCON.Zhuk72 писал(а):INTCON вообще-то регистр прерывания, которое у вас не используется. Раз уж его 7-й бит в нуле, то остальные уже роли не играют.
Если после перевода на вход порт остается синим, значит датчик удерживает его в 0.
После настройки на вход movf GPIO,f делаете? Хотя это на состояние пина не влияет, а только на корректность его чтения контроллером.
Откуда эта уверенность?Kuzia писал(а):Приемо-передача работат...
Исходя из чего Вы решили, что это и есть решение?Kuzia писал(а):Однако, еще пришлось поставить резистор в разрыв между портом МК и датчиком с подтягивающим резистором...
Ни хрена Вы не понимаете. Никак не выявить. Ну или у всех компонентов поспрашивайте... Или в тепловизор поглядите. Поколение Пепси и Ардуино, мля...Думать нужно до, этого Вашего рукоблудия. После, тоже нужно думать, но это-же так скучно...Kuzia писал(а):Насколько я правильно понимаю это значит что в каком-то из компонентов имеется превышение по току? Как это проще всего выявить?
Я не пытаюсь вывести единицу с вывода МК! Низкий уровень сам там появляется при переводе порта на выход. Низкий уровень мне нужно сделать через пару команд.Зачем Вы пытаетесь вывести лог. единицу с вывода МК
Нет, ее как не странно, там нет (об этом я написал - "синий квадратик")если она уже существует с помощью подтягивающего сопротивления
Мне это и нужно, только через пару команд. А так приходится пересчитывать временные интервалы для корректной приемо-передачи.Вывод МК переводить на выход нужно только для реализации лог. нуля !