Jump to content

Шампунь

Members
  • Content Count

    7
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Шампунь

  • Rank
    Новенький

Информация

  • Город
    Санкт-Петербург

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    микроконтроллеры, усилители НЧ
  1. WDTE включен, соответсвенно SWDTEN ни на что не вляет. Думаю проблема все-таки в симуляторе, надо протестить на железе.
  2. Добрый день, имеется вопрос по работе предделителя для WDT, мк Pic12f683. Насколько я понял по блок-схеме в даташите, WDT работает от 31 khz и имеет свой предделитель, а после своего идет еще один предделитель, общий с таймером. Проблема в том, что предделитель WDT не работает вообще. То есть при изменении битов PS2-PS0 время переполнения WDT изменяется, однако при изменении битов в WDTCON время не меняется никак. Симулировал в proteus.
  3. Схему беспроводного термометра. Там датчик температуры lm335, МК PIC16F683 и радиопередатчик XY-MK-5V. У датчика диапазон напряжения достаточно большой, у МК по даташиту 2-5.5V, по радиомодулю не нашел даташита, однако 5V в названии говорит само за себя. В общем то датчик и мк можно спокойно запитать от 4.5V, но придется перерасчитывать значения для АЦП. Ну и я не уверен как 4.5V повлияют на работу радиомодуля.
  4. Уважаемые знатоки, подскажите как организовать питание схемы на 5v от аккумуляторов или батареек. Отдельных аккумуляторов на 5v я не нашел( по крайней мере в зоне ближайшей доступности). Думаю взять 4x1.5V батарейки и понизить стабилизатором L4940V5 до 5V. Интересно, как решают такую проблему более опытные пользователи.
  5. Огромное спасибо, clrf ANSEL решило все проблемы. Даже не задумывался над этим, почему то думал что все пины по умолчанию цифровые, нужно внимательнее читать документацию.
  6. Программу не стал приводить так как она довольно большая и особо значения не имеет. Полная программа есть в файле, который я приложил к верхнему посту. В конце подпрограммы обработки прерывания я сбрасываю этот флаг. Но в данном случае это вообще не имеет значения, так как самого прерывания не происходит, вообще. Программу симулировал в протеусе. При переполнении таймера есть прерывание, при изменении GP0 прерывания нет.
  7. Добрый день. Пытаюсь сделать прерывания по изменению GP0. Ставлю GP0 на вход, разрешаю прерывания по изменению GPIO, разрешаю глобальные прерывания, ставлю бит IOC0 в 1. Но при изменении GP0 прерывание не срабатывает. Прерывание по переполнению таймера срабатывает отлично. Что я делаю не так? Прикладываю код программы. Если этого недостаточно, чтобы понять проблему, приложил полный код программы файлом. list p=12f683 #include "p12f683.inc" __config 0x3FF4 W_TEMP EQU 0x40 STATUS_TEMP EQU 0x41 flag EQU 0x42 org 0 goto start ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; org 0x04 MOVWF W_TEMP SWAPF STATUS,W MOVWF STATUS_TEMP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;программа обработки прерываний ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SWAPF STATUS_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W retfie ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; start clrf GPIO movlw 0x07 movwf CMCON0 bsf STATUS,RP0 ;1 bank movlw b'00001001' movwf TRISIO movlw b'10000001' movwf OPTION_REG bcf INTCON,T0IF bsf INTCON,T0IE movf GPIO,w bcf INTCON,GPIF bsf INTCON,GPIE bsf INTCON,GIE movlw b'00000001' movwf IOC bcf STATUS,RP0 ;0 bank movlw .0 movwf TMR0 ask btfss flag,4 ;данный бит устанавливается в программе обработки прерываний goto ask bcf flag,4 call indicate ;подпрограмма indicate выводит значение, полученное в результате ;обработки прерывания, на индикаторы goto ask reciever1.asm
×
×
  • Create New...