я писал, что подключал 1мом к GP1(6) и схема работала
Ну а второй конец резистора куда подключали???
При любой схеме включения между переходами транзистора сопротивление меньше мом
Между какими переходами??? Нарисуйте схему. С МОП транзистором такого не будет. Попробуйте мою схему без МК с P-канальным МОП транзистором, управляемым сигналами логики, и напишите какое напряжение на R2 без ИК сигнала и с ним.
Кстати какой источник ИК сигнала? Если это просто постоянно включенный светодиод, то работать не будет. Если это пульт ДУ, то на выходе ТСОП будут импульсы по нажатию любой кнопки, и это программе МК не понравится: ведь она судя по описанию ожидает 10 сек для подтверждения наличия сигнала (воды). Да и то неясно, какой сигнал на выходе ТСОП будет при повторной проверке (импульс или пауза) даже если кнопка будет нажата. С данной программой и ТСОП система будет устойчиво работать только если на светодиод подавать меандр частотой около 38 кгц.
Насчет программы, если Вы хотите, чтобы система срабатывала при падении напряжения на входе (вместо увеличения), то нужно сделать следующие изменения:
1. В схеме нижний конец R2 подсоединить на + питания, а верхний электрод Е1 на землю.
2. В программе всякий раз по включению компаратора устанавливать бит инверсии его выхода - бит CINV в регистре CMCON. Кроме того, по включении порогового напряжения скедует задавать друго порог его. Для этого нужно насколько я понял из программы поменять в ней 4 строчки:
а. В функции main() вместо "setup_comparator(A1_VR_OUT_ON_A2);" написать "setup_comparator(A1_VR_OUT_ON_A2|COMP_INVERT);" естесственно без кавычек
б. После строки в программе "//Просыпаемся" изменить "setup_comparator(A1_VR);" на "setup_comparator(A1_VR|COMP_INVERT);"
в. Везде в программе заменить скточку "setup_vref(VREF_LOW|5);" на "setup_vref(15);" (в 2 местах). Этим будет достигнута примерно такая-же чувствительность схемы для срабатывания по 0.
Я на С для PIC12 не пишу и не знаю каким С-компилятором пользовался автор, а сам он это в статье не указал. Соответственно, HEX файл для Вас не сделаю. Может кто из форумчан поможет.