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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ivan_fd  
Pic Basic pro для начинающих
roze222 Дата: Пн, 09.05.2011, 08:57  |                                                                                                                Сообщение # 616
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 01.12.2010

Статус: Offline

Quote (amid-)
main: portb.0=1 pause 1 portb.0=0 pause 1 goto init:

Метка начала подпрограммы и "ссылка" на выполнение бесконечного цикла
должны иметь одно "имя".
Внутрений генератор по умолчанию и так настроен на 4 мГц.
Функция "вход/выход" через TRIS, хотя для данной проги (TRISB = %00000000), достаточно прописать TRISB=%11111110 (управляем выходом 0), специально прописывать порт А , если по-ходу нет оперирования с его выходами, я так, думаю нет особой нужды, хотя это микроконтроллер с радостью впишет в память
Эд Дата: Чт, 12.05.2011, 12:25  |                                                                                                                Сообщение # 617
Группа: Проверенные
Ранг:  Новенький
Сообщений: 10
Репутация: 0   ±
Замечания:   ±
На сайте с 30.08.2009

Статус: Offline

Здравствуйте господа, накропал первый проектик для УЗ пугалки насекомых хотелось бы увидеть отзывы в части оптимизации программы и ответ на вопрос почему при формировании импульса с помощью задержек длительность высокого уровня меньше длительности низкого, хотя задержки установлены одинаковые. Файлы во вложении, там пришлось задержку низкого уровня делать меньше чтобы как то выровнить отношение высокого уровня к низкому.
Прикрепления: Gen_UZ.rar (32.0 Kb)
ADMIN Дата: Чт, 12.05.2011, 12:50  |                                                                                                                Сообщение # 618
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Ну наворочал! Слишком много букв в программе. Это же можно в цикле все сделать. Я делал уже типа такого давным-давно, позже подскажу. Сейчас некогда.
ADMIN Дата: Чт, 12.05.2011, 19:14  |                                                                                                                Сообщение # 619
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

А как работает программа? Или как должна работать?
Эд Дата: Пт, 13.05.2011, 12:18  |                                                                                                                Сообщение # 620
Группа: Проверенные
Ранг:  Новенький
Сообщений: 10
Репутация: 0   ±
Замечания:   ±
На сайте с 30.08.2009

Статус: Offline

При включении работает канал 01 что соответствует приблизительно 20 кГц на выходе дальше при нажатии клавиши "вперёд" переключение каналов до 15, с приростом частоты в 1кГц на каждый последующий канал, правда не мешало бы дописать блок для периодического переключения скажем через каждые пол часа а то говорят эти твари к одной частоте привыкают.
terrarus Дата: Пт, 13.05.2011, 13:28  |                                                                                                                Сообщение # 621
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

А что планируете использовать в качестве аккустического излучателя?

Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
ЯНДЕКС Дата: 13.05.2011
Эд Дата: Сб, 14.05.2011, 23:15  |                                                                                                                Сообщение # 622
Группа: Проверенные
Ранг:  Новенький
Сообщений: 10
Репутация: 0   ±
Замечания:   ±
На сайте с 30.08.2009

Статус: Offline

Вот такую штуку, думаю подойдёт.

Добавлено (13.05.2011, 13.34.11)
---------------------------------------------

---------------------------------------------
Господа, плиз подскажите как организовать отсчёт 15 минут, например с помощью прерывания по переполнению TMR0,
мне нужно раз в 15 минут изменять значение переменной.

Прикрепления: PCT5120.doc (128.5 Kb)

Сообщение отредактировал Эд - Вс, 15.05.2011, 09:16
amid- Дата: Вт, 17.05.2011, 16:32  |                                                                                                                Сообщение # 623
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 89
Репутация: 0   ±
Замечания:   ±
На сайте с 02.12.2010

Статус: Offline

Люди добрые я уже всех замучил своим вопросам по поводу работы таймера дайте пример к такой программе pic 18f876a
Задача подать на portb.2 =1. И она висит там 10минут а программка выполняется дальше

Инициализация таймера ???
Задать нужное время таймера тоесть время выхода на portb.2 лог 1 ???? (10мин)

ivan_fd без обид не пойму я твоего примера много английского

Сообщение отредактировал amid- - Вт, 17.05.2011, 16:33
ivan_fd Дата: Вт, 17.05.2011, 21:53  |                                                                                                                Сообщение # 624
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Смотрите, это Вам подходит?

Таймер 1 отсчитывает 10 минут, так как Вы хотели.

Прикрепления: 10min.rar (29.0 Kb)
amid- Дата: Ср, 18.05.2011, 11:44  |                                                                                                                Сообщение # 625
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 89
Репутация: 0   ±
Замечания:   ±
На сайте с 02.12.2010

Статус: Offline

Quote (ivan_fd)
ivan_fd

Сп. разбираюсь.

??Ктото знает какие ноги отвечают за програмирование етого pic16с57 в даташите не все указано

mikhail09p Дата: Ср, 18.05.2011, 18:49  |                                                                                                                Сообщение # 626
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Осторожно! pic16с57 прошивается 1 раз! Возьмите что-нибуть из серии F !
amid- Дата: Чт, 19.05.2011, 09:38  |                                                                                                                Сообщение # 627
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 89
Репутация: 0   ±
Замечания:   ±
На сайте с 02.12.2010

Статус: Offline

Quote (mikhail09p)
mikhail09p

Сп. выкинул
Alexej79 Дата: Вт, 14.06.2011, 15:37  |                                                                                                                Сообщение # 628
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 71
Репутация: 0   ±
Замечания:   ±
На сайте с 16.08.2010

Статус: Offline

Помогите разобраться. Вопрос такой как подключить к 16F628А энкодер?
Что я имею на данный момент:
Взял энкодер от мауса для ПК. (Я предпологаю что это есть энкодер , колёсико прокрутки )
Схема подключения такова
Левый вывод с энкодера на порт PortB.0 так как это и есть вывод для прерывания INT.
Средний вывод к массе
Правый вывод к порту PortB.2 (подтягивающие резисторы включены Option_reg 7 = 1 ) Для опазнования в какую сторону вращаю энкодер.
Сам код программы оформил таким образом. Я напишу тут, самые на мой взгляд, эффективные для моей темы строчки.

OPTION_REG.7 = 0 включил подтягивающие резисторы
INTE = 1 Разрешить прерывания по INT
INTDG = 1 прерывания по переднему фронту ( когда на INT происходит логическая 1)
ну и ещё PEIE = 1 GIE = 1
Вроде как прерывания подготовил. Дальше, подпрограмма прерывания выглядит так
Int_Label:
Context Save
If PORTB.2 = 1 And INTF = 1 Then X = X + 1
If PORTB.2 = 0 And INTF = 1 Then X = X - 1
INTF = 0
Context Restore

Когда происходит прерывания то опрашивается cостояние на выводе порта PortB.2 В зависимости если на выводе логог. 1 или 0 то следовательно переменной Х добовляется или же убавляется 1.

Вот ещё нюанс так как я использую в программе два прерывание одно по переполнению таймера а другое по INT то я решил поставить опрос состояния флага прерывания что б программа узнала по какому событию произашло прерывание и следовательно обработала только его.

Вроде как должно работать, но у меня переменная Х меняется безобразным образом. Где может быть проблема?
Расчитываю на Вашу помощь.

ADMIN Дата: Вт, 14.06.2011, 18:23  |                                                                                                                Сообщение # 629
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Во-первых, есть ли даташит на энкодер?
Во-вторых, судя по синтаксису, эта программа пишется в протоне, тогда возникает вопрос: что видно в протеусе при отладке?
В-третьих, чтобы обрабатывалось нужное прерывание, правильно, нужно ввести проверку условий:
If INTF = 1 then
bla...bla...bla
INTF = 0
endif
If T0IF = 1 then
bla...bla...bla
T0IF = 0
endif
ivan_fd Дата: Вт, 14.06.2011, 20:12  |                                                                                                                Сообщение # 630
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Как Вы подключили Энкодер, схема?

Вот, посмотрите код, нашел на сайте Протона.
Прикрепления: Encoder.bas (8.4 Kb)
Поиск: