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

 
 
> Как правильно настроить UART 2313 + 2.4576МГЦ?
The Fresh
сообщение Apr 11 2007, 21:00
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 146
Регистрация: 3-12-06
Пользователь №: 23 071



Зашил программу в микруху, которая должна выдавать данные через UART + кабель USB шный от телефона для согласования уровней. Запустил терминал на скорость 19200, а там данные приходят, но не те которые отсылаются, они повторяются т.е не хаотичные. В регистр для скорости занес UBRR = 7 (для скорости 19200) расчитывал по формуле F_CPU/(UART_BAUD_RATE*16l)-1. Какие факторы могут влиять, кроме программных? Шнурок вроде рабочий потому как использовал его с уартом блютус чипа там таких косяков не было.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
The Fresh
сообщение Apr 12 2007, 04:19
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 146
Регистрация: 3-12-06
Пользователь №: 23 071



Что за бит, в таблице служебных регистров из даташита микрухи никакого упоминания. Может в проге косяк, я ее немного правил т.к. под старый компилятор были заточены некоторые функции.


$0C ($2C) UDR UART I/O Data Register 40
$0B ($2B) USR RXC TXC UDRE FE OR - - - 40
$0A ($2A) UCR RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8 41
$09 ($29) UBRR UART Baud Rate Register 43
$08 ($28) ACSR ACD - ACO ACI ACIE ACIC ACIS1 ACIS0 44

const char szATZ[] PROGMEM = "bla bla bla";

void UART_Init(void)
/* initialize uart */
{
/* enable RxD/TxD and ints */
UCR =(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
/* set baud rate */
UBRR = (unsigned char)UART_BAUD_SELECT; //=7
}

void UART_outstr(char* psz)
{
unsigned char i = 0;
while(1)
{
char c = psz[i];
if(!c)
break;
UDR=c;
loop_until_bit_is_set(USR, UDRE);
i++;
}
}
Go to the top of the page
 
+Quote Post
nss
сообщение Apr 12 2007, 09:08
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 15-03-06
Пользователь №: 15 277



Цитата(The Fresh @ Apr 12 2007, 05:19) *
Что за бит, в таблице служебных регистров из даташита микрухи никакого упоминания. Может в проге косяк, я ее немного правил т.к. под старый компилятор были заточены некоторые функции.
$0C ($2C) UDR UART I/O Data Register 40
$0B ($2B) USR RXC TXC UDRE FE OR - - - 40
$0A ($2A) UCR RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8 41
$09 ($29) UBRR UART Baud Rate Register 43
$08 ($28) ACSR ACD - ACO ACI ACIE ACIC ACIS1 ACIS0 44

const char szATZ[] PROGMEM = "bla bla bla";

void UART_Init(void)
/* initialize uart */
{
/* enable RxD/TxD and ints */
UCR =(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
/* set baud rate */
UBRR = (unsigned char)UART_BAUD_SELECT; //=7
}

void UART_outstr(char* psz)
{
unsigned char i = 0;
while(1)
{
char c = psz[i];
if(!c)
break;
UDR=c;
loop_until_bit_is_set(USR, UDRE);
i++;
}
}

А почему вы думаете, что за концом psz будут нули.

вот например код отправки блока
typedef usigned char BYTE;
typedef unsigned int WORD;

void UART0_txdata(const void *buf, const WORD n)
{
WORD i;
for(i=0;i<n;i++)
{
while(!(UCSR0A &(1<<UDRE)));
UDR0 = (BYTE) (( (BYTE *) buf)[i]);
}
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- The Fresh   Как правильно настроить UART 2313 + 2.4576МГЦ?   Apr 11 2007, 21:00
- - =GM=   Цитата(The Fresh @ Apr 11 2007, 18:00) За...   Apr 12 2007, 00:40
|- - aesok   То The Fresh: Покажите больше кода. А просто пере...   Apr 12 2007, 09:57
- - Сергей Борщ   Цитата(The Fresh @ Apr 11 2007, 20:00) Ка...   Apr 12 2007, 09:46
- - ZAO   Цитата(The Fresh @ Apr 11 2007, 22:00) Ка...   Apr 12 2007, 10:06
- - The Fresh   Сорри, что всех так озадачил, не разобрался доконц...   Apr 12 2007, 11:05
|- - Сергей Борщ   Цитата(The Fresh @ Apr 12 2007, 10:05) На...   Apr 12 2007, 12:11
|- - IgorKossak   Цитата(The Fresh @ Apr 12 2007, 11:05) Ещ...   Apr 12 2007, 17:17
|- - Сергей Борщ   Цитата(IgorKossak @ Apr 12 2007, 16:17) В...   Apr 12 2007, 17:43
- - The Fresh   Добился я того что, могу отправить данные из МК, н...   Apr 12 2007, 19:30
|- - aesok   Прочтите в avr-libc-user-manual FAQ #1 !!...   Apr 12 2007, 22:17
- - The Fresh   Эта функция работает нормально с МК данные приходя...   Apr 13 2007, 03:21
|- - aesok   Цитата(The Fresh @ Apr 13 2007, 03:21) Эт...   Apr 13 2007, 09:39
- - The Fresh   В точку попали, все заработало, безумно рад, всем ...   Apr 13 2007, 13:24


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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 00:32
Рейтинг@Mail.ru


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