roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 фев 2025, 23:01

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Скорость UART (Mega162)
СообщениеДобавлено: 14 ноя 2007, 17:12 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2006, 17:09
Сообщения: 664
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов
Может кто сталкивался - работает только до 38000бод. 9600, 19200 - замечательно. 57600 уже с ошибками, 115200 не один байт не попадает. Кварца нет, на внутреннем 8мгц. Не критично пока - просто не приятно ;)

Код:
#include <avr/interrupt.h>
#include <avr/io.h>

#define BAUD    9600

void UartSend(char *str) {
    char *data = str;

    while (*data) {
        while (! (UCSR0A & (1 << UDRE0)) ) {
            __asm__ __volatile__ ("nop");
        }
        UDR0 = *data;
        data++;
    }
}

void UartChar(char data) {
    while (! (UCSR0A & (1 << UDRE0)) ) {
        __asm__ __volatile__ ("nop");
    }
    UDR0 = data;
}

void UartInit() {
    unsigned int baud;

    baud = F_CPU/(16L*BAUD)-1;

    UBRR0H = (unsigned char)(baud >> 8);
    UBRR0L = (unsigned char)(baud);

    UCSR0B = (1 << RXEN0) | (1 << TXEN0);
    UCSR0C = (1 << URSEL0) | (1 << UCSZ01) | (1 << UCSZ00);
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 14 ноя 2007, 18:14 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Strijar писал(а):
Кварца нет, на внутреннем 8мгц.

без кварца у меня 38400 фигово шло.

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 14 ноя 2007, 18:40 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
тык там вовсе и не 8 мГц а лишь примерно...
на внутреннем кварце уарт делать гиблое дело (собсно это гуру рассказали)

Цитата:
57600 уже с ошибками

так вы табличку ошибок посмотрите
там ужо 3.7% ошибок будет(это если с номаным кварцем точным)
а у вас исчо хуже

рекомендую купить кварц с дробным значением чтобы на всех частотах иметь ошибку 0.0%


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 14 ноя 2007, 18:41 
Не в сети
Аватара пользователя

Зарегистрирован: 27 ноя 2004, 00:42
Сообщения: 3339
Откуда: совсем Москва
ФИО: Григорий
На внутреннем частота плавает (ее можно с помощью каких-то там регистров подправить, чтоб поточнее было, но на сильный эффект можно не рассчитывать). Внешний кварц хороший повесишь - все запашет как часы :)
хо, вот так мы хором =)

_________________
злой полицейский


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 14 ноя 2007, 19:30 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2006, 17:09
Сообщения: 664
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов
Ага, ясно, спасибо. Приготовлены кварцы на 16 и 20, но пока не хочу - питание 3,3в, опасаюсь, что не стабильно начнет работать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 14 ноя 2007, 22:32 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Digit правильно говорит в ДШ есть таблица с процентами ошибок для разных частот и скоростей. А на внутреннем генераторе фигово делать он не точный.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 15 ноя 2007, 10:06 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2006, 17:09
Сообщения: 664
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов
ДШ читал, таблицу видел. Что мне до тех процентов? - я-ж не знаю сколько "норма" ;) В идеале поставить бы кварц на 18.434, но уже куплены на 16 и 20.. да и фиг с ним - пока не критично, мне для отладки и 9600 хватает ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 15 ноя 2007, 10:35 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Strijar писал(а):
я-ж не знаю сколько "норма" ;) ;)


Мастер CVAVR подскажет ! :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 15 ноя 2007, 11:22 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
вопрос как говорится в тему, если я поставлю два кварца одинаковых на двух мк и налажу обмен межу ними по UART ошибок по идее не должно быть , кто нибудь пробовал ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 15 ноя 2007, 11:25 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2006, 17:09
Сообщения: 664
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов
Да. Не важна какая скорость - хоть 58001 бод ;) главное что-бы второй ту же использовал


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 15 ноя 2007, 13:54 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2007, 19:23
Сообщения: 1058
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК
А в 162 разве UART, а не USART?
Можно мультипроцессорную конфигурацию забаловать.

_________________
I live My life!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 16 ноя 2007, 00:27 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2006, 17:09
Сообщения: 664
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов
SSG писал(а):
А в 162 разве UART, а не USART?


Если чесно - не вижу разницы ;) А мультипроцессорную конфигурацию ИМХО проще делать на SPI


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 16 ноя 2007, 01:02 
Не в сети
Аватара пользователя

Зарегистрирован: 27 ноя 2004, 00:42
Сообщения: 3339
Откуда: совсем Москва
ФИО: Григорий
Strijar писал(а):
А мультипроцессорную конфигурацию ИМХО проще делать на SPI


Это почему еще? :) Это к каждому процику тянуть отдельный CS? ...проводов не напасешься! И портов! :) I2C рулит! :)

_________________
злой полицейский


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 16 ноя 2007, 01:32 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2006, 17:09
Сообщения: 664
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов
Digit писал(а):
Это почему еще? :) Это к каждому процику тянуть отдельный CS? ...проводов не напасешься! И портов! :) I2C рулит! :)


Ну тогда уж RS-485! ;) Не везде есть I2C.. а ноги можно сэкономить с помощью дешифратора - на 4 ноги можно повесить 16 CS, на 5 ног уже - 32 ;) Творчески надо мыслить!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скорость UART (Mega162)
СообщениеДобавлено: 16 ноя 2007, 01:40 
Не в сети
Аватара пользователя

Зарегистрирован: 27 ноя 2004, 00:42
Сообщения: 3339
Откуда: совсем Москва
ФИО: Григорий
Та ну брось! :) Практически во всех атмеловских чипах (что поновее) есть I2C (он же TWI). На худой конец, есть USI, который конфигурируется на работу в режиме TWI.
А дешифратор - это лишний корпус на плате...
Что же касается RS-485, так я бился - хотел сделать переходничок I2C на две витые пары (RS-485), но что-то не вышло и я забросил. Так бы было кашерно :D Нравится мне, что в I2C мультимастер поддерживается и есть арбитраж на шине. И не нравится, что к помехам не стойкая шина. А вот скрестить если с RS-485, то будет гуд - и помехоустойчиво, и реализация I2C на "железном" уровне, и расстояния передачи данных за счет RS-485 огромные... :crazy:

_________________
злой полицейский


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO