Периферийный вывод PIC32 для цифрового выхода

Я использую PIC32MX250F128B для проекта по управлению несколькими цифровыми выходами; Мне нужно управлять цифровым выходом около 13-14 контактов. (используя приведенный ниже код).

  • Работают следующие контакты: RA0, RA1, RB0, RB1, RB2, RB3, RB10, RB11, RB13, RB14, RB15.

  • Эти контакты не имеют: RA2, RA3, RA4, RB4, RB5, RB7, RB8, RB9

Под «не работает» я подразумеваю, что выходного напряжения вообще нет, а просто отключенное состояние (тогда как «рабочие» контакты успешно переключаются с высокого на низкий). Моя теория о том, почему выводы не работают, заключается в том, что для выводов требуется дополнительный выбор периферийного регистра, чтобы настроить их для работы в качестве общих выводов ввода-вывода. Я не уверен, что это правильно, но гугление и тестирование не дали никаких результатов, а техническое описание не очень помогло.

void main() {
  mPORTBClearBits(BIT_4 | BIT_5 | BIT_7 | BIT_8 | BIT_9);
  mPORTBSetPinsDigitalOut(BIT_4 | BIT_5 | BIT_7 | BIT_8 | BIT_9);
  mPORTAClearBits(BIT_2 | BIT_3 | BIT_4);
  mPORTASetPinsDigitalOut(BIT_2 | BIT_3 | BIT_4);

  while(1) {
    mPORTBToggleBits(BIT_4 | BIT_5 | BIT_7 | BIT_8 | BIT_9);
    mPORTAToggleBits(BIT_2 | BIT_3 | BIT_4);
  }
}

Мои биты конфигурации установлены на стандартные значения (при необходимости я могу опубликовать весь файл main.c. РЕДАКТИРОВАТЬ: см. ниже). Почему это подмножество контактов доставляет мне столько хлопот?

РЕДАКТИРОВАТЬ: вот мои биты конфигурации

#pragma config FNOSC = FRCDIV           // Oscillator Selection Bits (Fast RC Osc w/Div-by-N (FRCDIV))
#pragma config FSOSCEN = ON             // Secondary Oscillator Enable (Enabled)
#pragma config IESO = ON                // Internal/External Switch Over (Enabled)
#pragma config POSCMOD = HS             // Primary Oscillator Configuration (HS osc mode)
#pragma config OSCIOFNC = ON            // CLKO Output Signal Active on the OSCO Pin (Enabled)
#pragma config FPBDIV = DIV_1           // Peripheral Clock Divisor (Pb_Clk is Sys_Clk/1)
#pragma config FCKSM = CSDCMD           // Clock Switching and Monitor Selection (Clock Switch Disable, FSCM Disabled)
#pragma config WDTPS = PS1048576        // Watchdog Timer Postscaler (1:1048576)
#pragma config WINDIS = OFF             // Watchdog Timer Window Enable (Watchdog Timer is in Non-Window Mode)
#pragma config FWDTEN = ON              // Watchdog Timer Enable (WDT Enabled)
#pragma config FWDTWINSZ = WINSZ_25     // Watchdog Timer Window Size (Window Size is 25%)
// DEVCFG0
#pragma config JTAGEN = ON              // JTAG Enable (JTAG Port Enabled)
#pragma config ICESEL = ICS_PGx1        // ICE/ICD Comm Channel Select (Communicate on PGEC1/PGED1)
#pragma config PWP = OFF                // Program Flash Write Protect (Disable)
#pragma config BWP = OFF                // Boot Flash Write Protect bit (Protection Disabled)
#pragma config CP = OFF   

Ответы (2)

Я подозреваю, что это ваши биты конфигурации, единственное, что вы не опубликовали.

  • RA2/3 — основные выводы генератора.
  • RB4/RA4 — выводы вторичного генератора.
  • RB5/7/8/9 - JTAG.

На все эти контакты влияют биты конфигурации.

Редактировать: теперь у нас есть ваши биты конфигурации, я могу это подтвердить:

  • #pragma config POSCMOD = HS // Конфигурация первичного генератора (режим HS osc)
  • #pragma config OSCIOFNC = ON // Выходной сигнал CLKO активен на выводе OSCO (включен)
  • #pragma config FSOSCEN = ON // Включение вторичного генератора (включено)
  • #pragma config JTAGEN = ON // JTAG Enable (JTAG Port Enabled)

Все те, которые включены или не отключены специально, будут переопределять любые другие функции на этих контактах.

Это сработало, я отключил JTAG и вторичный генератор. Я не знал, что JTAG использует все эти контакты. Большое спасибо. Я бы проголосовал за ваш ответ, но у меня немного низкая репутация

См. таблицы на стр. 60 и 61 в PDF-файле, на который вы ссылаетесь, для всех регистров, которые могут повлиять на порт A или порт B, и убедитесь, что все они верны (всего около 20 регистров). Например, для ПОРТБ:

введите описание изображения здесь