Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91SAM7S256, влияние JETlink
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
mirr
Привет всем!!!

не могу понять странность: написал простенький проектик, в цикле моргает светодиод и отправляются данные по 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);

}
}


Нажмите для просмотра прикрепленного файла
rezident
Ни схемы, ни проекта, ни даже кусочка исходника ... опять задачка для телепатов? twak.gif
malysh_nrg
выложите проект. Уж очень на мою проблему похоже ТУТ
mirr
проблему решил. дело было в кабеле через который соединялись плата и комп, а именно плохо пропаянная земля, из-за чего уровень сигнала сдвинулся на 5В...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.