Неадекватный порт PORT.B
|
|
555serg |
Дата: Вт, 01.12.2015, 12:06 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
41
Замечания:
±
На сайте с 12.12.2011
Статус:
Offline
|
Доброго времени суток всем участникам форума. Не могу решить одну проблемку. Может кто подскажет, буду очень признателен. Собрал макетную плату на PIC16F876 камне. Начал писать прогу, и сразу же отлаживать все в работе. Половину постав- ленной задачи сделал, но как только приступил к определению поступающего логи- ческого нуля или еденицы на выводе PORTB.5 - столкнулся со стеной. Весь порт PORTB настроен на вход. В свободном, никуда не подключенном выводе PORTB.5 на нем мультиметром обнаруживается 0 вольт. Подключай к этому порту резистор 33К второй вывод которого подтягиваю к плюсу источника питания. Так же подклю- чаю к этому порту резистор номиналом 2К второй вывод которого подключаю к об- щему , минус источника питания. Проблема в том, что на входе PORTB.5 - не 0,2 - 0,3 вольта как это и должно быть, а четко 0 вольт. Ткните носом пожалуйста, где туплю. Прогу прилагаю, все что в данный момент закомментировано, к делу не относится, подскажите что не так с настройками порта PORTB Нужна ваша помощь, спасибо.
|
|
|
|
DAlexV |
Дата: Вт, 01.12.2015, 12:47 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Цитата '------------------ настройка порт В ---------------------------- 'Declare PortB_Pullups = On 'подключим подтягивающие резисторы к порт В TRISB = 1 ' порт В на вход Цитата 555serg ( ) Весь порт PORTB настроен на вход Ну если верить коду то TRISB = 1 это только PORTB.0 будет входом, а остальные выходы. Правильней будет писать TRISB=$FF или TRISB=%11111111. Поэтому и не работает подтяжка То же касаемо и остальных портов (PORTA)
Успехов
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
Matrix252005 |
Дата: Вт, 01.12.2015, 13:13 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Приятного времени суток!!!
Добавлю следующее, сразу скажу, не примите за критику, но стиль написания у Вас....
И так...
Вы заремили основную прогу!!!! "On_Interrupt GoTo prer" поставьте его перед " 'GoTo main"
Сейчас проверил в протеусе, вроде бы работает...
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
555serg |
Дата: Вт, 01.12.2015, 13:33 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
41
Замечания:
±
На сайте с 12.12.2011
Статус:
Offline
|
Спасибо ребята что быстро откликнулись, сейчас буду читать и переваривать.
|
|
|
|
Matrix252005 |
Дата: Вт, 01.12.2015, 13:41 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Всегда ПЛЗ!!!!
На будущее!!!
Пишите настройки, да и в других переменных либо в НЕХ-ах, либо в бинарнике TRISх=$FF или TRISх=%11111111
Потому что, TRISх = 1 это тоже самое что TRISх = $01 или TRISх = %00000001
Вот и получается, что порт PortB.0 = 1 (тобишь на вход), а остальные на выход...
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
555serg |
Дата: Вт, 01.12.2015, 14:10 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
41
Замечания:
±
На сайте с 12.12.2011
Статус:
Offline
|
DALexV и Matrix252005 спасибо. Изменил форму написания на TRISB = %11111111 как вы и посоветовали, напряжение на делителе из резисторов достигло разумных пре- делов 0.31в. Это говорит о том что - буфер в высокоимпедансном (Z) состоянии, и наг- рузочный резистор ничем не шунтируется - порт работает правильно. Да кстати изна- чально у меня была команда PULLUPS = on , но она работала как то неадекватно, и я от нее отказался. Просто подкинул внешние резисторы подтяжки. Теперь я понял почему. В дальнейшем собирался разобраться в этом вопросе, но теперь я вижу решился и он. Еще раз спасибо всем , тем более за такую оперативность. Да и кстати Matrix 252005 а что не так у меня со стилем?
|
|
|
|
Matrix252005 |
Дата: Вт, 01.12.2015, 14:50 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Цитата 555serg ( ) Да и кстати Matrix 252005 а что не так у меня со стилем? Вы все пишете столбиком, что очень сильно затрудняет читабельность программы. Например:
'---------------------------- ОСНОВНОЙ ЦИКЛ --------------------- 'main:
'If fact_tmr1 = 1 Then ' если имеется факт прерывания от таймера TMR1, то 'fact_tmr1 = 0 ' сбросим факт прерывания, и 'GoSub meandr ' отправляемся в подпрограмму формирования меандра - meandr 'EndIf
И это только кусочек кода, а теперь представьте, когда у Вас код под сотню строчек и еще это не Ваша программа... И как сможете прочесть многоуровневое условие....
Комменты это хорошо, но не когда они занимают много места в коде:
'If s2 = 0 And s2_on = 0 Then ' если кнопка s2 нажата, И как дальше будет понятно отпущена уже более двух пе- ' риодов переполнения таймера TMR0, то 'Inc per_0v_s2 ' увеличиваем на единицу переменную ожидания низкого уровня напряжения (per_0v_s2) 'ElseIf s2 = 1 And s2_on = 1 Then ' или если кнопка s2 отпущена, И с момента последнего нажатия прошло ' менее двух периодов переполнения таймера TMR0, то есть в процессе сканирования ' факт нажатия кнопки s2 s2_on еще не опущен, то 'Inc per_5v_s2 ' увеличиваем на единицу переменную ожидания высокого уровня напряжения (per_5v_s2) 'EndIf
Везде в условиях Вы используете ElseIf, для чего???
'If s3_on = 1 And vkl_s3 = 0 Then .... 'ElseIf s3_on = 1 And vkl_s3 = 1 Then ... 'EndIf
Не проще сделать 2 условия???
Так что, без обид!!!
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
555serg |
Дата: Ср, 02.12.2015, 12:19 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
41
Замечания:
±
На сайте с 12.12.2011
Статус:
Offline
|
Понял, спасибо. Приму к сведению. :)
Добавлено (02.12.2015, 12:14) ---------------------------------------------
Добавлено (02.12.2015, 12:18) --------------------------------------------- Matrix252005 еще проконсультируйте если не трудно. По поводу ElseIF , такой вариант сравнения лучше не использовать при написании программы?
Сообщение отредактировал
555serg - Ср, 02.12.2015, 12:19
|
|
|
|
Matrix252005 |
Дата: Ср, 02.12.2015, 12:33 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Приятного времени суток!!!
Не могу говорить за всех, но я делаю так (кусок кода написанный на mikroBasic-е!!!):
if (But = 0) and (But1 = false) then But1 = true UART1_Write_text("OK!!!") end if
if (But = 1) and (But1 = true) then But1 = false end if
Я делаю так... Если нужно условие с "если", то просто:
if (P < 0 ) then P = (P + 3) + (2 * A_) inc(A_) else P = (P + 5) + (2 * (A_ - B_)) inc(A_) dec(B_) end if
А там... Кому как нравится...
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
555serg |
Дата: Ср, 02.12.2015, 17:20 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
41
Замечания:
±
На сайте с 12.12.2011
Статус:
Offline
|
А я всего лишь думал что вложения ElseIf, Else, делают окончательный код более габаритным, и иногда могут глючить. Еще мне думается, что одноуров- невая схема сравнения в исключительных случаях работает стабильнее. Все равно спасибо за разъяснения.
|
|
|
|
MiXaS |
Дата: Пт, 04.12.2015, 09:07 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Цитата 555serg ( ) per_0v_s1 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè íèçêîãî óðîâíÿ ñ êíîïêè s1 per_0v_s2 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè íèçêîãî óðîâíÿ ñ êíîïêè s2 per_0v_s3 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè íèçêîãî óðîâíÿ ñ êíîïêè s3 per_0v_s4 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè íèçêîãî óðîâíÿ ñ êíîïêè s4 per_0v_s5 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè íèçêîãî óðîâíÿ ñ êíîïêè s5 per_0v_s6 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè íèçêîãî óðîâíÿ ñ êíîïêè s6
s1_on = 0 ' îáíóëèì ïåðåìåííóþ ôàêòà íàæàòèÿ íà êíîïêó s1 s2_on = 0 ' îáíóëèì ïåðåìåííóþ ôàêòà íàæàòèÿ íà êíîïêó s2 s3_on = 0 ' îáíóëèì ïåðåìåííóþ ôàêòà íàæàòèÿ íà êíîïêó s3 s4_on = 0 ' îáíóëèì ïåðåìåííóþ ôàêòà íàæàòèÿ íà êíîïêó s4 s5_on = 0 ' îáíóëèì ïåðåìåííóþ ôàêòà íàæàòèÿ íà êíîïêó s5 s6_on = 0 ' îáíóëèì ïåðåìåííóþ ôàêòà íàëè÷èÿ íèçêîãî óðîâíÿ íà âõîäå PORTB.5
timer_buz = 0 ' îáíóëèì ïåðåìåííóþ âðåìåíè âêëþ÷åíèÿ áóçåðà buz_on = 0 ' îáíóëèì ôëàã âêëþ÷åíèÿ áóçåðà
vkl_s1 = 0 ' âíà÷àëå - âûêëþ÷åíî vkl_s2 = 0 ' âíà÷àëå - âûêëþ÷åíî vkl_s3 = 0 ' âíà÷àëå - âûêëþ÷åíî vkl_s4 = 0 ' âíà÷àëå - âûêëþ÷åíî vkl_s5 = 0 ' âíà÷àëå - âûêëþ÷åíî vkl_s6 = 0 ' âíà÷àëå - âûêëþ÷åíî
per_5v_s1 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè âûñîêîãî óðîâíÿ ñ êíîïêè s1 per_5v_s2 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè âûñîêîãî óðîâíÿ ñ êíîïêè s2 per_5v_s3 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè âûñîêîãî óðîâíÿ ñ êíîïêè s3 per_5v_s4 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè âûñîêîãî óðîâíÿ ñ êíîïêè s4 per_5v_s5 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè âûñîêîãî óðîâíÿ ñ êíîïêè s5 per_5v_s6 = 0 ' îáíóëèì ïåðåìåííóþ çàäåðæêè ðåãèñòðàöèè âûñîêîãî óðîâíÿ ñ êíîïêè s6
s1_on_prin_resh = 0 ' îáíóëèì ïåðåìåííóþ ôàêòà íàæàòèÿ íà êíîïêó s1, äëÿ åäèíîðàçîâîãî ïîñåùåíèÿ ' ïîäïðîãðàììû ïðèíÿòèÿ ðåøåíèé ( prin_resh ) s2_on_prin_resh = 0 ' s3_on_prin_resh = 0 ' s4_on_prin_resh = 0 ' s5_on_prin_resh = 0 ' s6_on_prin_resh = 0 ' îáíóëèì ïåðåìåííóþ ôàêòà íàæàòèÿ íà êíîïêó s6, äëÿ åäèíîðàçîâîãî ïîñåùåíèÿ ' ïîäïðîãðàììû ïðèíÿòèÿ ðåøåíèé ( prin_resh )
Чтобы не городить огород, есть команда clear, которая очищает оперативную память, т.е в начале кода пишите ее и не надо в ручную каждую переменную обнулять, что в свою очередь сокращает время выполнения кода, время написания кода, а также размер кода.
Цитата 555serg ( ) Да кстати изна-чально у меня была команда PULLUPS = on , но она работала как то неадекватно, и я от нее отказался. За подтяжки отвечает OPTION_REG. Рекомендую почитать ШИТ на камень и прописывать все регистры в ручную? чтобы не использовать протоновские декларации (Pullups; digital_all), у меня они не всегда работали. Из личного опыта работы с протоном, рекомендую сразу настраивать все модули, которые мультиплицированы с портами (ADC, CPP, Comparator, MSSP, .........) В противном случае настройки по умолчанию Вам будут портить жизнь, причем Вы потратите много времени чтобы понять в чем дело. Также рекомендую в начале кода прописывать регистр конфигурации MCU, чтобы быть на 100% уверенным, что Watch Dog выключен, если это не нужно.... выбран необходимый тактовый генератор.
|
|
|
|
Константин |
Дата: Сб, 26.12.2020, 06:51 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
5
Замечания:
±
На сайте с 10.05.2013
Статус:
Offline
|
biletedeavion, заходишь на форум с хорошим настроением, а там...Ж.. Половина интернета превращается в помойку, но это их профиль. а нам это зачем. Просьба соблюдать правила форума.
|
|
|
|
xvovanx |
Дата: Сб, 26.12.2020, 22:58 | Сообщение # 13 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
332
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
да это гнусные боты-спамеры форум засирают. Может админам ужесточить регистрацию на форуме, типа при регистрации побольше профильных вопрос-ответов на закон Ома, электроники и т.п. Сразу леваки-рекламщики-казиношники пошли бы по боку...
|
|
|
|
Zelenadmh |
Дата: Сб, 08.07.2023, 03:39 | Сообщение # 14 |
Группа:
Заблокированные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 26.11.2020
Статус:
Offline
|
Привет друзья! Заправка картриджей Минск – это скрупулезная и ответственная работа, так как от нее зависит рабочий процесс всей компании или распечатка важного документа. Малейшая ошибка или недоделка приведет к перебоям в работе заказчика, и соответственно к потере нашей репутации и прибыли. Для нас на первом месте стоит репутация, которую мы заработали нелегкими и долгими годами труда. Поэтому выполняя очередной заказ на заправку принтера или ксерокса, мы думаем о клиенте и с полной ответственностью можем гарантировать как качество, так и быстрое исполнение работы.Заявку на вызов Вы можете оставить как на сайте, так и по телефону. Так же в Online чате сбоку. Наш оператор обговорит удобное для Вас время, и наши специалисты прибудут точно в срок. Качество наших работ всегда на высшем уровне, так как у нас работает лучшая команда профессионалов!Рады предложить нашим клиентам:Заправка картриджей с выездом на дом и офис.Ремонт и восстоновление картриджей.Прошивка любого лазерного принтера.Настройка принтера (wi-fi, установка драйверов на компьютер).Замена термопленки и роликов захвата бумаги.Купить картридж к любому лазерному картриджу.Для заказа мастера просто позвоните по указанным телефонам или оставьте завку, выбрав свою модель! Наша контора занимается свыше 10 лет ремонтом и обслуживанием оргтехники в городе Минске.Основные направления и виды нашей деятельности: 1)заправка картриджей минск 2)hp заправка картриджей 3)заправка картриджа canon 4)brother принтер картридж 5)заправка xerox phaser 6)ремонт принтеров минск Нам будет приятно видеть у нас на сайте НАЖМИТЕ ССЫЛКУ Всегда рады помочь Вам!С уважением,КОПИМЕДИАГРУПП чернила ink mate купить минск чернила epson голубые шестреня самсунг тонер для brother dcp 1512r чип hp 106a чернила epson 103 оригинал бушинг samsung brother dcp 1612wr замените тонер canon pixma g640 чернила универсальный тонер samsung чернила epson 210 заправка картриджа лазерного принтера samsung oki hentai kyocera 1035 фотобарабан canon 470 чернила oki drivers kyocera пишет неоригинальный картридж kyocera ecosys m2040dn замена картриджа картриджи для принтера kyocera p2335d замена фотобарабана samsung тонер samsung 365 заправка тонером картриджей canon kyocera p3050dn картридж тонер static control kyocera чернила для струйного принтера hp ракель hp купить kyocera taskalfa 2021 картридж заправка черных картриджей заправка картриджей hp рядом купить оригинальные чернила canon pixma тонер xerox 3010 купить тонер colouring kyocera монохром тонер xerox чернила epson c13t00s34a шестерня тефлонового вала 4200 ink mate набор чернил тонер color hp lj купить минск чип на картридж hp 106а xerox 3052 фотобарабан kyocera m2040dn отработанный тонер canon mf4410 термопленка фотобарабан lexmark купить сброс тонера brother 2030 xerox phaser 6000 чипы принтер oki резиновый вал ricoh oki c9655 заправка картриджей samsung цена чернила для hp 122 hp tank 315 чернила
чистка вытяжки
|
|
|
|
vladka9911 |
Дата: Вс, 12.11.2023, 18:32 | Сообщение # 15 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
6
Замечания:
±
На сайте с 12.11.2023
Статус:
Offline
|
Согласен
|
|
|
|