roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: программа для диплома (help me)
СообщениеДобавлено: 22 май 2009, 03:50 
Не в сети

Зарегистрирован: 22 май 2009, 01:24
Сообщения: 7
Откуда: penza
доброго времени суток, всем читающим эту тему.
Я пишу диплом и перед мной поставлена задача запрограммировать МК,этим я раньше не занимался.
поэтому возникает множество вопросов, надеюсь здесь получить на них ответы и умные советы.


а вот и сама Задача:

1. Написать программу для микроконтроллера ATmega128L-8AU, принимающую и передающую данные по интерфейсу RS422.
Прием данных по стандарту NMEA 0183: $HEHDT, X.X,T*hh<CR><LF> // стандарт для морской навигации ,скорость передачи 4800 бод, формат передачи 8 бит +1 стоп бит. f = 1МГц. Асинхронно.


Здесь я настраиваю USART0 использую CodeWizardAVR. Проблем вроде нет.(картинка настройки во вложении,внизу)
здесь я сомневаюсь: Прием сигнала идет на одну ножку,я программирую DDRn=...(делаю ее входм),PORTn=....(подтяжку на нее) правильно, или надо еще какие нибудь настройки, чтобы прием данных шел только с одной ножки на USART0???

2. Преобразование входных данных о курсе в соответствующее значение sin α, cos α.
То есть если на входе α=45.5(курс ), то на выходе sin α= 0,7132; cos α= 0,7009;

Вопрос: - как получить данные из USART0, что бы записать их в переменную kurs???
- в то ли место :) я вставляю нижеследующий код???

Код:
while (1)
{

float kurs,sin_k,cos_k;

if(1) //проверка условия на корректность сигнала, пока не сделано
{
if ((kurs>=0)&&(kurs<1))
{sin_k=0, cos_k=1};// преобразование курса в sin и cos
if ((kurs>=1)&&(kurs<2))
{sin_k=0.84,cos_k=0.54 };

...//и так далее проверка всего диапазона значений курса от 0 до 90.

if ((kurs>=89)&&(kurs<=90))
{sin_k=,cos_k=0.8939 };
}
else {};//если будет ошибка корректности,пока не сделано

};


Оптимальную ли я выбрал конструкцию сравнения?
И как далее передать значение sin и cos в буфер обмена???


3. Передача в формате 16 бит, причем последовательно!!! то есть сначала sin α на 16 ножек, потом cos α на эти же 16 ножек. И так каждый раз когда изменяется курс.(выходные сигналы поступают на 2 ЦАПа, так же в схеме используется демодулятор ,помоему, как раз для чередования выходных сигналов,но точно не уверен)
собственно, Как настроить такую передачу???

заранее спасибо. :friends:
____________________________________________________________


Вложения:
Комментарий к файлу: как я настраиваю USART
USART0_nastroika.jpg
USART0_nastroika.jpg [ 27.86 КиБ | Просмотров: 2470 ]


Последний раз редактировалось в_фокусе 24 май 2009, 14:54, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 22 май 2009, 09:44 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
1. куча if'ов — это неправильное решение, думаю деад все же подскажет формулу.
2. а где парсинг NMEA?
3. ни что не мешает использовать Rx отдельно от Tx, разве что скорость для одного юсарта будет одна..

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 22 май 2009, 09:55 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Vooon писал(а):
1. куча if'ов — это неправильное решение, думаю деад все же подскажет формулу.

Я в морской навигации не силён - если мне скажут что это за курс - и с чего ему соответствуют именно такие, то может быть мне даже отвечать не потребуется :lol:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 22 май 2009, 10:15 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
1. Вычислить по 90 значений синуса и косинуса, записать в таблицы, угол преобразовать в целое, выбрать значения из таблицы

или

2. Использовать математические функции sin(), cos().

1 - лучше, как по быстродействию, так и по объему памяти.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 22 май 2009, 10:30 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Учитывая, что:
1) sin(Pi/2-t)=sin(Pi/2)*cos(-t)+cos(Pi/2)*sin(-t)=cos(t);
2) cos(Pi/2-t)=cos(Pi/2)*cos(-t)-sin(Pi/2)*sin(-t)=sin(t);

Я бы хранил только по 45 значений, это еще лучше по объему памяти ;)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 22 май 2009, 19:30 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
писать лучше на бейсике, меньше проблем возникнет. ну эт канеш если нужно не шашечки.
  1. настройка уарта на бэйсике есть в вики робофорумной("минибот уроки" - ключевик); в ветке форума "авр-дос" можно подсмотреть парсинг строки
  2. используй функцию синус, косинус (подробнее справка в бейсике). конструкция попахивает унылостью :)
  3. уверен что последовательно, а не параллельно :wink: ? порт-то параллельный используется (это вопрос на засыпку :) )
    просто задвинуть байты в порт. что за демодулятор, может ему нужен особый формат передачи(клоки, например)

Добавлено спустя 1 минуту 22 секунды:
P.S> ну и дипломы нонче пошли :)

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 22 май 2009, 21:16 
Не в сети
Аватара пользователя

Зарегистрирован: 18 сен 2008, 22:02
Сообщения: 25
Откуда: Самара
прог. языки: C/C++, Pascal
в_фокусе писал(а):
по интерфейсу RS422.



А вот, если я все правильно понимаю, то в Атмелевских Атмегах организован интерфейс RS-232. А это разные вещи. RS422 и RS232 отличаются!


И зачем человеку, который в Си вроде бы что-то понимает, писать на бейсике? От чего жто лучше?


Последний раз редактировалось DarkSilence 22 май 2009, 22:51, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 22 май 2009, 21:36 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
DarkSilence писал(а):
А это разные вещи

а вот не совсем. доказательство:
Изображение
так что на софтовой стороне - один фиг.
DarkSilence писал(а):
Си вроде бы что-то понимает

ты уверен в этом? напоминаю, человек решил не использовать библиотеки или табличный метод, а просто на условных операторах (даже не case) реализовал вывод синуса. это говорит о высоких познаниях? бейсик можно выучить максимум за один день, а периферию использовать гораздо проще.

_________________
Tomorrow will be. Better


Последний раз редактировалось MiBBiM 22 май 2009, 22:57, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 22 май 2009, 21:41 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
DarkSilence писал(а):
RS422 и RS422 отличаются!

Вы так считаете? :P

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 22 май 2009, 22:52 
Не в сети
Аватара пользователя

Зарегистрирован: 18 сен 2008, 22:02
Сообщения: 25
Откуда: Самара
прог. языки: C/C++, Pascal
Опечатался малец.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 23 май 2009, 01:38 
Писали: стандарт для морской навигации?
Не уж то там у них 422-й используется.? Хотя зная наших, может и используется.
Просто щас немного интерфейсами занялся. Было бы интересно узнать какие интерфейсы на больших военных судах используются, да и вообще в военных машинах (самолеты, и пр.)?


Вернуться к началу
  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 23 май 2009, 01:47 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
CAN


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 23 май 2009, 03:18 
Не в сети
Site Admin
Аватара пользователя

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

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 23 май 2009, 13:59 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Почему мерещится? Поверь, в ракетостроении он используется, да еще их там по три канала. На платах используются гигабитные интерфейсы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программа для диплома (help me)
СообщениеДобавлено: 23 май 2009, 20:16 
Не в сети
Аватара пользователя

Зарегистрирован: 18 сен 2008, 22:02
Сообщения: 25
Откуда: Самара
прог. языки: C/C++, Pascal
Сергей прав. Очень часто CAN интерфей используется в системах управления боротвиками самолетов.
К сожалению отдал лекции по Вычислительным машинам и микропроцессорам другу. Там как раз было где какой интерфейс используется и почему именно ...


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

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


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

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


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

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