PIC18F4550 підтягуючі резистори RB0-RB1 Архів - Форум Мікро-Чіп

Вітаю. Використовую МК PIC18F4550, на висновках порту PORTB висять входи, щоб спростити схему друкованої плати використовуючи резистори, що підтягують. Веду написання та налагодження програми в середовищі MPLAB IDE, як дебаггер використовую поки що ISIS (Proteus7.4). Але чомусь на всіх висновках PORTB крім перших двох (RB0-1) підтягуючі резистори працюють нормально а на цих двох ніби відключені. У конфізі 300005h = 0x81 (PBADEN - 0) Ініціалізацію PORTB дроту так:

clrf PORTB clrf LATB bcf SSPCON1, SSPEN ; відключаємо модуль SSP movlw b'11111111' ; налаштовуємо висновки RB0-RB7 як входи movwf TRISB bcf INTCON2, RBPU ; включаємо підтягуючі резистори Я щось ще прогавив? Начебто нічого не повинно заважати цим висновкам використовувати pull-up. Можливо, звичайно ISIS жене, але що робити, я зараз на стадії виготовлення друкованої плати, закладати підтяжку Vdd через зовнішні резистори на ці порти чи ні? ось у чому питання.

bcf INTCON2, RBPU сам вигадав? clrf PORTB, clrf LATB сам вигадав?

Немає в документації до МК вичитав (мануал DS39632E-page 116), з приводу цього місця у мене взагалі немає сумнівів, завжди так робив ініціалізацію.

Швидше протез як завжди підбурлює. З ДШ

CLRF PORTB; Initialize PORTB by ; clearing output ; data latches CLRF LATB; Alternate method ; до clear output ; data latches MOVLW 0Eh; Set RB as MOVWF ADCON1; digital I/O pins ; (необхідний config bit ; PBADEN is set) MOVLW 0CFh ; Value used to ; initialize data ; direction MOVWF TRISB; Set RB as inputs ; RB як outputs ; RB as inputs

Швидше протез як завжди підбурлює. З ДШ

Дякую за відповідь, трохи заспокоїв також на це сподіваюся. Робитиму плату беззовнішніх підтягують якщо що перекину на інші висновки, поки що така можливість є. Заодно й перевірю.

Залишилося мати один рядок: bcf INTCON2, RBPU ; включаємо підтягуючі резистори -------------------------------------------- ----------------- Але це вже завтра. До речі, як там INTCON2 після скидання біти розставляє?

А чого не подобається? Я не особливо в асмі, але як би все правильно, очистили біт.

RBPU: PORTB Pull-up Enable bit 1 = All PORTB pull-ups є неможливим 0 = PORTB pull-ups enabled by individual port latch values

На регістри зміни поки замахуватися не будемо. А хто такі "регістри прапорів", я взагалі не в курсі.

Ой чую, новий троль росте. Див. мій піст вище.

Залишилося мати один рядок: bcf INTCON2, RBPU ; включаємо підтягуючі резистори -------------------------------------------- ----------------- Але це вже завтра. До речі, як там INTCON2 після скидання біти розставляє?

INTCON2 очищається командою clrf трохи вище, щоразу після скидання. Але ділянку коду я боюся показувати, бо знову почнете хамити мій стиль кодингу :)

На регістри конфігурації поки що замахуватися не будемо. А хто такі "регістри прапорів", я взагалі не в курсі. Пардон, я мав на увазі не ті регістри конфігурацій про які ви подумали. "Регістрами конфігурацій" я називав регістри SFR, тепер я буду більш точний. Під "регістрами прапорів" я точно так само мав на увазі регістри SFR але містять прапори(наприклад STATUS) або ж регістри користувача(введені константи) містять прапори(константи призначені бітам).

сlrf LATA bcf ADCON0, ADON; відключаємо АЦП movlw b'00001111'; налаштовуємо всі висновки ANx як дискретні вх/вих, відключаємо Vref+- movwf ADCON1 ТакДуже забув про ці рядки написати на старті топіка. АЦП вимкнено, входи працюють як дискретні.

Коротше, Морозов нехай резистори зовні паяє. Замість "гнилих". Не може бути в протеусі гнилих резисторів. Тим більше, у вас не підтягувався BR5 а у мене RB0-RB1. Усього два. Може ще якийсь функціонал цих портів перекриває pull-up?

Зібрав девайс, стоїть у щиті у повній обв'язці, до портів RB та їх підтяжок ще не дістався. Виникло нове питання, якщо модератори не проти опишу тут: Тепер у мене проблеми з входами RC4, RC5. Настроєні вони у мене як дискретні входи, але не показують поточний стан чомусь. Зараз на вході RC4, RC5 = Vdd, регістр PORTC показує 0 цих портах. Модуль USB вимкнено (USBEN = 0). Налагодження проводжу за допомогою Pickit2. Може справа в тому, що я перебуваю в режимі налагодження?

Згідно з мануалом стан бітів TRISC(4,5) не має значення, вони можуть працювати тільки як входи при відключеному USB модулі(я правильно зрозумів?) В емуляторі все працювало відмінно. Ініціалізацію проводжу так:

bcf UCON, USBEN bcf UCFG, UPUEN clrf LATC movlw b'10111110'; налаштовуємо RC1-RC5 як входи, RC6-RC7 USART, RC0 - вихід movwf TRISC Пробував змінювати стани на цих висновках з лог.0 на лог.1 , пофіг, ніяк не реагує завжди показує 0. Де я не має рацію?

Усі панове, розібрався. Треба ще додати такий рядок