[an error occurred while processing this directive]
Толи голова кривая, то ли 2812 придумали для головной боли. SCI. Все clock на месте, из txbuf байт уходит в TXSHF ...(+) Где собака порылась?
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено начинающий 18 февраля 2004 г. 22:15


- далее не приходит в RXBUF при Loop Back test mode enable
- не выводится наружу при любых манипуляциях с регистрами управления, GPIO_MUX требуемых pinout ==1 как в datasheet...

#define TXEMPTY 0x40
#define RXRDY 0x40
/*==================================================================*/
void my_uart_init()
{


#ifdef SCI_A
PCLKCR|= 0xffff;
SCICTL1A= 0x002b; // reset uarts
SCICCRA= 0x0017;
SCICTL2A= 0x0000;
LOSPCP= 0x0007; /* LSPCLK = SYSCLKOUT / 14 == 10.714286MHz */
SCILBAUDA= 0x00ff; /* BRR= (LSPCLK/(Baud * 8)) -1; == 0x8a */
SCIHBAUDA= 0x00ff;
SCIPRIA= 0x0008;
SCIFFTXA= 0x0000;
SCIFFTXA= 0xe000;
SCIFFCTA= 0x00ff;

GPFMUX= 0x0030;
GPFDIR= 0x0030;
//#else
//PCLKCR|= 0xffff;
SCICTL1B= 0x002b; // reset uarts
SCICCRB= 0x0017;
SCICTL2B= 0x0000;
// LOSPCP= 0x0007; /* LSPCLK = SYSCLKOUT / 14 == 10.714286MHz */
SCILBAUDB= 0x00ff; /* BRR= (LSPCLK/(Baud * 8)) -1; == 0x8a */
SCIHBAUDB= 0x00ff;
SCIPRIB= 0x0008;
SCIFFTXA= 0x0000;
SCIFFTXA= 0xe000;
SCIFFCTA= 0x00ff;

GPGMUX= 0x0030;
GPGDIR= 0x0030;

#endif
return;
}
/*==================================================================================================*/
void my_putch(char c)
{
#ifdef SCI_A
while(!(SCICTL2A & TXEMPTY)) continue; /* set when register is empty */
SCICTL1A|= 0x08;
SCITXBUFA = c;
//#else
while(!(SCICTL2B & TXEMPTY)) continue; /* set when register is empty */
SCICTL1B|= 0x08;
SCITXBUFB = c;
#endif
return;
}
/*==================================================================================================*/
char my_getch(void)
{char rx_byte;
#ifdef SCI_A
while(!( SCIRXSTA & RXRDY))continue; /* set when register is not empty */
while(SCIRXSTA & 0x9c){rx_byte = SCITXBUFA;} // Ошибка при приеме
rx_byte= SCIRXBUFA;
return rx_byte;
#else
while(!( SCIRXSTB & RXRDY))continue; /* set when register is not empty */
while(SCIRXSTB & 0x9c){rx_byte = SCITXBUFB;} // Ошибка при приеме
rx_byte= SCIRXBUFB;
return rx_byte;
#endif
}
/*==================================================================================================*/
char my_getche(void)
{char c;
my_putch(c = my_getch());
return c;
}
/*==================================================================================================*/
void my_puts(const char * s)
{while(*s)
my_putch(*s++);
my_putch('\r');
my_putch('\n');
return;
}
#include
#include "uart.h"
#include "f2812.h"
void main()
{long i;
asm(" eallow ; Enable accesses to PIE control registers");
WDCR |= DISABLE_WD;
puts("hello wold");
my_uart_init();
while(1)/* write a string to stdout */
{my_putch(0xaa);
for(i=0; i<100000; i++) // Delay for PLL to stabilize
{ asm(" NOP"); }
}

}


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru