СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №4/2012
ЭЛЕМЕНТЫ И КОМПОНЕНТЫ 26 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 4 2012 MDR_PORTx ➙ PD Регистр фактически содержит два отдельных 16 разрядных регистра. С его помощью можно включать или отключать триггер Шмитта на вход ных линиях портов, а также переклю чать режим работы выходного драй вера. В регистр можно записывать дан ные и считывать из него данные. Значение регистра после сброса: 0. Би ты с 0 по 15 позволяют управлять триг геромШмитта. Бит 0 соответствует ли нии Px0, бит 1 соответствует линии Px1, и так далее до 15 бита. При значе нии «0» триггерШмитта отключен, при «1» – триггер Шмитта включен. Биты с 16 по 31 позволяют перек лючать режим работы выхода. Бит 16 соответствует линии Px0, бит 1 соот ветствует линии Px1, и так далее до 15 бита. При значении «0» выход настроен как управляемый драйвер, при «1» – выход настроен как откры тый исток. У рассматриваемого микроконтрол лера достаточно сложная система так тирования. Работа с ней будет рассмот рена подробно в последующих стать ях. Чтобы можно было выполнять примеры программ, непосредственно в начале функции main следует встав лять несколько строк для настройки встроенного тактового генератора: // использовать генератор высокой частоты HSE 8 МГц как источник тактовой частоты MDR_RST_CLK >HS_CONTROL = 0x1;// разрешить работу генератора HSE while (MDR_RST_CLK >CLOCK_STATUS == 0x00) __NOP(); // ждать запус ка HSE MDR_RST_CLK >CPU_CLOCK = 0x102; // переключить HSE в 8 МГц Важно помнить, что для включения в работу порта необходимо пред варительно в регистре разрешения тактирования периферийных блоков разрешить его тактирование. Соответ ствие битов регистраMDR_RST_CLK >PER_CLOCK и названия порта: ● 21 – PORT A, ● 22 – PORT B, ● 23 – PORT C, ● 24 – PORT D, ● 25 – PORT E. Например, для включения тактиро вания порта С следует указать: MDR_RST_CLK >PER_CLOCK |= (1UL << 23); // Разрешить тактирование PORT C Пример настройки линий PC0 и PC1 порта С для работы на выход: // настроить выводы РС0 и РС1 порта С как выходы MDR_PORTC >OE |= ((1 << 0 ) | (1 << 1 )); // направ ление – выход MDR_PORTC >FUNC &= ~((3 << 0*2) | (3 << 1*2)); // функция – порт MDR_PORTC >ANALOG |= ((1 << 0 ) | (1 << 1 )); // цифровой режим MDR_PORTC >PWR &= ~((3 << 0*2) | (3 << 1*2)); MDR_PORTC >PWR |= ((1 << 0*2) | (1 << 1*2)); // медленный фронт Функции портов микроконтроллера Вывод Функция порт основная альтернативная переопределенная Порт А PA0 PA0 DATA0 EXT_INT1 – PA1 PA1 DATA1 TMR1_CH1 TMR2_CH1 PA2 PA2 DATA2 TMR1_CH1N TMR2_CH1N PA3 PA3 DATA3 TMR1_CH2 TMR2_CH2 PA4 PA4 DATA4 TMR1_CH2N TMR1_CH2N PA5 PA5 DATA5 TMR1_CH3 TMR2_CH3 PA6 PA6 DATA6 CAN1_TX UART1_RXD PA7 PA7 DATA7 CAN1_RX UART1_TXD Порт В PB0 PB0 DATA16 TMR3_CH1 UART1_TXD PB1 PB1 DATA17 TMR3_CH1N UART2_RXD PB2 PB2 DATA18 TMR3_CH2 CAN1_TX PB3 PB3 DATA19 TMR3_CH2N CAN1_RX PB4 PB4 DATA20 TMR3_BLK TMR3_ETR PB5 PB5 DATA21 UART1_TXD TMR3_CH3 PB6 PB6 DATA22 UART1_RXD TMR3_CH3N PB7 PB7 DATA23 nSIROUT1 TMR3_CH4 PB8 PB8 DATA24 COMP_OUT TMR3_CH4N PB9 PB9 DATA25 nSIRIN EXT_INT4 PB10 PB10 DATA26 EXT_INT2 Nsirout1 Порт С PC0 PC0 – SCL1 SSP2_FSS PC1 PC1 OE SDA1 SSP2_CLK PC2 PC2 WE TMR3_CH1 SSP2_RXD Порт D PD0 PD0 TMR1_CH1N UART2_RXD TMR3_CH1 PD1 PD1 TMR1_CH1 UART2_TXD TMR3_CH1N PD2 PD2 BUSY1 SSP2_RXD TMR3_CH2 PD3 PD3 – SSP2_FSS TMR3_CH2N PD4 PD4 TMR1_ETR nSIROUT2 TMR3_BLK PD5 PD5 CLE SSP2_CLK TMR2_ETR PD6 PD6 ALE SSP2_TXD TMR2_BLK PD7 PD7 TMR1_BLK nSIRIN2 UART1_RXD Порт E PE0 PE0 ADDR16 TMR2_CH1 CAN1_RX PE1 PE1 ADDR17 TMR2_CH1N CAN1_TX PE2 PE2 ADDR18 TMR2_CH3 TMR3_CH1 PE3 PE3 ADDR19 TMR2_CH3N TMR3_CH1N PE6 PE6 ADDR20 TMR2_CH4N TMR3_CH2 PE7 PE7 ADDR21 TMR2_BLK TMR3_CH2N Порт F PF0 PF0 ADDR0 SSP1_TXD UART2_RXD PF1 PF1 ADDR1 SSP1_CLK UART2_TXD PF2 PF2 ADDR2 SSP1_FSS CAN2_RX PF3 PF3 ADDR3 SSP1_RXD CAN2_TX PF4 PF4 ADDR4 – – PF5 PF5 ADDR5 – – PF6 PF6 ADDR6 TMR1_CH1 – © СТА-ПРЕСС
RkJQdWJsaXNoZXIy MTQ4NjUy