Мигание ЛЭД - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Мигание ЛЭД (не понятное поведение портов)
Мигание ЛЭД
Anatoliy1000 Дата: Ср, 06.07.2016, 04:55  |                                                                                                                Сообщение # 1
Группа: Пользователи
Ранг:  Пытаюсь разобраться
Сообщений: 39
Репутация: 0   ±
Замечания:   ±
На сайте с 02.03.2016

Статус: Offline

Здравствуйте!
Ранее вопрос задавал в разделе "помогите новичку", но ответов не было. Да простит модератор - выношу отдельным вопросом.

1. Задаю 3 портам №№ 0,1 и 4 выход и ставлю на них логическую 1.
2. Подвешиваю на них 3 ЛЭДки (разных цветов). Это четырехногая ЛЭД и общим анодом (+).
3. Ставлю условие, что при замыкании кнопки на порту №3 мигание красной ЛЭД (порт1), при размыкании зеленой (порт4). Обратите внимание, что порт №0 (голубой цвет) вообще не трогаю.
Результат:
Автоматически загорается голубой цвет. Хотя в начале гасил и его не трогал. А красный автоматом становится всегда включенным при мигании зеленого.
Опытным путем установлено, что при исключении из программы зеленой или красной мигалки, синий включается при включении оставшегося цвета.
В чем проблема?
Прикрепления: 5320021.jpg(114Kb)


Я новичок. За помощь стараюсь плюсовать репутацию (пока других способов сказать спасибо не знаю).
ЯНДЕКС Дата: 06.07.2016
ivan_fd Дата: Ср, 06.07.2016, 08:58  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 881
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Код не смотрел, но если это не работает в протеусе, то резисторы нужно поставить на светодиоды, или сделать их цифровым примитивом.

P.S: да и забудьте Вы про эти программные прерывания!!!!! Вообще не понимаю нафиг их придумали разработчики.


Меня все время преследуют умные мысли...но я быстрее!!!
Сообщение отредактировал ivan_fd - Ср, 06.07.2016, 09:01
xvovanx Дата: Ср, 06.07.2016, 09:02  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 247
Репутация: 12   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Ну вы и накрутили - операторы "Select , Case", да паузы в прерываниях и программа так запутана, что я не разобрал "кто кем" мигает и с какой паузой.
Напишите программу проще и понятней для самого себя и другим, используя простые команды и операторы, типа:

If мишень=0 Then
GreenLED=High: RedLED=Low
Else 'мишень=1
GreenLED=Low: RedLED=High
EndIf

и все паузы в основную программу.

Да и вообще прерывания в вашей программе не нужны. Зациклить программу с опросом состояния мишени и все.

Сообщение отредактировал xvovanx - Ср, 06.07.2016, 09:05
Anatoliy1000 Дата: Ср, 06.07.2016, 09:35  |                                                                                                                Сообщение # 4
Группа: Пользователи
Ранг:  Пытаюсь разобраться
Сообщений: 39
Репутация: 0   ±
Замечания:   ±
На сайте с 02.03.2016

Статус: Offline

Цитата xvovanx ()
Да и вообще прерывания в вашей программе не нужны.
1.Там у меня счетчик времени. Как его по другому сделать? Там просто считать вроде легче время стояния-падения мишени.

2.Кто как делает счетчик времени?

3.А по программе решил поставить транзисторы и все работает (в протеусе). Просто не хотел доп.пайки и вложений.

4.Интересно еще,то что в указанном прерывании через определенный промежуток времени порт для мигания лампочки меняет состояние с + на -. Получаем мигание. При использовании команд:
А) Toggle Port.Bit
Б) PulsOut Pin , Period, {Initial State}
подается сигнал 1 раз, потом стопор. В протеусе показывает, что нога становится серым цветом, т.е. как я понимаю ТРИС = 1 состояние неопределенности.
                   


Я новичок. За помощь стараюсь плюсовать репутацию (пока других способов сказать спасибо не знаю).
Сообщение отредактировал Anatoliy1000 - Ср, 06.07.2016, 10:02
ivan_fd Дата: Ср, 06.07.2016, 10:04  |                                                                                                                Сообщение # 5
Группа: Модераторы
Ранг:  Специалист
Сообщений: 881
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Цитата Anatoliy1000 ()
А по программе решил поставить транзисторы и все работает (в протеусе). Просто не хотел доп.пайки и вложений.


Для протеуса я Вам написал, что достаточно было сделать так:



Меня все время преследуют умные мысли...но я быстрее!!!
Сообщение отредактировал ivan_fd - Ср, 06.07.2016, 10:11
ivan_fd Дата: Ср, 06.07.2016, 10:18  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Специалист
Сообщений: 881
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

А вот в железе обязательно поставить резисторы! Ну разве, что это куча светодиодов, тогда да, нужны транзисторы.

Меня все время преследуют умные мысли...но я быстрее!!!
xvovanx Дата: Чт, 07.07.2016, 08:56  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 247
Репутация: 12   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата Anatoliy1000 ()
...Кто как делает счетчик времени?...

я в основном использую таймер 1 в прерывании
Прикрепления: 5480902.jpg(71Kb)
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Мигание ЛЭД (не понятное поведение портов)
Страница 1 из 11
Поиск: