Низкая скорость com-порта (CP2102)
Добавлено: Пт фев 01, 2013 09:47:54
Спаял схему USB - UART на CP2102. Источником данных является Atmega8.
Инициализирую UART в меге следующим кодом:
Драйвер встаёт без проблем. Винда видит порт, com-порт успешно устанавливается и управляется (на ногу SUSPEND повесил светодиод).
Скорость порта в CP2102 управляется виндой:
"The data format and baud rate programmed into the UART is set during COM port configuration on the PC."
Соответственно, в настройках порта в винде стиавлю скорость 9600, кадр 8 бит, 1 стоп-бит, чётности нет, Флоу контрол тоже "нет".
Включаю всё. Запускаю PuTTY, прописываю настройки аналогичные настройкам порта в винде. Результат - ноль.
Начинаю думать. Вижу что Атмега дёргает ногой (по изменению напряжения, скопа нет), тут нормально.
Порт активируется при запуске PuTTY, светодиод горит, тут тоже всё Ок. Смотрю под лупой на ноги CP2102 и на дорожки - непропая визуально не вижу. Начинаю уменьшать скорость порта в PuTTY, что-то начинает появляться. Дохожу до 600 бод, всё приходит в норму.
Но 600 это не 9600, которые я ожидал. Проверил инициализацию в Атмеге - ошибок не нашёл. Кварц внешний, задержки формируются правильно, а скорость не та.
Подскажите, где может быть затык?
Инициализирую UART в меге следующим кодом:
Код: Выделить всё
USART_init(103);//Скорость 9600 при кварце 16 Мгц и U2X = 0
void USART_init(uint16_t ubrr_value)
{
//Устанавливаем скорость передачи
UBRRL=ubrr_value;
UBRRH=(ubrr_value>>8);
//Режим (регистр UCSRC):
//Асинхронная передача UMSEL0=0; UMSEL1=0;
cbi(UCSRC, UMSEL);
//размер символа данных 8 бит: UCSZ0=1; UCSZ1=1;
sbi(UCSRC, UCSZ0);
sbi(UCSRC, UCSZ1);
//Один стоп-бит USBS=0;
cbi(UCSRC, USBS);
//Контроль чётности отключен UPM0=0; UPM1=0;
cbi(UCSRC, UPM0);
cbi(UCSRC, UPM1);
//Нарастающий фронт сигнала XCK (на выводе TxD, ниспадающий фронт на выводе RxD) UCPOL=0;
cbi(UCSRC, UCPOL);
//Разрешаем приём и передачу (регистр UCSRB)
sbi(UCSRB, RXEN);
sbi(UCSRB, TXEN);
}
Скорость порта в CP2102 управляется виндой:
"The data format and baud rate programmed into the UART is set during COM port configuration on the PC."
Соответственно, в настройках порта в винде стиавлю скорость 9600, кадр 8 бит, 1 стоп-бит, чётности нет, Флоу контрол тоже "нет".
Включаю всё. Запускаю PuTTY, прописываю настройки аналогичные настройкам порта в винде. Результат - ноль.
Начинаю думать. Вижу что Атмега дёргает ногой (по изменению напряжения, скопа нет), тут нормально.
Порт активируется при запуске PuTTY, светодиод горит, тут тоже всё Ок. Смотрю под лупой на ноги CP2102 и на дорожки - непропая визуально не вижу. Начинаю уменьшать скорость порта в PuTTY, что-то начинает появляться. Дохожу до 600 бод, всё приходит в норму.
Но 600 это не 9600, которые я ожидал. Проверил инициализацию в Атмеге - ошибок не нашёл. Кварц внешний, задержки формируются правильно, а скорость не та.
Подскажите, где может быть затык?