реклама на сайте
подробности

 
 
> AT91SAM7S256, влияние JETlink, не шлет данные по uart если подключен JETlink
mirr
сообщение Apr 11 2010, 18:56
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 10-09-09
Пользователь №: 52 279



Привет всем!!!

не могу понять странность: написал простенький проектик, в цикле моргает светодиод и отправляются данные по uart через ST232 на комп. если к МК подключен дэбаггер то все нормально работает. стоит отключить, так светодиод моргает, а данных по нет...
код работы с uart рабочий, на другой плате все ок, только там МК общается по uart с SIM300...

может у кого какие идеи есть, то подскажите, буду очень благодарен!!!!!!

CODE

void BSP_USART_Init( void )
{
CPU_INT32U pclk_freq;
CPU_INT32U baud_rate = 9600;//115200;

pclk_freq = BSP_CPU_ClkFreq(); /* Get the UART input clock frequency */

AT91C_BASE_PIOA->PIO_PDR = BSP_GPIOA_UART0;
AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_US0); /* Enable the US0 peripheral clock */

/* ---------------------- SETUP US0 ----------------------- */
AT91C_BASE_US0->US_MR = AT91C_US_USMODE_NORMAL /* RS232C mode selected */
| AT91C_US_CLKS_CLOCK /* USART input CLK is MCK */
| AT91C_US_CHRL_8_BITS /* 8 bit data to be sent */
| AT91C_US_PAR_NONE /* No parity bit selected */
| AT91C_US_NBSTOP_1_BIT; /* 1 stop bit selected */
//| (0x2 << 14); /* !!!!!!!!!! LOOPBACK !!!!!!!!! */

/* Set the USART baud rate */
AT91C_BASE_US0->US_BRGR = (CPU_INT16U)(pclk_freq / baud_rate / 16)+1;

/* ---------------- INITIALIZE AIC FOR US0 ---------------- */
/*pUS0->US_TPR = (AT91_REG)pUSBufferTX;
pUS0->US_TCR = USBUFSIZE;
pUS0->US_TNPR = (AT91_REG)0;
pUS0->US_TNCR = 0;*/

AT91C_BASE_US0->US_RPR = (AT91_REG)pUSBufferRX;
AT91C_BASE_US0->US_RCR = USBUFSIZE;
AT91C_BASE_US0->US_RNPR = (AT91_REG)0;
AT91C_BASE_US0->US_RNCR = 0;
AT91C_BASE_US0->US_PTCR = AT91C_PDC_RXTEN;

AT91C_BASE_AIC->AIC_IDCR = (1<<AT91C_ID_US0);
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_US0] = (unsigned int)UsartHandler;
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_US0] = (AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE|0x4);
AT91C_BASE_AIC->AIC_IECR = (1<<AT91C_ID_US0);

AT91C_BASE_US0->US_RTOR = 0x00FF;

AT91C_BASE_US0->US_IER = AT91C_US_TIMEOUT;// | AT91C_US_RXRDY;// | AT91C_US_ENDRX;
AT91C_BASE_US0->US_IDR = ~(AT91C_US_TIMEOUT);// | AT91C_US_RXRDY);// | AT91C_US_ENDRX);

AT91C_BASE_US0->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;

}

void BSP_Ser_WrByte (CPU_INT08U tx_byte)
{
while ((AT91C_BASE_US0->US_CSR & AT91C_US_TXRDY) == 0){ /* Wait for room in the transmit register. */
;
}

AT91C_BASE_US0->US_THR = tx_byte;

}

void BSP_Ser_WrStr (CPU_CHAR *tx_str)
{
while ((*tx_str) != 0) {
BSP_Ser_WrByte(*tx_str++);
}
}

static void AppTaskRf (void *p_arg)

{
. . .

LED_On();

while (DEF_TRUE)
{
while(ind)
{
str[4 - ind] = ReadData();
ind--;
}
Reset_Fifo();
ind = 4;

BSP_Ser_WrStr(str);

if (Crc8(str, 3) == str[3])
{
LED_Toggle();
}
memset(str,0,5);

}
}


Прикрепленный файл  shema.sch ( 160 килобайт ) Кол-во скачиваний: 82


Сообщение отредактировал aaarrr - Apr 12 2010, 06:52
Причина редактирования: Оформление цитаты исходника
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 05:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016