| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Проблем с PORTA http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=5899 |
Страница 1 от 1 |
| Автор: | acronym [ Пон Юни 30, 2008 11:29 am ] | ||||||||||||||||||
| Заглавие: | Проблем с PORTA | ||||||||||||||||||
Здравейте, от няколко дена ме мъчи един проблем. Става въпрос за следното: процесора е PIC16F913, езика на който се пише е асемблер. RA0 RA1 RA5 са конфигурирани като аналогови входове и се използват за мерене на температура, това както и да е работи си, мери си. Но при опит да вържа било то индикация, било то бутони (бутоните ги ползвам на друг порт и там си работят, просто ги вързах на А за проба след като индикацията ми правеше проблемчета)не работят коректно - RA4,6,7 са въпросните изводи. Индикацията не е лсд-то, а 3 светодиода които би трябвало да индицират определени режими, светват си но правят проблеми от сорта на: RA4 не светва когато след командата за светването му има команда за гасене на RA6 или 7, или светва но гасне когато 6 или 7 светнат ( а не би трябвало да гасне). А когато се вържат бутоните там, с този с който влизам в менюто на програмката вързан за RA7 - взлиза се в менюто но лсд-то не го показва (сложил съм едно светодиодче за проба, да светва когато съм в менюто), а другите два бутона хич не работят. Странно, при положение че този код за бутоните и светодиодите си работи на друга програма с друг чип. Което ме навежда на мисълта че нещо в инициализацията не е наред, но не откривам какво. Ето част от кода където се инициализара портА:
Чипа има ЛСД драйвер който си е забранен по дефолт и него не го пипам. Използвам вътрешен осцилатор. Таймер 1 е конфигуриран така :
Знам, че грешката е при мен някъде, и най-вероятно нещо все още трябва да се пипне по този порт, но какво .... Благодаря предварително за помоща |
|||||||||||||||||||
| Автор: | Ки4о [ Пон Юни 30, 2008 12:04 pm ] | |||||||||
| Заглавие: | ||||||||||
|
||||||||||
| Автор: | acronym [ Пон Юни 30, 2008 12:10 pm ] |
| Заглавие: | |
Да така е, това е от пробата с бутоните. Когато е със светодиодите е така - movlw B'00101111' movwf TRISA |
|
| Автор: | Ки4о [ Пон Юни 30, 2008 12:14 pm ] |
| Заглавие: | |
Защо 2 пъти конфигурираш TRISA регистъра - един път в порта и един път при АЦП-то ? При това с различни стойности ? Конфигурира се веднъж. |
|
| Автор: | acronym [ Пон Юни 30, 2008 12:34 pm ] |
| Заглавие: | |
ANSEL и TRISA ли ? Ако това имаш предвид, нали веднъж трябва да определя кои изводи са аналогови входове и кои са цифрови I/O с общо предназначение, а после с трис да определя кои от тези ц ифрови I/O ще са входове или изходи съответно ? Или пак греша. Явно греша някаква дреболия, която може би не съм схванал добре Интересно се получава, че дори и да махна конфигурирането на ANSEL, отчитането на температурата си бачка без проблеми Явно и симулатора ми вкарва доза объркване, ама как да тръгна да я правя тая схема като не съм наясно дали не греша в кода за порт А |
|
| Автор: | Ки4о [ Пон Юни 30, 2008 1:10 pm ] |
| Заглавие: | |
Направи си инициализацията както е в ПДФ-а на стр.179 и я проиграй - ще ти светне как стават нещата. [/quote] |
|
| Автор: | acronym [ Вто Юли 01, 2008 1:54 pm ] | |||||||||
| Заглавие: | ||||||||||
Ебаси пикльото е тоя пик, как може такива номера Проблема се оказа в тея редове
Ползвам порт 0, 1 и 5 за аналогови входове, които са съответно RA0 (AN0), RA1 (AN1) и RA5 (AN4) според регистъра ANSEL конфигурацията трябва да е така '00010011' при което става проблема, направих я така - '00100011' и вече работи Е поне аз това не мога да си го обясня В ератата няма такова нещо |
||||||||||
| Автор: | fan [ Вто Юли 01, 2008 4:51 pm ] |
| Заглавие: | |
Момче, проблема е в теб! Не четеш и не тестваш достатъчно! |
|
| Автор: | acronym [ Сря Юли 02, 2008 9:11 am ] |
| Заглавие: | |
Щом казваш Ако имаш обяснение дай го, ако ли не ... |
|
| Автор: | bobyper [ Сря Юли 02, 2008 10:05 am ] | |||||||||||||||||||||||||||
| Заглавие: | ||||||||||||||||||||||||||||
Правило ти казва човека, проблема е в теб
Това долу точо това прави
Просто си разменил битове 4 и 5 |
||||||||||||||||||||||||||||
| Автор: | acronym [ Сря Юли 02, 2008 12:01 pm ] |
| Заглавие: | |
Съдейки по това:
не би трябвало |
|
| Автор: | ji4ka [ Сря Юли 02, 2008 12:22 pm ] |
| Заглавие: | |
ANSEL блокира само входната страна на цифровия пин - сиреч ако се мъчиш да четеш на тоя пин логически сигнал , ще ти връща винаги 0. Може би затова не ти чете бутоните. Затова преди да четеш от пина трябва да нулирваш съответния ANSEL бит, поне по време на четенето. |
|
| Автор: | bobyper [ Сря Юли 02, 2008 1:30 pm ] | |||||||||
| Заглавие: | ||||||||||
Наточих и разгледах pdf-a. Наистина има нещо объркващо. Въпроса е при тази ситуация:
дали RA5 (AN4) работи като аналогов вход. Ако НЕ работи значи pdf-a и PIC-a са си наред. |
||||||||||
| Автор: | ji4ka [ Сря Юли 02, 2008 11:24 pm ] | |||||||||
| Заглавие: | ||||||||||
ANSEL не влияе на работата на аналоговата част, а само на цифровата част на пина и то само като вход. Но и с тия r-m-w портове понякога се получават големи изненади. |
||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|