|
Глючит FT232BL |
|
|
|
May 15 2009, 23:42
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 23-04-09
Пользователь №: 48 156

|
ATMega48 соединена с FT232BL через TDX/RDX. По нажатию кнопки передаётся два байта на FT232BL: Код #define USART_BAUD 9600ul #define USART_UBBR_VALUE ((F_CPU/(USART_BAUD<<4))-1)
void USART_vInit(void) { // Set baud rate unsigned short int UBRRH = USART_UBBR_VALUE>>8; unsigned short int UBRRL = USART_UBBR_VALUE;
// Set frame format to 8 data bits, no parity, 1 stop bit UCSR0C = (0<<USBS0)|(1<<UCSZ00)|(1<<UCSZ00);
// Enable receiver and transmitter UCSR0B = (1<<RXEN0)|(1<<TXEN0); }
void USART_vSendByte(unsigned short int u8Data) { // Wait if a byte is being transmitted while((UCSR0A&(1<<UDRE0)) == 0); // Transmit data UDR0 = u8Data; }
unsigned short int USART_vReceiveByte() { if ((UCSR0A&(1<<RXC0)) == 0) {return UDR0;} else {return 0;} }
int main(void) // начало основой программы {
...
(ежесекундно проверяется статус кнопки, и, если кнопка нажата, то)
{ мигнуть лампочкой; USART_vSendByte(10); USART_vSendByte(15); }
} } Однако результат следующий. Во-первых, за раз отправляется только один байт. Во-вторых, он всегда равен 127 (в 7-битном режиме) или 255 (в 8-битном режиме). В-третьих, даже этот неверный байт отсылается не стабильно: в 60-70% случаев байт не отправляется, хотя лампочка мигает (т.е. условие нажатия выполняется). Кроме того, приём байта вообще не работает. Подозреваю, что причина - в неправильной работе с UART.
|
|
|
|
|
 |
Ответов
|
May 17 2009, 00:19
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 23-04-09
Пользователь №: 48 156

|
Цитата(DpInRock @ May 17 2009, 03:21)  Уберите галочку у CLKDIV8, если понипрог используете. И думайте, что МК работает на 8МГц. Типо, предположите... Да знаю я про эту галочку CLKDIV8! Мне интересно было сначала установить, какой возможен максимальный битрейт при текущих настройках тактового генератора, отладить хоть какую-то связь с FT245. А уже потом лезть в fuse bits, увеличивать частоту и т.п. Цитата(aaarrr) Чтобы обеспечить стабильную работу UART, отклонение частоты не должно превышать 1.5%. Внутренний RC без калибровки тут не подходит. Получается, внутренний генератор имеет погрешность больше 1,5%? А у внешнего кварцевого резонатора какая погрешность?
|
|
|
|
|
May 17 2009, 00:35
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(uuu2 @ May 17 2009, 04:19)  Мне интересно было сначала установить, какой возможен максимальный битрейт при текущих настройках тактового генератора, отладить хоть какую-то связь с FT245. В DS есть табличка, больше 9600 на 1MHz не получить. Цитата(uuu2 @ May 17 2009, 04:19)  Получается, внутренний генератор имеет погрешность больше 1,5%? А у внешнего кварцевого резонатора какая погрешность? Частота RC в значительной степени зависит от напряжения питания и температуры - посмотрите в DS соответствующие графики. У кварцевого резонатора погрешность составляет тысячные доли процента. Цитата(DpInRock @ May 17 2009, 03:45)  Просто совсем малопотребляющие делать с внешним кварцем не сильно кошерно. Ну, еще можно калибровать RC по часовому кварцу.
|
|
|
|
Сообщений в этой теме
uuu2 Глючит FT232BL May 15 2009, 23:42 aaarrr Код unsigned short int UBRRH = USART_UBBR_VALUE... May 16 2009, 00:29 uuu2 Угу. Исправил. Теперь глючит немного по-другому.
... May 16 2009, 12:31 SysRq Цитата(uuu2 @ May 16 2009, 03:42) Код // ... May 16 2009, 13:37 uuu2 Цитата(SysRq @ May 16 2009, 17:37) Тут ил... May 16 2009, 15:41  SysRq Цитата(uuu2 @ May 16 2009, 19:41) Код|... May 16 2009, 16:04   uuu2 Цитата(SysRq @ May 16 2009, 20:04) Не фре... May 16 2009, 19:20    aaarrr Цитата(uuu2 @ May 16 2009, 23:20) Причём ... May 16 2009, 19:40    SysRq Пока сообщение набивал, да отвлекался, все уже до ... May 16 2009, 19:51 uuu2 Гыг! Именно это я и сделал. На МК поставил 960... May 16 2009, 20:23 SysRq Исключительно повезло, что оно работает.
Больше н... May 16 2009, 20:30 uuu2 Ознакомился. Как оказалось, передача всё-таки рабо... May 16 2009, 22:49 aaarrr Чтобы обеспечить стабильную работу UART, отклонени... May 16 2009, 23:28 @Ark Цитата(aaarrr @ May 17 2009, 03:28) Чтобы... May 17 2009, 08:59 DpInRock Чисто случайно юзаю мегу48 на 9600 уже давно. Набл... May 16 2009, 23:45 DpInRock ЦитатаДа знаю я про эту галочку CLKDIV8
Ага. May 17 2009, 00:43 SysRq Цитата(aaarrr @ May 17 2009, 04:35) В DS ... May 17 2009, 14:52 aaarrr Цитата(SysRq @ May 17 2009, 18:52) ...ост... May 17 2009, 15:15 uuu2 Ну, решил я установить "более точный" вн... May 17 2009, 23:03 aaarrr Ну, бывает. Заводите внешнюю частоту и проверяйте ... May 17 2009, 23:49 uuu2 Цитата(aaarrr @ May 18 2009, 03:49) Ну, б... May 18 2009, 00:20  aaarrr Цитата(uuu2 @ May 18 2009, 04:20) При чем... May 18 2009, 00:26 uuu2 Отодрал. Заработал. Что это значит: конденсаторы н... May 18 2009, 00:42 aaarrr Цитата(uuu2 @ May 18 2009, 04:42) Отодрал... May 18 2009, 00:55 uuu2 М-да. Конденсаторы-то разные. Впаял один кондер не... May 18 2009, 01:25 aaarrr Цитата(uuu2 @ May 18 2009, 05:25) М-да. К... May 18 2009, 01:35
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|