Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: ivan_fd  
Формирование импульса после сигнала.
xxxmonejall Дата: Вс, 21.06.2009, 18:01  |                                                                                                                Сообщение # 31
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 139
Репутация: 0   ±
Замечания:   ±
На сайте с 17.05.2008

Статус: Offline

Это 4000 реостат на макс: 2708598
Почему значения АЦП в смысле реостата почти не влияет на длительность импульса???

Добавлено (21.06.2009, 18.01.33)
---------------------------------------------
И еще что такое: INTCON = $90, INTCON.1.
Извините за тупые вопросы, я только учусь!!!!

Прикрепления: 2708598.jpg (46.3 Kb)

Сообщение отредактировал xxxmonejall - Вс, 21.06.2009, 17:59
ЯНДЕКС Дата: 21.06.2009
slavauk Дата: Вс, 21.06.2009, 22:08  |                                                                                                                Сообщение # 32
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 64
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

INTCON = $90 ,то же,но более наглядно
INTCON=%10010000
устанавливает 5-й и 8-й бит регистра INTCON в логическую "1"

INTCON.1 второй бит этого-же регистра ,по состоянию на котором
можно определить ,было или нет прерывание по входу INT

Все доступные регистры по конкретному контролеру смотрите
в документации на этот контролер

Кстати,в обработчике прерывания нет необходимости
проверять
IF INTCON.1 = 1 THEN,
так как только при
INTCON.1 = 1 прграма переходит
на обработку прерывания,необходимо только в конце обработки
сбросить этот бит в "0" (INTCON.1 = 0 ).Этим мы указываем,что
закончили обработку прошедшего прерывания и готовы к
обработке следующего.

С вашего разрешения немножко поправил вашу програму
DEFINE OSC 20
Define ADC_BITS 8
Define ADC_CLOCK 3
Define ADC_SAMPLEUS 50
OPTION_REG = $7f
On Interrupt Goto myint
INTCON = $90
InTime var byte
B1 var byte
TrisB = %00000001
TrisA = %11111111
ADCON1 = %00000010
B1=0
main:
ADCIN portA.0,B1
goto main

myint:
Disable
pulsout portb.5,2000+B1*100
INTCON.1 = 0
Resume
Enable

По поводу неменяющейся длительности импульса,
скорее всего это глюк протеуса
Попробуйте после каждой регулировки потенциометра перезапустить
эмуляцию
У меня длительность меняется от прилизительно 4мс до 55мс

Сообщение отредактировал slavauk - Пн, 22.06.2009, 00:03
xxxmonejall Дата: Сб, 27.06.2009, 16:07  |                                                                                                                Сообщение # 33
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 139
Репутация: 0   ±
Замечания:   ±
На сайте с 17.05.2008

Статус: Offline

Разобрался. Просто нужно было такой же кварц выбрать в протеусе такой как и в конфиге контролера!

Добавлено (27.06.2009, 16.07.35)
---------------------------------------------
Теперь другая проблема: Как на компе принять вот это дело и в каком виде оно придет???
include "MODEDEFS.BAS"
@ device pic16F877A, xt_osc, wdt_off, protect_off, pwrt_on
DEFINE OSC 4
Define ADC_BITS 8
Define ADC_CLOCK 3
Define ADC_SAMPLEUS 25
OPTION_REG = $7f
On Interrupt Goto myint
INTCON = $90
InTime var byte
B1 var byte
TrisB = %00000001
TrisA = %11111111
ADCON1 = %00000010

main:
portb.0 = 0
ADCIN portA.0, b1
InTime = B1*100
serout portb.4, N2400,[#b1,10]
serout portb.4, N2400,[#InTime,10]

goto main

myint:
Disable
IF INTCON.1 = 1 THEN
pulsout portb.5,200 + InTime

INTCON.1 = 0
ENDIF
Resume
Enable

А имено вот это:
serout portb.4, N2400,[#b1,10]
serout portb.4, N2400,[#InTime,10]
И в каком виде оно отправляется на комп????

xxxmonejall Дата: Сб, 27.06.2009, 16:12  |                                                                                                                Сообщение # 34
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 139
Репутация: 0   ±
Замечания:   ±
На сайте с 17.05.2008

Статус: Offline

А вот скрин с терминала???
Прикрепления: 3653916.jpg (44.2 Kb)
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск: