Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

RQ: Pic16873, PortA, проблем като вход.
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=8819
Страница 1 от 1

Автор:  NikB [ Пон Апр 25, 2011 11:38 am ]
Заглавие:  RQ: Pic16873, PortA, проблем като вход.

RQ: Pic16873, PortA, проблем като вход.

Мисля, че правилно го инициализирам:
Код:
027B   20B1           00508                 call            DisableIntr
027C   0183           00510                 clrf            STATUS              ;// IRP, RP1, RP0 = 0
027D   3000               M                 movlw   0x00
027E   009F               M                 movwf   ADCON0
027F   3000               M                 movlw   B'000000'
0280   0085               M                 movwf   PORTA
028C   1303               M                 bcf     STATUS,RP1
028D   1683               M                 bsf     STATUS,RP0
028E   3007               M                 movlw   0x07
028F   009F               M                 movwf   ADCON1
0290   303F               M                 movlw   B'111111'
0291   0085               M                 movwf   TRISA


Но не работи като вход - прилагам картинка: вижда се, че:
а) TRISA е '111111' (входове)
б) ADCCON0 е 0 (изключено АЦП)
в) ADCCON1 е 7 (всички пинове на Порт А са цифрови)
г) нивата на крачетата на порт А са високи
д) в PORTA има нули.

Къде бъркам?

Прикачени файлове:
PortA.JPG
PortA.JPG [ 143.26 KiB | Прегледано 1849 пъти ]

Автор:  michev [ Пон Апр 25, 2011 12:19 pm ]
Заглавие: 

В спецификацията, на стр. 31 е решението на проблемът ти.

Цитат:
EXAMPLE 3-1: INITIALIZING PORTA

Код:
BCF STATUS, RP0 ;
BCF STATUS, RP1 ; Bank0
CLRF PORTA ; Initialize PORTA by
           ; clearing output
           ; data latches
BSF STATUS, RP0 ; Select Bank 1
MOVLW 0x06 ; Configure all pins
MOVWF ADCON1 ; as digital inputs
MOVLW 0xCF ; Value used to
           ; initialize data
           ; direction
MOVWF TRISA ; Set RA<3:0> as inputs
           ; RA<5:4> as outputs
           ; TRISA<7:6>are always
           ; read as ’0’.

Автор:  NikB [ Пон Апр 25, 2011 12:34 pm ]
Заглавие: 

Благодаря, но не става (пробвал съм го преди да постна), впрочем, дали е 6 или 7 в ADCON1, в същата спецификация (страница 112) пише, че няма значение (в таблицата за ADCON1, за 011х).
От картинката се вижда, че на точката на прекъсване всички регистри са инициализирани ОК, напрежението на входовете е ОК, но симулатора показва 0 в регистъра на порт А.
Изключено е проблемът да е в симулатора.
Проверил съм всички споменавания на въпросните регистри в програмата - няма проблем (или не го виждам :))

Автор:  fan [ Пон Апр 25, 2011 12:52 pm ]
Заглавие: 

А компараторите, кой ще ги изключи?! :)

Автор:  NikB [ Пон Апр 25, 2011 1:04 pm ]
Заглавие: 

fan написа:
А компараторите, кой ще ги изключи?! :)
Не виждам компаратори :)

Автор:  fan [ Пон Апр 25, 2011 1:13 pm ]
Заглавие: 

Да, правилно стария без а няма компаратори (а защо го ползващ него не знам). Иначе модела който ползваш в протеуса не се вижда, да не си поставил този с а?

Автор:  NikB [ Пон Апр 25, 2011 1:15 pm ]
Заглавие: 

Странното е, че и на минимален проект има същия проблем:

Пак не работи (в първото примерче на това мясноимаше пропуск на еднo BCF STATUS, RP0 ; Select Bank 0)

Прикачени файлове:
Коментар на файл: Нова картинка
PortA1.JPG
PortA1.JPG [ 150.14 KiB | Прегледано 1834 пъти ]
Коментар на файл: Минимален проект: сорс: десетина реда от спецификацията.
PortA.rar [44.95 KiB]
139 пъти

Автор:  CarBeta [ Пон Апр 25, 2011 11:43 pm ]
Заглавие: 

Не го гледай тоя симулатор. Всичко си работи. Заради ADC'то няма как да се анимира всичко. В кода ти състоянието на порт А се записва в работния регистър, където всъщност се вижда реалното състояние на порта. Дори на твоята снимка се вижда.

Прикачени файлове:
portA.jpg
portA.jpg [ 184.33 KiB | Прегледано 1842 пъти ]

Автор:  NikB [ Вто Апр 26, 2011 8:35 am ]
Заглавие: 

Да те поживи бога на всички PIC-ове!

(Не ми е ясно защо не могат да го симулират, но няма значение :) - до сега Протеуса винаги е бил на завидно ниво :))

Автор:  head_up [ Вто Апр 26, 2011 11:38 am ]
Заглавие: 

@NikB, не знам дали има смисъл да го казвам (отново), но - зае*и ги тия "симулатори" за пикове и се хвани за хардуера.

Автор:  NikB [ Вто Апр 26, 2011 1:24 pm ]
Заглавие: 

head_up написа:
@NikB, не знам дали има смисъл да го казвам (отново), но - зае*и ги тия "симулатори" за пикове и се хвани за хардуера.

:)
Мерси за съвета :)
Ако имах добри развойни средства - така щях да направя :), но в последните 10г с PIC се занимавам инцидентно (както и с много други работи :)).
Жалко, че нямаше симулатори преди много години (преди да си купя първия PicMaster ли, PicStart ли се казваше - 350 марки от Германия - Комет още не бяха чували за Микрочип :)).

ПП Естествено, имаше и моя грешка: при прехвърлянето на функционалността от ПортБ на ПортА не съм променил един xor 0x80 на xor 0x20 (вероятно защото винаги съм ползвал последния бит в байта :) и съм се заблудил - порт А свършва на петия бит :))

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