Цитата(SysRq @ May 16 2009, 17:37)

Тут или код врёт, или комментарий к нему

Copy\paste - великий источник ошибок в программе.
Начинать приходится с copy/paste. А потом разбираться с кодом.

Код
#define F_CPU 2000000UL
#define USART_BAUD 19200ul
#define USART_UBBR_VALUE ((F_CPU/(USART_BAUD<<4))-1)
UBRR0H = USART_UBBR_VALUE>>8;
UBRR0L = USART_UBBR_VALUE;
[b]UCSR0C =
(0<<UPM00)|(0<<UPM01) // проверка четн.откл
|(0<<USBS0) // 1 стоп-бит
|(1<<UCSZ00)|(1<<UCSZ01) // 8 бит фрейм
|(0<<UMSEL00); // асинхронный[/b]
...
// Передача байта при нажатии кнопки
USART_vSendByte(10);
Биты регистра установил на основе данной странички (http://mcu.narod.ru/HARDANDSOFT/AVR_UART.htm). Там, правда, написано о ATMEGA128, но наименования битов в iom48p.h должны быть такими же (?).
На ПК (драйвер микросхемы FT232BL) установлено:
Код
...
FT_Current_Baud:=19200;
FT_Current_StopBits:=FT_STOP_BITS_1;
FT_Current_Parity:=FT_PARITY_NONE;
FT_Current_DataBits:=6;
Set_USB_Device_DataCharacteristics;
...
Результат передачи данных всё тот же: вместо 1 байта передается 2 неправильных.
Тут, правда я не совесем понял. Начальный и стоп-биты входят во фрейм или нет? Т.е. если я установил фрейм в 8 бит и 1 стоп-бит, то получится 6 бит данных? Правильно?
Кроме того, я посмотрел файл iom48.h
Код
#define UCSR0B _SFR_MEM8(0xC1)
#define TXB80 0
#define RXB80 1
#define UCSZ02 2
#define TXEN0 3
#define RXEN0 4
#define UDRIE0 5
#define TXCIE0 6
#define RXCIE0 7
#define UCSR0C _SFR_MEM8(0xC2)
#define UCPOL0 0
#define UCSZ00 1
#define UCPHA0 1
#define UCSZ01 2
#define UDORD0 2
#define USBS0 3
#define UPM00 4
#define UPM01 5
#define UMSEL00 6
#define UMSEL01 7
Это нормально, что биты UCSZ00 и UCPHA0 занимают одно и то же место в регистре? И почему бит UCSZ02 находится в регистре UCSR0B, а остальны 2 бита (UCSZ00 и UCSZ01) в регистре UCSR0С? Тут (http://mcu.narod.ru/HARDANDSOFT/AVR_UART.htm) все они расположены во одном регистре.
А если установить UCSZ02 в единицу (чтобы передать 9-битный фрейм), то передача реально вообще не происходит.
Цитата(SysRq @ May 16 2009, 17:37)

Ага, около того. Неплохо было бы заголовок темы сменить, а?
Можно и сменить. Только я не модератор, как я его сменю?