Микроконтролери и електроника
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 - взлиза се в менюто но лсд-то не го показва (сложил съм едно светодиодче за проба, да светва когато съм в менюто), а другите два бутона хич не работят. Странно, при положение че този код за бутоните и светодиодите си работи на друга програма с друг чип. Което ме навежда на мисълта че нещо в инициализацията не е наред, но не откривам какво. Ето част от кода където се инициализара портА:

Код:
...
               
                banksel   OSCCON
                movlw   B'01100111'      
                movwf   OSCCON
   movlw   B'00000111'      ;Забрани модул Компаратор
   movwf   CMCON0
                banksel   PORTА
   clrf   PORTA
...

ADC_Init   
   banksel     ANSEL      
   movlw   B'00010011'      
   movwf   ANSEL
   movlw   B'11111111'
   movwf   TRISA
   movlw   B'00010000'      
   movwf   ADCON1         
   banksel   ADCON0      
   movlw   B'00000001'      
   movwf   ADCON0   
                return


Чипа има ЛСД драйвер който си е забранен по дефолт и него не го пипам.
Използвам вътрешен осцилатор.
Таймер 1 е конфигуриран така :
Код:
 
...
                movlw   B'00110100'   
                  movwf   T1CON
   banksel   PIE1      
                bsf   PIE1,TMR1IE
...   


Знам, че грешката е при мен някъде, и най-вероятно нещо все още трябва да се пипне по този порт, но какво .... :?

Благодаря предварително за помоща :)

Автор:  Ки4о [ Пон Юни 30, 2008 12:04 pm ]
Заглавие: 

Цитат:
movlw B'11111111'
movwf TRISA
Айде да кажеш кой извод е изход а ?На мен ми приличат да са конфигурирани само като входове всичките на целия порт :)

Автор:  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 ще са входове или изходи съответно ? Или пак греша. Явно греша някаква дреболия, която може би не съм схванал добре :cry:

Интересно се получава, че дори и да махна конфигурирането на ANSEL, отчитането на температурата си бачка без проблеми 8O
Явно и симулатора ми вкарва доза объркване, ама как да тръгна да я правя тая схема като не съм наясно дали не греша в кода за порт А

Автор:  Ки4о [ Пон Юни 30, 2008 1:10 pm ]
Заглавие: 

Направи си инициализацията както е в ПДФ-а на стр.179 и я проиграй - ще ти светне как стават нещата.




[/quote]

Автор:  acronym [ Вто Юли 01, 2008 1:54 pm ]
Заглавие: 

Ебаси пикльото е тоя пик, как може такива номера :?
Проблема се оказа в тея редове
Код:
movlw   B'00010011'       
   movwf   ANSEL


Ползвам порт 0, 1 и 5 за аналогови входове, които са съответно RA0 (AN0), RA1 (AN1) и RA5 (AN4)
според регистъра ANSEL конфигурацията трябва да е така '00010011' при което става проблема, направих я така - '00100011' и вече работи 8O
Е поне аз това не мога да си го обясня :oops:

В ератата няма такова нещо :roll:

Автор:  fan [ Вто Юли 01, 2008 4:51 pm ]
Заглавие: 

Момче, проблема е в теб! Не четеш и не тестваш достатъчно!

Автор:  acronym [ Сря Юли 02, 2008 9:11 am ]
Заглавие: 

Щом казваш :roll:

Ако имаш обяснение дай го, ако ли не ... :roll:

Автор:  bobyper [ Сря Юли 02, 2008 10:05 am ]
Заглавие: 

acronym написа:
Щом казваш :roll:

Ако имаш обяснение дай го, ако ли не ... :roll:


Правило ти казва човека, проблема е в теб
Цитат:
...RA0 RA1 RA5 са конфигурирани като аналогови входове ...

Това долу точо това прави

Код:
movlw   B'00100011'
movwf   ANSEL


Просто си разменил битове 4 и 5

Автор:  acronym [ Сря Юли 02, 2008 12:01 pm ]
Заглавие: 

Съдейки по това:

Изображение

не би трябвало :)

Автор:  ji4ka [ Сря Юли 02, 2008 12:22 pm ]
Заглавие: 

ANSEL блокира само входната страна на цифровия пин - сиреч ако се мъчиш да четеш на тоя пин логически сигнал , ще ти връща винаги 0. Може би затова не ти чете бутоните. Затова преди да четеш от пина трябва да нулирваш съответния ANSEL бит, поне по време на четенето.

Автор:  bobyper [ Сря Юли 02, 2008 1:30 pm ]
Заглавие: 

acronym написа:
Съдейки по това:

Изображение

не би трябвало :)

Наточих и разгледах pdf-a. Наистина има нещо объркващо. Въпроса е при тази ситуация:

Код:
movlw   B'00100011'
movwf   ANSEL

дали RA5 (AN4) работи като аналогов вход. Ако НЕ работи значи pdf-a и PIC-a са си наред.

Автор:  ji4ka [ Сря Юли 02, 2008 11:24 pm ]
Заглавие: 

bobyper написа:
...дали RA5 (AN4) работи като аналогов вход. Ако НЕ работи значи pdf-a и PIC-a са си наред.

ANSEL не влияе на работата на аналоговата част, а само на цифровата част на пина и то само като вход. Но и с тия r-m-w портове понякога се получават големи изненади.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/