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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ivan_fd  
Pic Basic pro для начинающих
Alexej79 Дата: Чт, 02.12.2010, 21:11  |                                                                                                                Сообщение # 451
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 71
Репутация: 0   ±
Замечания:   ±
На сайте с 16.08.2010

Статус: Offline

Привет всем. Не могу врубиться для чего нужен подтягивающий резистор в пикушках? Оъясните пожалуйста и если возможно с наглядными примерами чтоб проще было разобраться. Заранее спасибо.
ЯНДЕКС Дата: 02.12.2010
Broka Дата: Чт, 02.12.2010, 21:20  |                                                                                                                Сообщение # 452
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 253
Репутация: 9   ±
Замечания:   ±
На сайте с 30.09.2009

Статус: Offline

Alexej79

Для того чтобы не городить например кучу деталей лишних, у тебя всё есть в PIC, подключаются они программно, хочешь включить пожалуйста, нехочешь включать тоже пожалуйста smile
Например 16F84 ( На PORTB ты можеш программно подключить подтягивающие резисторы ) это при условии если ты их сделаешь в конфигурации входами!


Наладчик КИП и А
Сообщение отредактировал Broka - Чт, 02.12.2010, 21:30
tombender Дата: Чт, 02.12.2010, 21:22  |                                                                                                                Сообщение # 453
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 14.09.2010

Статус: Offline

если дело в транзисторах, тогда как работает схема, которую прислал ivan_fd.
Прикрепления: 112.rar (31.3 Kb)
mikhail09p Дата: Чт, 02.12.2010, 21:34  |                                                                                                                Сообщение # 454
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

tombender, там ведь подключена всего одна лампочка, а мой проц грузит на 100% !!! Но работает, согласен.
Ещё раз обращаю внимание: Протеус всего-навсего СИМУЛЯТОР ! Хотя и неплохой.
Broka Дата: Чт, 02.12.2010, 21:34  |                                                                                                                Сообщение # 455
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 253
Репутация: 9   ±
Замечания:   ±
На сайте с 30.09.2009

Статус: Offline

tombender, А она точно в железе работает? Или только в симуляторе? Если транзистор не входит в насыщение как она может работать, а?

Наладчик КИП и А
amid- Дата: Чт, 02.12.2010, 21:35  |                                                                                                                Сообщение # 456
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 89
Репутация: 0   ±
Замечания:   ±
На сайте с 02.12.2010

Статус: Offline

Подскажите как сравнить одновременно 4 porta включенных как входы не используя if hten
Например
если porta.0=1,porta.1=1,porta.2=0,porta.3=0
тоесть на них одновременно пришли какието хаотичные сигналы логич. 1 на porta.1 0 на porta.2 и тому подобное
какой командой сделать так чтоб прочитав входы портов (0 или1) сравних их с нужными кодами если совполо то goto main
если не совпало то goto end
если можно кусочек проги в пример
тока учюсь
можно и командой if но геморойно очень писать много вроде и книжку прочитал нашол команду select....case но как ее применить не догоняю cry

Сообщение отредактировал amid- - Чт, 02.12.2010, 21:39
mikhail09p Дата: Чт, 02.12.2010, 21:44  |                                                                                                                Сообщение # 457
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Quote (Alexej79)
Не могу врубиться для чего нужен подтягивающий резистор в пикушках?

Например, на порт В вешаешь кнопки одним выводом на корпус. На плюс питания уже не надо разводить резисторы, так как в микрухе они уже есть внутри... Это 8 резисторов. tongue

Добавлено (02.12.2010, 21.44.52)
---------------------------------------------

Quote (amid-)
Подскажите как сравнить одновременно 4 porta включенных как входы не используя if hten Например если porta.0=1,porta.1=1,porta.2=0,porta.3=0

Это не 4 порта, а 4 бита одного порта.
Можно так:

a=%0101
if PORTA=a then metka

Сообщение отредактировал mikhail09p - Чт, 02.12.2010, 22:02
tombender Дата: Чт, 02.12.2010, 22:14  |                                                                                                                Сообщение # 458
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 14.09.2010

Статус: Offline

океи завтра пойду прошивать а потом буду собирать. о результате отпишусь поже.

ещё раз спасибо за ответы и терпения.

ivan_fd Дата: Чт, 02.12.2010, 22:18  |                                                                                                                Сообщение # 459
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (tombender)
Значит Вы думайте что в железе эта схема на лампочки будет работать.

Попробуйте собрать и увидите.

А Протеус в схеме с лампочками все равно не даст Вам того эффекта, как с диодами.

Так что собирайте схему в железе, и эксперементируйте.

terrarus Дата: Пт, 03.12.2010, 08:33  |                                                                                                                Сообщение # 460
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Quote (mikhail09p)
Я резисторы между базой и эммитером не устанавливаю, у ПИКов очень нулевой нуль

Сразу видно. что Вы не изучали полупроводниковые приборы и действуете чисто методом тыка, по радиолюбительски..
Quote (Broka)
Я думаю что будет,если правильно подключить транзисторы и правильно сделать делитель на смещение транзисторов.
. Вот слушайте грамотного человека!
Дело вовсе не в нулевом уровне, который как Вам кажется, выдает пик при нулевом состоянии на выходе, тут Вы тоже ошибаетесь!
На переходе эмиттер-база должно быть падение напряжения не более 0,6-0,8 вольт, иначе произойдет пробой этого самого перехода. Поэтому нужен делитель, или хотя бы ограничительный резистор по току, чтобы ограничить ток протекающий через переход эмиттер -база. Если использовать полевые ключи КП501 (их называют еще и полевыми транзисторами) по выход пика можно прямо подключить к затвору.


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал terrarus - Пт, 03.12.2010, 09:47
terrarus Дата: Пт, 03.12.2010, 09:09  |                                                                                                                Сообщение # 461
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Подскажите как сравнить одновременно 4 PORTA включенных как входы не используя If hten

Dim VAR1 As Byte ' Создать переменную VAR1 типа Byte

VAR1 = PORTA ' Прочитать состояние порта А и поместить его двоичное значение в переменную VAR1

LoadBit VAR1, 4, 0 ' Записать в неиспользуемый 4-й разряд переменной VAR1 нулевое значение
LoadBit VAR1, 5, 0 ' Записать в неиспользуемый 5-1 разряд переменной VAR1 нулевое значение
LoadBit VAR1, 6, 0 ' Записать в неиспользуемый 6-1 разряд переменной VAR1 нулевое значение
LoadBit VAR1, 7, 0 ' Записать в неиспользуемый 7-1 разряд переменной VAR1 нулевое значение

On VAR1 GoTo Metka_0, Metka_1, Metka_2, Metka_3 ' Если значение VAR1 = 0 идти к метке Metka_0
' Если значение VAR1 = 1 идти к метке Metka_1
' Если значение VAR1 = 2 идти к метке Metka_2
' Если значение VAR1 = 3 идти к метке Metka_4

'--------------------------------------------------------------------
LoadBit Variable , Index , Value

По команде LoadBit записывается 0 либо 1 в указанный разряд переменной или регистра.

Variable - это определяемая пользователем переменная, типа Byte, Word, или Dword.

Index - может быть константой, переменной, или выражением, которое указывает на отдельный бит переменной, который необходимо изменить.

Value - может быть константой, переменной, или выражением, которое будет помещено в нужный разряд. Попытка поместить в нужный разряд значение больше чем 1, приведет к тому, что все равно в него будет записана 1.
\
On VAR1 GoTo LABEL_0 , LABEL_1, LABEL_2

Эта команда будет работать точно так же как и блок команд If...Then. Если же значение переменной VAR1 не будет находится в заданных пределах от 0 до 2, например переменная VAR1 получит значение больше чем 2, то команда On GoTo не будет делать ничего и основная программа будет продолжена со следующей команды.

'--------------------------------------------------------------------

Команда On GoTo предназначена, прежде всего, для использования с микроконтроллерами, которые имеют
всего одну страницу памяти (0-2047). Если используются большие микроконтроллеры, и есть подозрение,
что метка перехода может находиться на линии раздела страниц, то лучше вместо неё использовать команду On GoToL

'-----------------------------------------------------------------------
On GoToL Это команда безусловного перехода принуждающая основную программу переходить в различные её места,
определяемые переменным индексом. Команда On GoToL предназначена для микроконтроллеров у которых больше
чем одна страница памяти, в основном она предназначена для микроконтроллеров 18 серии, но может работать
и с микроконтроллерами 16 серии. Команда On GoToL работает так же как и команда BranchL .


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал terrarus - Пт, 03.12.2010, 09:11
ЯНДЕКС Дата: 03.12.2010
Matrix252005 Дата: Пт, 03.12.2010, 10:06  |                                                                                                                Сообщение # 462
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток. tombender, я Вам говорил сразу собирайте в железе. Схема полностью работоспособна. Только подберите транзисторы, а еще лучше, используйте "ULNхххх". Например: ULN2003A - она инвертор, т.е. Вы ее можете использовать для PortC (на память схему не помню)... Ток нагрузки до 500мА. Если Вы сомневаетесь в ее работоспособности, скиньте мне свой EMail, я скину Вам видео этого устройства в действии. В моей схеме используется 64 ультроярких св.диодов (красные и зеленые), питается вся схема от АКК моб. тел+МС34063. Потребляет .... Если я не ошибаюсь, mikhail09p, я Вам скидывал это видео "журнального столика"...

tombender, если я Вас обидел, извините меня ПЛЗ. Просто я Вам полностью все расписал, нарисовал схему, только собирайте. Как работает программа тоже вроде бы ясно описал (в личке). Если возникнут вопросы (только если не "Лампочка не горит..."), спрашивайте...

Добавлено (03.12.2010, 10.06.40)
---------------------------------------------
tombender, да, Ваша схема с поста №444 не когда не заработает. Причина, отсутствие связей между лампочками и транзисторами и резисторами... Эти "точки" которые стоит поблизости от деталей, не говорит о том, что между ними существует связь (не путать с другой... happy ). Соберите схему на макетке и проверьте в железе...


THE TRUTH IS OUT THERE.

С уважением, Николай.
amid- Дата: Пт, 03.12.2010, 10:59  |                                                                                                                Сообщение # 463
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 89
Репутация: 0   ±
Замечания:   ±
На сайте с 02.12.2010

Статус: Offline

Quote (mikhail09p)
Это не 4 порта, а 4 бита одного порта. Можно так: a=%0101 if PORTA=a then metka

как присвоит (а) к всем четырем porta.0,1,2,3 ?

может так a var bayte ?

symbol a=porta.0,porta.1,porta.2,porta.3 ?
if porta=%1110 then ?
если да то можно примерчик плиз

Добавлено (03.12.2010, 10.59.45)
---------------------------------------------

Quote (terrarus)
Dim VAR1 As Byte ' Создать переменную VAR1 типа Byte VAR1 = PORTA ' Прочитать состояние порта А и поместить его двоичное значение в переменную VAR1 LoadBit VAR1, 4, 0 ' Записать в неиспользуемый 4-й разряд переменной VAR1 нулевое значение LoadBit VAR1, 5, 0 ' Записать в неиспользуемый 5-1 разряд переменной VAR1 нулевое значение LoadBit VAR1, 6, 0 ' Записать в неиспользуемый 6-1 разряд переменной VAR1 нулевое значение LoadBit VAR1, 7, 0 ' Записать в неиспользуемый 7-1 разряд переменной VAR1 нулевое значение On VAR1 GoTo Metka_0, Metka_1, Metka_2, Metka_3 ' Если значение VAR1 = 0 идти к метке Metka_0 ' Если значение VAR1 = 1 идти к метке Metka_1 ' Если значение VAR1 = 2 идти к метке Metka_2 ' Если значение VAR1 = 3 идти к метке Metka_4

Я так понимаю что это програма контралирует все 4 potrta и пишет в память либо все 1 либо все 0 если оно одновременно пришлм на
porta
a если сегнал у них разный напремер на porta1 =1 porta2 =0 porta3=0 porta4=1
и сегналы приходящии могут быть хаотичными на входах porta

Сообщение отредактировал amid- - Пт, 03.12.2010, 11:29
ivan_fd Дата: Пт, 03.12.2010, 14:03  |                                                                                                                Сообщение # 464
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (amid-)
Я так понимаю что это програма контралирует все 4 potrta и пишет в память либо все 1 либо все 0 если оно одновременно пришлм на
porta
a если сегнал у них разный напремер на porta1 =1 porta2 =0 porta3=0 porta4=1
и сегналы приходящии могут быть хаотичными на входах porta

Нет эта программа не пишет все нули или единицы.

Code
VAR1 = PORTA ' Прочитать состояние порта А и поместить его двоичное значение в переменную VAR1

Здесь переменной VAR1 присваивается состояние портаА.

Code
LoadBit VAR1, 4, 0 ' Записать в неиспользуемый 4-й разряд переменной VAR1 нулевое значение
LoadBit VAR1, 5, 0 ' Записать в неиспользуемый 5-1 разряд переменной VAR1 нулевое значение
LoadBit VAR1, 6, 0 ' Записать в неиспользуемый 6-1 разряд переменной VAR1 нулевое значение
LoadBit VAR1, 7, 0 ' Записать в неиспользуемый 7-1 разряд переменной VAR1 нулевое значение


Этот код устанавливает неиспользуемые биты в нули. Кстати его можно написать короче:

VAR1 = var1 & %00001111

terrarus Дата: Пт, 03.12.2010, 14:05  |                                                                                                                Сообщение # 465
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Разъясняю!!!
VAR1 = PORTA "записать в переменную VAR1 данные которые пришли на все 6 входов порта А
Например, (Ваш пример - porta1 =1 porta2 =0 porta3=0 porta4=1) на выводах порта А следующие данные RA0 = 0, RA1 = 1, RA2=0, RA3=0, RA4=1, и еще в порте А есть RA5 и его нужно учесть тоже, тоесть RA5=0. В итоге в перемнную VAR1 будут записаны данные
VAR1 = %00010010.
Но в RB5 может записаться и 1, поэтому нужно принудительно обнулить RB5, а заодно и RB6, RB7
командами:
LoadBit VAR1, 5, 0 ' то есть маскируем этот 5-й разряд как не нужный нам
LoadBit VAR1, 6, 0 ' то есть маскируем этот 5-й разряд
LoadBit VAR1, 7, 0 ' то есть маскируем этот 5-й разряд

После этого в переменной VAR1 гарантированно содержится то, что пришло на нужные входа порта В.
Ну а дальше делайте с данными которые уже в VAR1 Все что нужно,

----------------------------------------------------
Этот код устанавливает неиспользуемые биты в нули. Кстати его можно написать короче:
VAR1 = var1 & %00001111

Спасибо iivan_fd , так действительно короче. но я записал длинно именно для начинающего. А теперь у него возникнет еще один вопрос Что значит & и наверное еще второй вопрос, что значит %00001111.
Мне пожалуйста не отвечайте - сам я то знаю.


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал terrarus - Пт, 03.12.2010, 14:13
Поиск: