ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
4 июля
104738
Renik (12.11.2007 10:26, просмотров: 905)
ПДП в AT91RM9200 Есть платка от аргуссофта AS9200 на AT91RM9200. В datasheet на микроконтроллер написано, что предусмотрен режим ПДП для работы с последовательным портом. Настраивал UART в 9-битный режим через PDC и контроллер завис. Однако, при настройке в восьмибитный режим через ПДП - передача работала, равно как и при настройке в 9-битный режим без ПДП. Вот листинг программы которая по идее должна посылать в порт через ПДП 9-битные символы, но не работает.(( <c> // ----- PIOB #define PIOB_PER *(unsigned int *)0xFFFFF600 #define PIOB_PDR *(unsigned int *)0xFFFFF604 #define PIOB_OER *(unsigned int *)0xFFFFF610 #define PIOB_SODR *(unsigned int *)0xFFFFF630 #define PIOB_CODR *(unsigned int *)0xFFFFF634 #define PIOB_MDDR *(unsigned int *)0xFFFFF654 #define PMC_PCER *(unsigned int *)0xFFFFFC10 // ----- UART1 #define US_CR *(unsigned int *)0xFFFC4000 #define US_MR *(unsigned int *)0xFFFC4004 #define US_CSR *(unsigned int *)0xFFFC4014 #define US_BRGR *(unsigned int *)0xFFFC4020 #define US_IDR *(unsigned int *)0xFFFC400C #define PDC_TPR *(unsigned int *)0xFFFC4108 #define PDC_TCR *(unsigned int *)0xFFFC410C #define PDC_PTCR *(unsigned int *)0xFFFC4120 unsigned short int buffer; void main() { PIOB_OER = 0xFFFFFFFF; PIOB_MDDR = 0xFFFFFFFF; PMC_PCER = 0xfffffffd; PIOB_PDR = 0xFFFFFFF0; US_MR = 0x000208C0; // Normal mode, 1 stop bit, no parity, async mode, 9 bits. US_IDR = 0xffffffff; // Disable all USART interrupts. US_BRGR = 42; US_CR = 0x000000a0; // Disable receiver, disable transmitter. US_CR = 0x0000010c; // Reset status bits, reset rx/tx. US_CR = 0x00000050; // Enable receiver, enable transmitter. buffer = 0x155; PDC_PTCR = 0x100; while(1){ PDC_TPR = (unsigned int) &buffer; PDC_TCR = 0x001; for (int i = 1; i<5535; i++){ PIOB_SODR = 0x01; //TEST_PIN; PIOB_CODR = 0x01; //TEST_PIN; } } } </c> При смене режима работы на 8-битный режим, то есть при замене строчки "US_MR = 0x000208C0;" на "US_MR = 0x000008C0;" посылки в порт идут... В чем может быть дело?