| Регулятор яркости на pic | 
|  | 
| 
 
 
 
 | tolyan249 | Дата: Сб, 20.10.2012, 13:31  |                                                                                                                Сообщение # 1 |  
 | ![tolyan249]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 217
 
 
 Замечания: ± На сайте с 11.10.2007
 
 
 Статус: 
 Offline
 
 | Здраствуйте всем. Вопрос такого характера, есть ли у кого наработки по регулированию яркости лампочки по сети 220в на pic16F877 и симисторах 26-каналов ? А то нужно схему Новому году состряпать для улицы на работу. Спасибо. Просто вывод логмческих 1 или 0 выводить можно но не будет плавной регулировки освещения. 
 Может просто есть наработки на любом pic, просто нудно понять принцип регулирования по сети 220в.
 
 если знаешь,помоги.
 
 Сообщение отредактировал 
 
 tolyan249 - Сб, 20.10.2012, 13:38
 
  |  
 |  |  |  | 
| 
 
 
 
 | shaman | Дата: Сб, 20.10.2012, 14:56  |                                                                                                                Сообщение # 2 |  
 |   
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 178
 
 
 Замечания: ± На сайте с 07.11.2011
 
 
 Статус: 
 Offline
 
 | День добрый ,можно попробовать к PIC16F877присоединить нашу микруху К1182ПМ1Р,единственное придется подобрать R2 ,для управления симисторм. Добавлено (20.10.2012, 14:56)---------------------------------------------
 http://www.compeljournal.ru/enews/2009/5/10
 |  
 |  |  |  | 
| 
 
 
 
 | tolyan249 | Дата: Сб, 20.10.2012, 14:56  |                                                                                                                Сообщение # 3 |  
 | ![tolyan249]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 217
 
 
 Замечания: ± На сайте с 11.10.2007
 
 
 Статус: 
 Offline
 
 | Да это понятно спасибо за совет,только яркостью управлять нужно с pic ,а на этой микросхеме ставить кнопку нужно. 
 если знаешь,помоги.
 |  
 |  |  |  | 
| 
 
 
 
 | shaman | Дата: Сб, 20.10.2012, 14:58  |                                                                                                                Сообщение # 4 |  
 |   
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 178
 
 
 Замечания: ± На сайте с 07.11.2011
 
 
 Статус: 
 Offline
 
 | Просто нужна разобраться с формой сигнала для управления симистором или тиристором,может тогда придется использовать оператор PWM ,если я не ошибаюсь. |  
 |  |  |  | 
| 
 
 
 
 | tolyan249 | Дата: Сб, 20.10.2012, 14:59  |                                                                                                                Сообщение # 5 |  
 | ![tolyan249]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 217
 
 
 Замечания: ± На сайте с 11.10.2007
 
 
 Статус: 
 Offline
 
 | Для изменения мощности, подведенной к нагрузке через симистор, может использоваться фазовое управление (рис. 2). Сущность метода заключается в пропуске части полупериода сетевого напряжения — аналогично широтно-импульсной модуляции. Ток в нагрузке пропорционален интегралу от полученного сигнала. Такой режим используется в регуляторах освещенности — диммерах. Яркость свечения лампы накаливания пропорциональна площади под обрезанной синусоидой. 
 Рис. 2. Фазовое управление
 
 Преимуществом этого метода является то, что частота пульсаций на нагрузке остается равной сетевой. Это важно для управления осветительными приборами, так как снижение частоты может сказаться на появлении мерцания, заметного глазом.
 
 Обратной стороной являются наводки, которые могут появиться в связи с резким переключением симистора. Эти наводки плохо сказываются на электромагнитной совместимости (EMI) полученного устройства и могут вызвать ненужные переключения симистора.
 
 если знаешь,помоги.
 |  
 |  |  |  | 
| 
 
 
 
 | shaman | Дата: Сб, 20.10.2012, 15:03  |                                                                                                                Сообщение # 6 |  
 |   
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 178
 
 
 Замечания: ± На сайте с 07.11.2011
 
 
 Статус: 
 Offline
 
 | Там можно и потенциометр приделать на К1182ПМ1Р. Добавлено (20.10.2012, 15:03)---------------------------------------------
 тогда пробовать оператор PWM,Шим сигнал
 |  
 |  |  |  | 
| 
 
 
 
 | tolyan249 | Дата: Сб, 20.10.2012, 15:04  |                                                                                                                Сообщение # 7 |  
 | ![tolyan249]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 217
 
 
 Замечания: ± На сайте с 11.10.2007
 
 
 Статус: 
 Offline
 
 | ВОТ схема и описания правда исходник на си как переделать на протон пока не знаю. 
 Во время ремонта лазерного принтера Hewlett-Packard Laser Jet 4 с испорченным блоком управления мощностью нагревателя было необходимо изготовить новую схему управления симистором от постоянного напряжения 0...+5В. Для этих целей я выбрал микроконтроллер PIC12F675, со встроенным 10-разрядным АЦП в 8-ми выводном DIP корпусе. Он не дорогой (до 10 грн в Киеве).
 
 Полученная схема симисторного регулятора c гальванической развязкой цепей регулирования от сетевого напряжения мощности показана ниже:
 
 Диоды VD3-VD6 - защитные (от повышенного напряжения на входе и напряжения обратной полярности).
 
 Цепь на транзисторной оптопаре DA2 предназначена для захвата "нуля" сетевого напряжения и гальванической развязки от нее. При наличии "полуволны" происходит шунтирование вывода 5 микроконтроллера на землю. Диод VD2 защищает оптопару от полуволны обратного напряжения. Резистор R1 - гасящий, мощностью 2Вт для питания светодиода оптопары.
 
 Если Вы хотите применить для регилирования мощности переменный резистор, то включить его можно как указано на схеме R7. Учитывая входное сопротивление АЦП микросхемы преобразователя (10кОм) сопротивление переменного резистора желательно применить в диапазоне от 1 до 10 кОм, при этом ограничительный резистор R5 следует исключить из схемы. Также можно исключить их схемы и защитные диоды.
 
 Вывод 4 микросхемы DD1 используется для включения и выключения микроконтроллера (регулятора). При напряжении +5В микроконтроллер включен. Если отдельный вывод включения не требуется, то правый вывод резистора R6 следует соединить с плюсом питания (+5В), при этом защитные диоды VD5, VD6 можно исключить.
 
 Блокировочные керамические конденсаторы по 0,1мк служат для подавления пульсаций питающего напряжения.
 
 Алгоритм управления симистором - фазоимпульстный, т.е. регирирование мощности на нагрузке выполняется изменением времени открытия симистора от начала полпериода сетевого напряжения. При мощности 100% импульс открывания симистора приходит сразу после появления сигнала от дачика перехода сетевого напряжения через "ноль", что приводит к пропусканию всей полуволны сетевого напряжения (10 мс). При мощности 10% происходит задержка включения симистора на 9 мс и в нагрузку уходит лишь оставшаяся 1 мс сетевого напряжения.
 
 Микроконтроллер PIC12F675 может работать как с внутренним так и внешним кварцевым резонатором. В моем варианте МК работал с внутренним генератором (4МГц). При изменении частоты необходимо подкорректировать константы (ShimShagMax та ShimShagDiv). ShimShagMax указывает количество прерываний таймера на один полупериод при частоте сети 50 Гц - 10мс. Прерывание таймера каждые 256 мкс(при частоте 4МГц), тогда константа будет иметь значение 10мс/256мкс=39. Принимаем 40, на всякий пожарный). ShimShagDiv=255/ShimShagMax=6.375
 
 Ниже представлена программа для PIC12F675, написанная на языке Си:
 
 #include <12F675.h>
 #device adc=8
 
 #FUSES NOWDT //No Watch Dog Timer
 //#FUSES INTRC_IO //Внутрішній генератор
 #FUSES XT //Зовнішній генератор
 #FUSES NOCPD //No EE protection
 #FUSES NOPROTECT //Code not protected from reading
 #FUSES MCLR //Master Clear pin enabled
 #FUSES PUT //Power Up Timer
 #FUSES BROWNOUT //Reset when brownout detected
 
 #byte ADCON0 = 0x1F
 #byte GPIO = 0x05
 
 #use fast_io(A) // Работа с портами без переключения
 // каждый раз регистров TRIS
 
 #use delay(clock=4000000)
 
 #define ShimShagMax 40
 // 255/ShimShagMax
 #define ShimShagDiv 6.375
 
 unsigned char Shim, ShimVal;
 
 #int_RTCC
 void RTCC_isr()
 {
 Shim++; //Увеличиваем зачения счетчика ШИМ
 
 if (Shim>ShimShagMax) Shim=0;//Период ШИМ порядка 20 мс (50Гц)
 
 if ((ShimShagMax-Shim)<ShimVal) //Провреняем, не пришло ли время
 OUTPUT_HIGH(PIN_A0);//если да, то лог "1"
 else
 OUTPUT_LOW(PIN_A0); //если нет, то "0"
 
 if ((input_a() & 0b00000100))
 Shim=0; //Синхронизируем с ~220В.
 }
 
 void Pause255(unsigned char Ret)
 { unsigned char Pause=0;
 while(Ret>0)
 {
 while (Pause<255) Pause++;
 Pause=0;
 Ret--;
 }
 }
 
 void main()
 {
 setup_adc_ports(sAN1|VSS_VDD);
 setup_adc(ADC_CLOCK_DIV_16);
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
 setup_timer_1(T1_DISABLED);
 setup_comparator(NC_NC);
 setup_vref(FALSE);
 enable_interrupts(INT_RTCC);
 enable_interrupts(GLOBAL);
 
 set_adc_channel( 1 );
 
 SET_TRIS_A(0b00000110);
 ShimVal=0;
 
 {unsigned char InpVolt;
 
 while(1)
 {
 Pause255(254);
 // ADCON0 |= 4; // Начинаем АЦПяпить
 Pause255(254);
 
 while (ADCON0 & 0b00000010); //Ожидаем завершение преобразования
 
 InpVolt=READ_ADC()/ShimShagDiv; //
 
 //Плавное изменение температуры
 if ((InpVolt>ShimVal)&&(ShimVal<ShimShagMax)) ShimVal++;
 if ((InpVolt<ShimVal)&&(ShimVal>0)) ShimVal--;
 
 }
 }
 }
 
 
 Для работы с обеими полупериодами, следует транзисторную оптопару DA2 подключать через диодный мостик, чтобы иметь на выходе импульсы при любой полярности полупериода.
 
 если знаешь,помоги.
 |  
 |  |  |  | 
| 
 
 
 
 | shaman | Дата: Сб, 20.10.2012, 15:24  |                                                                                                                Сообщение # 8 |  
 |   
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 178
 
 
 Замечания: ± На сайте с 07.11.2011
 
 
 Статус: 
 Offline
 
 | Так и переделывать на Протон ,брать учебник по СИ и переводить каждый оператор,что и как работает и за что отвечает. |  
 |  |  |  | 
| 
 
 
 
 | Andriy76 | Дата: Сб, 20.10.2012, 21:56  |                                                                                                                Сообщение # 9 |  
 | ![Andriy76]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 230
 
 
 Замечания: ± На сайте с 06.04.2010
 
 
 Статус: 
 Offline
 
 | Quote (tolyan249) if ((InpVolt>ShimVal)&&(ShimVal<ShimShagMax)) ShimVal++; if ((InpVolt<ShimVal)&&(ShimVal>0)) ShimVal--;Похоже что будет выглядеть так
 If InpVolt > ShimVal And ShimVal < ShimShagMax Then Inc ShimVal
 If InpVolt < ShimVal And ShimVal > 0 Then Dec ShimVal
 В своей зарядке так и изменяю значение ШИМ в зависимости от тока заряда
 
 Сообщение отредактировал 
 
 Andriy76 - Сб, 20.10.2012, 22:00
 
  |  
 |  |  |  | 
| 
 
 
 
 | anatol | Дата: Сб, 20.10.2012, 22:54  |                                                                                                                Сообщение # 10 |  
 |   
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Помогаю всем
 
  
 Сообщений: 
 
 
 471
 
 
 Замечания: ± На сайте с 10.02.2010
 
 
 Статус: 
 Offline
 
 | Quote (tolyan249) 26-каналовПростите сколько каналов? И сколько аппаратных ШИМ есть в контроллере? Про программные не говорю.
 |  
 |  |  |  | 
| 
 
 
 
 | dimitriy-bc | Дата: Вс, 21.10.2012, 21:48  |                                                                                                                Сообщение # 11 |  
 | ![dimitriy-bc]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 150
 
 
 Замечания: ± На сайте с 19.03.2012
 
 
 Статус: 
 Offline
 
 | Всем доброго времени суток. Мощность на нагрузке в сети переменного тока можно регулировать с помощью фазоимпульсной модуляции (см. ссылку tolyan249). При использовании этого принципа, особое внимание необходимо обратить на входной фильтр сетевого питания микроконтроллера и привязка к сети, фильтр напоминающий фильтр второго порядка. При подключении лампочек накаливания, сопротивление нагрузки мало (в холодном состоянии 40Вт приблизительно 100 Ом.). Соответственно при использовании этого варианта в сеть, за счет крутого фронта, мы сами вносим импульсную помеху, которая имеет широкий спектр гармонических колебаний, именно они могут бить по мозгам МК. А также могут происходить самопроизвольные срабатывания в других силовых ключах. Тиристоры (симисторы), имеют такой параметр как отношение (дельта U/дельта Т). Если скорость нарастания напряжения приложенного к выводам анод катод тиристора (симистора) превысят его значение, то ключ может открыться без управляющего импульса. Для устранения этой бяки, обычно параллельно выводам анод катод подключается RC цепочка.
 Для многоканального управления могу предложить Вам следующий алгоритм.
 Назначается переменная, допустим Х. При прохождении сети через ноль, она обнуляется. После чего происходит инкрементирование данной переменной. Следующий этап, сравнение с переменными Ваших 26и каналов. При совпадении, выдается управляющий импульс на ключ соответствующего канала. После сравнения с последней переменной, программа возвращается в начало и переменная Х инкрементируется еще раз. Этот цикл повторяется до тех пор, пока не произойдет очередной переход сети через ноль. При прохождении через ноль переменная Х опять обнуляется, и программа пошла на следующий виток.
 Также можно попробовать и другой метод. Для управления тиристорами (семестрами), использовать оптроны типа МОС 3041. У этих оптронов есть встроенная функция переход через ноль. Т.Е. управляющий сигнал на силовой ключ подается только в момент перехода сети через ноль. В результате дополнительных помех в сеть мы не выдаем. Регулировку мощности, выдаваемую в нагрузку, мы регулируем следующим образом. Один период силовой ключ включен, второй выключен. В нагрузке 50% мощности. Два периода силовой ключ включен, один выключен. В нагрузке 2/3 мощности и т.д. Недостаток или преимущество этого варианта в том, что может просматриваться мерцание лампочек. Вам решать, ведь гирлянды для Нового года.
 
 Сообщение отредактировал 
 
 dimitriy-bc - Вс, 21.10.2012, 21:52
 
  |  
 |  |  |  | 
| 
 
 
 
 | dimitriy-bc | Дата: Вс, 28.10.2012, 15:58  |                                                                                                                Сообщение # 12 |  
 | ![dimitriy-bc]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 150
 
 
 Замечания: ± На сайте с 19.03.2012
 
 
 Статус: 
 Offline
 
 | Всем доброго времени суток. tolyan249, если Вас еще интересует эта тема, можете взять за основу программу NEW YEAR.
 Привязка к сети происходит по прерыванию порта А4. Отсчет времени таймером TMR1.
 Вместо светодиодов, использовать оптроны МОС3051… (без привязки к переходу через ноль).
 Максимальное значение переменных для гирлянд, подберете экспериментально.
 В макетной плате, привязку к переходу через ноль, можно взять с диодного моста без конденсатора на выходе.
 |  
 |  |  |  | 
| 
 
 
 
 | tolyan249 | Дата: Ср, 31.10.2012, 16:02  |                                                                                                                Сообщение # 13 |  
 | ![tolyan249]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 217
 
 
 Замечания: ± На сайте с 11.10.2007
 
 
 Статус: 
 Offline
 
 | Огромное спасибо всем за советы и ответы, будем пробовать писать, 24 канала сделаю что бы использовать 3-порта полностью, контроллер PIC16F877A ,использовать МОС3051 , яркость каждого канала должна быть разной в зависимости от программы визуализации, примерно понял принцип, буду пробовать что то писать. что напишу выложу. Добавлено (31.10.2012, 16:02)---------------------------------------------
 Пробую пока в протеусе, менять мощность кнопками, проблема в том что не заходит в подпрограмму main где опрашиваються кнопки, что подскажите, если я кнопки опрашиваю в самом прерывании то кнопки работаю как можно сделать что бы кнопки опрашивались в main подпрограмме.
 
 Declare SHOW_SYSTEM_VARIABLES = OFF ' При симуляции в Proteus не показывать внутренние переменные
 Declare FSR_CONTEXT_SAVE = OFF ' Не заботиться о сохранении содержимого регистра FSR
 Declare Reminders = OFF ' Выключить напоминания компилятора
 Declare Warnings = OFF ' Выключить предупреждения компилятора
 Declare Optimiser_Level 4 ' Включить оптимизацию программы
 Declare Bootloader = OFF ' Выключить загрузчик
 
 ;-------------------------- Общие настройки------------------------------------
 
 Device = 16F877A ' Используемый микроконтроллер
 Xtal = 20 ' Частота осциллятора 20 МГц
 
 '-------------------------- Конфигурация программирования --------------------
 
 Config CP_OFF, DEBUG_OFF, WRT_OFF, CPD_OFF, LVP_OFF, BODEN_OFF, PWRTE_OFF, WDT_OFF, XT_OSC
 
 '-------------------------- Настройки портов ---------------------------------
 
 PortB_Pullups = OFF ' Выключить подтягивающие резисторы на PORTB
 Declare All_Digital = On ' Установить все порты цифровыми входами/выходами
 
 
 '--Определение назначения каналов портов--
 
 TRISA = %00000001 ' Сделать канал PORTA.0 входом для АЦП-мерить напряжение
 TRISE = %00000011 ' Сделать канал (вывод) AN5 (PORTE.50 выходом, RE1, RE2 входами
 ADCON1 = %10000010 ' Установить все выводы PORTA в режим АЦП
 TRISC = %00000000 ' PORTC выход
 TRISD = %00000000 ' Сделать каналы PORTD выходами
 TRISB = %00000001 ' Сделать каналы PORTВ.0 входом
 
 '-------------------------- OPTION_REG ----------------------------------------
 
 OPTION_REG.0=0 ' Бит установки предделителя TMR0
 OPTION_REG.1=0 ' Бит установки предделителя TMR0
 OPTION_REG.2=0 ' Бит установки предделителя TMR0
 OPTION_REG.3=1 ' Выбор включения предделителя ,предделитель выключен
 OPTION_REG.4=1 ' Выбор фронта приращения TMR0 при внешнем тактовом сигнале -выключен
 OPTION_REG.5=0 ' Выбор тактового сигнала для TMR0-приращение таймера от внутреннего генератора -включен
 OPTION_REG.6=0 ' Выбор активного фронта сигнала на входе внешнего прерывания INT, PORTB.0
 OPTION_REG.7=1 ' Включение подтягивающих резисторов на PORTB -выключен
 
 
 '-------------------------- INTCON --------------------------------------------
 
 INTCON.0=0 ' Флаг внешнего прерывания по PORTB.4-PORTB.7 -выключен
 INTCON.1=1 ' Флаг внешнего прерывания по PORTB.0(INT) -включен
 INTCON.2=1 ' Флаг переполнения TMR0 -включен
 INTCON.3=0 ' Бит разрешения прерывания по PORTB.4-PORTB.7 -выключен
 INTCON.4=1 ' Бит разрешения прерывания по PORTB.0(INT) -включен
 INTCON.5=0 ' Бит разрешения прерывания по переполнению TMR0 -выключен пока
 INTCON.6=1 ' Бит разрешения прерывания от периферийных устройств -включен
 INTCON.7=1 ' Бит глобального разрешения прерываний -включен
 
 '-------------------------- PIE1, PIR1 ----------------------------------------------
 
 PIE1.0=0 ' Бит разрешения прерывания по переполнению TMR1 -выключен пока
 PIR1.0=0 ' Флаг прерывания по переполнению TMR1 -выключен пока
 
 
 
 '-------------------------- T1CON ---------------------------------------------------
 
 T1CON.0=0 ' Бит включения модуля TMR1
 T1CON.1=0 ' Выбор источника тактового сигнала для TMR1
 T1CON.2=0 ' Синхронизация внешнего тактового сигнала
 T1CON.3=0 ' Включение тактового генератора TMR1
 T1CON.4=0 ' Выбор коэффициента деления предделителя TMR1
 T1CON.5=0 ' Выбор коэффициента деления предделителя TMR1
 
 
 '-------------------------- Настройка TMR1 для прерываний --------------------
 TMR1L = $DC ' Значение младшего регистра TMR1 для полусекундных интервалов
 TMR1H = $0B ' Значение старшего регистра TMR1 для полусекундных интервалов
 T1CON = %00110000 'Значение регистра T1CON для выбранного режима работы
 PIE1.0=1 ' Разрешение прерывания при переполнении TMR1
 T1CON.0=1 'Запустим TMR1 для формирования полусек. интервалов
 
 TMR0=0 'считать таймер будет до 256
 
 Dim s As Dword
 Dim s1 As Dword
 Dim timp As Dword
 Dim timp1 As Dword
 Dim result1 As Dword
 Dim result2 As Dword
 
 Dim tim2 As Word
 Dim tim3 As Word
 Dim tim4 As Word
 Dim tim5 As Word
 Dim tim6 As Word
 Dim tim7 As Word
 Dim tim8 As Word
 Dim value As Word
 Dim tim9 As Word
 Dim tim10 As Word
 Dim tim11 As Word
 Dim tim12 As Word
 Dim tim13 As Word
 
 Dim simp As Word
 Dim metr As Word
 Dim km As Word
 
 Dim ml As Word
 Dim colimp As Word
 Dim result_colimp As Word
 Dim f As Byte
 Dim f1 As Byte
 Dim q As Byte
 Dim flg As Byte
 
 Dim sec As Byte
 Dim minut As Byte
 Dim chas As Byte
 
 Dim fflg As Byte
 Dim colicimp As Byte
 Clear
 
 PORTA=0
 PORTB=0
 PORTC=0
 PORTD=0
 PORTE=0
 
 On_Interrupt GoTo te
 GoTo main
 
 main:
 If PORTE.0=0 Then Inc s1
 If s1>200 Then s1=200
 If PORTE.1=0 Then Dec s1
 If s1<1 Then s1=1
 DelayMS 250
 GoTo main
 
 te:
 Context Save
 
 If INTCON.1=1 Then 'произошло прерывание по PORTB.0
 If PORTE.0=0 Then Inc s1
 If s1>200 Then s1=200
 If PORTE.1=0 Then Dec s1
 If s1<1 Then s1=1
 
 
 
 If OPTION_REG.6=0 Then 'если это фронт то делать сдедующие
 s=0
 TMR0=0
 OPTION_REG.6=1'переключаем для прерывания по спаду что бы мерить имульс а не период весь
 Else
 OPTION_REG.6=0 'возращаем на место что бы прерывание было опять по фронту
 s=0
 TMR0=0
 EndIf
 INTCON.1=0
 EndIf
 
 
 If INTCON.2=1 Then 'пришло прерывание от таймера TMR0-что он переполнился
 Inc s 'переполнение происходит каждые 256мкс-микросекунд
 If s=1 Then PORTB.1=1
 If s=s1 Then PORTB.1=0
 INTCON.2=0 'считываем эти переполнения и увеличеваем переменную на 1
 EndIf 'что бы знать сколько переполнений было
 
 Context Restore
 
 
 
 
 End
 
 если знаешь,помоги.
 |  
 |  |  |  | 
| 
 
 
 
 | tolyan249 | Дата: Ср, 31.10.2012, 16:05  |                                                                                                                Сообщение # 14 |  
 | ![tolyan249]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Могу и подсказать
 
  
 Сообщений: 
 
 
 217
 
 
 Замечания: ± На сайте с 11.10.2007
 
 
 Статус: 
 Offline
 
 | Вот архив с програмой 
 если знаешь,помоги.
 |  
 |  |  |  | 
| 
 
 
 
 | Matrix252005 | Дата: Ср, 31.10.2012, 16:15  |                                                                                                                Сообщение # 15 |  
 |   
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Разобрался
 
  
 Сообщений: 
 
 
 636
 
 
 Замечания: ± На сайте с 12.10.2007
 
 
 Статус: 
 Offline
 
 | Приятного времени суток!!! 
 tolyan249, а почему у Вас переменная "s1 As Dword", если она больше 200 (If s1>200 Then s1=200) не "поднимается"??? Назначьте ее Byte, это что сразу кинулось в глаза... Сейчас скачаю весь архив (надеюсь там есть схема в протеусе???) и проверю.
 
 THE TRUTH IS OUT THERE.
 
 С уважением, Николай.
 |  
 |  |  |  |