|
Глючит 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 16 2009, 20:23
|
Участник

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

|
Гыг! Именно это я и сделал. На МК поставил 9600, на ПК 19200. Кроме того, на МК поставил 8 бит данных, а на ПК - 7 бит. И заработало.  Только я не понял: 1) Почему заработало? Ещё можно предположить, что МК работает на 1 Мгц (щас полезу в документацию), то при чём тут количество бит данных? (если биты данных на МК и ПК сделать равными, то вместо 0 выдаётся 128, вместо 1 - 129 и т.п.) 2) Как передать 8-битную структуру? Сейчас, выходит, передаётся по 7 бит (?). 3) Как вы поняли, что скорость передатчика вдвое ниже скорости приёмника? Потому два бита подряд дублируются? Но почему передача начинается с 3-го бита, а не с 7-го?
|
|
|
|
Сообщений в этой теме
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 SysRq Исключительно повезло, что оно работает.
Больше н... May 16 2009, 20:30 uuu2 Ознакомился. Как оказалось, передача всё-таки рабо... May 16 2009, 22:49 DpInRock Мама дорогая.
В древности отроков, которые даташи... May 16 2009, 23:21 uuu2 Цитата(DpInRock @ May 17 2009, 03:21) Убе... May 17 2009, 00:19  aaarrr Цитата(uuu2 @ May 17 2009, 04:19) Мне инт... May 17 2009, 00:35 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
|
|
|