| Автор |
Съобщение |
|
acronym
Ранг: Минаващ
Регистриран на: Пон Юни 30, 2008 10:49 am Мнения: 6
|
 Проблем с PORTA
Здравейте, от няколко дена ме мъчи един проблем. Става въпрос за следното:
процесора е PIC16F913, езика на който се пише е асемблер.
RA0 RA1 RA5 са конфигурирани като аналогови входове и се използват за мерене на температура, това както и да е работи си, мери си. Но при опит да вържа било то индикация, било то бутони (бутоните ги ползвам на друг порт и там си работят, просто ги вързах на А за проба след като индикацията ми правеше проблемчета)не работят коректно - RA4,6,7 са въпросните изводи. Индикацията не е лсд-то, а 3 светодиода които би трябвало да индицират определени режими, светват си но правят проблеми от сорта на: RA4 не светва когато след командата за светването му има команда за гасене на RA6 или 7, или светва но гасне когато 6 или 7 светнат ( а не би трябвало да гасне). А когато се вържат бутоните там, с този с който влизам в менюто на програмката вързан за RA7 - взлиза се в менюто но лсд-то не го показва (сложил съм едно светодиодче за проба, да светва когато съм в менюто), а другите два бутона хич не работят. Странно, при положение че този код за бутоните и светодиодите си работи на друга програма с друг чип. Което ме навежда на мисълта че нещо в инициализацията не е наред, но не откривам какво. Ето част от кода където се инициализара портА:
Чипа има ЛСД драйвер който си е забранен по дефолт и него не го пипам. Използвам вътрешен осцилатор. Таймер 1 е конфигуриран така :
Знам, че грешката е при мен някъде, и най-вероятно нещо все още трябва да се пипне по този порт, но какво ....
Благодаря предварително за помоща 
|
| Пон Юни 30, 2008 11:29 am |
|
 |
|
Ки4о
Ранг: Форумен бог
Регистриран на: Съб Юли 22, 2006 9:50 pm Мнения: 1638
|
Айде да кажеш кой извод е изход а ?На мен ми приличат да са конфигурирани само като входове всичките на целия порт 
|
| Пон Юни 30, 2008 12:04 pm |
|
 |
|
acronym
Ранг: Минаващ
Регистриран на: Пон Юни 30, 2008 10:49 am Мнения: 6
|
Да така е, това е от пробата с бутоните.
Когато е със светодиодите е така - movlw B'00101111' movwf TRISA
|
| Пон Юни 30, 2008 12:10 pm |
|
 |
|
Ки4о
Ранг: Форумен бог
Регистриран на: Съб Юли 22, 2006 9:50 pm Мнения: 1638
|
Защо 2 пъти конфигурираш TRISA регистъра - един път в порта и един път при АЦП-то ? При това с различни стойности ? Конфигурира се веднъж.
|
| Пон Юни 30, 2008 12:14 pm |
|
 |
|
acronym
Ранг: Минаващ
Регистриран на: Пон Юни 30, 2008 10:49 am Мнения: 6
|
ANSEL и TRISA ли ?
Ако това имаш предвид, нали веднъж трябва да определя кои изводи са аналогови входове и кои са цифрови I/O с общо предназначение, а после с трис да определя кои от тези ц ифрови I/O ще са входове или изходи съответно ? Или пак греша. Явно греша някаква дреболия, която може би не съм схванал добре
Интересно се получава, че дори и да махна конфигурирането на ANSEL, отчитането на температурата си бачка без проблеми
Явно и симулатора ми вкарва доза объркване, ама как да тръгна да я правя тая схема като не съм наясно дали не греша в кода за порт А
|
| Пон Юни 30, 2008 12:34 pm |
|
 |
|
Ки4о
Ранг: Форумен бог
Регистриран на: Съб Юли 22, 2006 9:50 pm Мнения: 1638
|
Направи си инициализацията както е в ПДФ-а на стр.179 и я проиграй - ще ти светне как стават нещата.
[/quote]
|
| Пон Юни 30, 2008 1:10 pm |
|
 |
|
acronym
Ранг: Минаващ
Регистриран на: Пон Юни 30, 2008 10:49 am Мнения: 6
|
Ебаси пикльото е тоя пик, как може такива номера
Проблема се оказа в тея редове
Ползвам порт 0, 1 и 5 за аналогови входове, които са съответно RA0 (AN0), RA1 (AN1) и RA5 (AN4)
според регистъра ANSEL конфигурацията трябва да е така '00010011' при което става проблема, направих я така - '00100011' и вече работи
Е поне аз това не мога да си го обясня
В ератата няма такова нещо 
|
| Вто Юли 01, 2008 1:54 pm |
|
 |
|
fan
Ранг: Почетен член
Регистриран на: Съб Окт 13, 2007 12:12 pm Мнения: 712
|
Момче, проблема е в теб! Не четеш и не тестваш достатъчно!
|
| Вто Юли 01, 2008 4:51 pm |
|
 |
|
acronym
Ранг: Минаващ
Регистриран на: Пон Юни 30, 2008 10:49 am Мнения: 6
|
Щом казваш
Ако имаш обяснение дай го, ако ли не ... 
|
| Сря Юли 02, 2008 9:11 am |
|
 |
|
bobyper
Ранг: Ориентиран
Регистриран на: Вто Яну 31, 2006 11:11 pm Мнения: 295 Местоположение: София
|
Правило ти казва човека, проблема е в теб
Това долу точо това прави
Просто си разменил битове 4 и 5
|
| Сря Юли 02, 2008 10:05 am |
|
 |
|
acronym
Ранг: Минаващ
Регистриран на: Пон Юни 30, 2008 10:49 am Мнения: 6
|
Съдейки по това:
не би трябвало 
|
| Сря Юли 02, 2008 12:01 pm |
|
 |
|
ji4ka
Ранг: Форумен бог
Регистриран на: Чет Фев 01, 2007 4:04 am Мнения: 1539
|
ANSEL блокира само входната страна на цифровия пин - сиреч ако се мъчиш да четеш на тоя пин логически сигнал , ще ти връща винаги 0. Може би затова не ти чете бутоните. Затова преди да четеш от пина трябва да нулирваш съответния ANSEL бит, поне по време на четенето.
|
| Сря Юли 02, 2008 12:22 pm |
|
 |
|
bobyper
Ранг: Ориентиран
Регистриран на: Вто Яну 31, 2006 11:11 pm Мнения: 295 Местоположение: София
|
Наточих и разгледах pdf-a. Наистина има нещо объркващо. Въпроса е при тази ситуация:
дали RA5 (AN4) работи като аналогов вход. Ако НЕ работи значи pdf-a и PIC-a са си наред.
|
| Сря Юли 02, 2008 1:30 pm |
|
 |
|
ji4ka
Ранг: Форумен бог
Регистриран на: Чет Фев 01, 2007 4:04 am Мнения: 1539
|
ANSEL не влияе на работата на аналоговата част, а само на цифровата част на пина и то само като вход. Но и с тия r-m-w портове понякога се получават големи изненади.
|
| Сря Юли 02, 2008 11:24 pm |
|
|