Цитата(aesok @ Nov 19 2008, 13:50)

Пожалуйста замените идеоматические выражения "вполне посылается", "совершенную несуразицу" и "вполне нормально" четкими описанием того что вы наблюдаете. Это технический форум а не литературный, или эфирная среда общества экстрасенсов.
Анатолий.
Как определено InitLcd?
Извиняюсь если непонятно выразился
1) посылается означало: что отправили с контроллера то и получили на компьютере
2) несуразица выглядела различными символами ни коим образом не похожих на те символы, которые должны были быть отправлены МК на ПК.
3)prog_char InitLcd[]="initialization...";//инициализация
Цитата(Qwertty @ Nov 19 2008, 16:34)

Вот еще вопрос - откуда 8L взялась? Вы в каком формате baudrate передаете функции инициализации?
И зачем в функции ВЫЧИСЛЯТЬ значение регистров UBRR1x?
Я использую в хидере -
#define BAUD9600 (uint16_t)((F_CPU/(16*9600UL))-1)
Потом просто передаю это значение в функцию. Обратите внимание на расчет. Вы используете константу 8UL, которая нужна для Double Speed. А судя по неустанавливаемому биту U2X в UCSR1A используете обычный режим.
Извиняюсь, когда правил чтоб выложить случайно удалил эту строчку
void TDebugUSART::InitUSART(uint32_t baudrate)
{
/* Enable double speed */
UCSR1A = (1 << U2X1);
/* Enable receiver, transmitter and interrupts */
UCSR1B = (1 << RXEN1) | (1 << TXEN1) | (1 << RXCIE1);
/* 8 bit data */
UCSR1C = (1 << UCSZ11) | (1 << UCSZ10);
/* high byte of UART speed */
UBRR1H = (F_CPU /(baudrate * 8L) - 1) >> 8;
/* low byte of UART speed */
UBRR1L = (uint8_t)(F_CPU / (baudrate * 8L)-1);
}