Отговори на тема  [ 14 мнения ] 
Проблем с PORTA 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юни 30, 2008 10:49 am
Мнения: 6
Мнение Проблем с 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
...   


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

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


Пон Юни 30, 2008 11:29 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Цитат:
movlw B'11111111'
movwf TRISA
Айде да кажеш кой извод е изход а ?На мен ми приличат да са конфигурирани само като входове всичките на целия порт :)


Пон Юни 30, 2008 12:04 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юни 30, 2008 10:49 am
Мнения: 6
Мнение 
Да така е, това е от пробата с бутоните.
Когато е със светодиодите е така - movlw B'00101111' movwf TRISA


Пон Юни 30, 2008 12:10 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Защо 2 пъти конфигурираш TRISA регистъра - един път в порта и един път при АЦП-то ? При това с различни стойности ? Конфигурира се веднъж.


Пон Юни 30, 2008 12:14 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юни 30, 2008 10:49 am
Мнения: 6
Мнение 
ANSEL и TRISA ли ?

Ако това имаш предвид, нали веднъж трябва да определя кои изводи са аналогови входове и кои са цифрови I/O с общо предназначение, а после с трис да определя кои от тези ц ифрови I/O ще са входове или изходи съответно ? Или пак греша. Явно греша някаква дреболия, която може би не съм схванал добре :cry:

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


Пон Юни 30, 2008 12:34 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Направи си инициализацията както е в ПДФ-а на стр.179 и я проиграй - ще ти светне как стават нещата.




[/quote]


Пон Юни 30, 2008 1:10 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юни 30, 2008 10:49 am
Мнения: 6
Мнение 
Ебаси пикльото е тоя пик, как може такива номера :?
Проблема се оказа в тея редове
Код:
movlw   B'00010011'       
   movwf   ANSEL


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

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


Вто Юли 01, 2008 1:54 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
Момче, проблема е в теб! Не четеш и не тестваш достатъчно!


Вто Юли 01, 2008 4:51 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юни 30, 2008 10:49 am
Мнения: 6
Мнение 
Щом казваш :roll:

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


Сря Юли 02, 2008 9:11 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Яну 31, 2006 11:11 pm
Мнения: 295
Местоположение: София
Мнение 
acronym написа:
Щом казваш :roll:

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


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

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

Код:
movlw   B'00100011'
movwf   ANSEL


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


Сря Юли 02, 2008 10:05 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Юни 30, 2008 10:49 am
Мнения: 6
Мнение 
Съдейки по това:

Изображение

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


Сря Юли 02, 2008 12:01 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
ANSEL блокира само входната страна на цифровия пин - сиреч ако се мъчиш да четеш на тоя пин логически сигнал , ще ти връща винаги 0. Може би затова не ти чете бутоните. Затова преди да четеш от пина трябва да нулирваш съответния ANSEL бит, поне по време на четенето.


Сря Юли 02, 2008 12:22 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Яну 31, 2006 11:11 pm
Мнения: 295
Местоположение: София
Мнение 
acronym написа:
Съдейки по това:

Изображение

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

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

Код:
movlw   B'00100011'
movwf   ANSEL

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


Сря Юли 02, 2008 1:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
bobyper написа:
...дали RA5 (AN4) работи като аналогов вход. Ако НЕ работи значи pdf-a и PIC-a са си наред.

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


Сря Юли 02, 2008 11:24 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 14 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни