Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
22.05.2009, 04:03
|
|
Прохожий
Регистрация: 22.05.2009
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
UART AVR прошу совета
доброго времени суток, всем читающим эту тему.
Я пишу диплом и перед мной поставлена задача запрограммировать МК,этим я раньше не занимался.
поэтому возникает множество вопросов, надеюсь здесь получить на них ответы и умные советы.
а вот и сама Задача:
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 [/color]((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 ЦАПа, так же в схеме используется демодулятор ,помоему, как раз для чередования выходных сигналов,но точно не уверен)
собственно, Как настроить такую передачу???
заранее спасибо.
___________________________________
-- Прилагается рисунок: --
|
|
|
|
22.05.2009, 08:52
|
|
Заблокирован
Регистрация: 05.12.2006
Сообщений: 4,033
Сказал спасибо: 169
Сказали Спасибо 387 раз(а) в 281 сообщении(ях)
|
HTML хорошо знаете.. и применяете..
Си, правда немого сложнее.. но ничего..
|
|
|
|
22.05.2009, 18:28
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Для оформления прилагаемого кода используй тэг Code.
Смени название темы или удалю !!!!
__________________
Осторожно , злой кот
|
|
|
|
22.05.2009, 21:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Зачем так грубо, котяра ?
Человек искренний на всю голову - иначе бы он зарегился бы под женским ником и все такое. лично я вообще не понимаю, что он хочет, это у нас vo1 экстрасенс...
|
|
|
|
22.05.2009, 22:25
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Сообщение от urry
|
Зачем так грубо, котяра ?
.
|
Думаешь?
Мне сначала показалось что это авр123 косит под студента...
__________________
Осторожно , злой кот
|
|
|
|
22.05.2009, 23:00
|
|
Заблокирован
Регистрация: 05.12.2006
Сообщений: 4,033
Сказал спасибо: 169
Сказали Спасибо 387 раз(а) в 281 сообщении(ях)
|
Люблю шутить..
Не обижаюсь, и если.. "шутят"..
Ибо это есть "иммунитет" от нашей "интересной" жизни.
...
Да, автор темы.. хочет.. и соответствует имхо своему логину.. ( И поэтому, надеюсь - тоже не обидится..).
И ничего плохого в этом нет, наоборот..
...
ЗЫ. Не против, если уважаемые модераторы посчитают мой пост ( или другие..) флудом.. и удалят его..
|
|
|
|
24.05.2009, 14:41
|
|
Прохожий
Регистрация: 22.05.2009
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от vo1
|
HTML хорошо знаете.. и применяете..
|
свой стиль в посте, я использовал исключительно, для выделения основных моментов, извините если перестарался...
Сообщение от dosikus
|
Для оформления прилагаемого кода используй тэг Code.
|
сделано
Цитата:
|
Смени название темы или удалю !!!!
|
сменил, но не понял чем не понравилось предыдущая тема("программа для диплома (help me)?")
Сообщение от urry
|
Человек искренний на всю голову ...
лично я вообще не понимаю, что он хочет, это у нас vo1 экстрасенс...
|
да, я действительно искренний.
И я хочу решить задачу которая написана выше, и что бы кто нибудь в этом мне помог. больше нечего.
Сообщение от dosikus
|
Мне сначала показалось что это авр123 косит под студента... icon_lol.gif
|
нет, я не авр123.
Сообщение от vo1
|
Люблю шутить.. icon_wink.gif
Не обижаюсь, и если.. "шутят".. icon_smile.gif
|
я то же, не обижаюсь.
|
|
|
|
24.05.2009, 15:11
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Смени название на более информативное .
Помогите , хелп и т.д . удаляю .
__________________
Осторожно , злой кот
|
|
|
|
24.05.2009, 15:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: прошу совета ...
Сообщение от v_fokuse
|
перед мной поставлена задача запрограммировать МК, этим я раньше не занимался.
ATmega128L
|
Как раз для начинающих с нуля я написал краткий курс - первые шаги самоучитель по AVR - http://avr123.nm.ru proavr.narod.ru
Там же во множестве - Библиотеки для скачивания книг на русском языке по микроконтроллерам и электронике, технике, навигации.
Значительно поможет вам в программировании и отладке супер программа PROTEUS ! - он моделирует работу электроники и микроконтроллеров - быстрый старт и скачать PROTEUS на - http://proteus123.narod.ru proteus123.narod.ru
Настройка USART в мастере кода CVAVR довольно проста - подробнее о программировании приема и передачи UART AVR в задаче 5 курса по AVR - http://avr123.nm.ru/z5.htm proavr.narod.ru/z5.htm
-- Прилагается рисунок скриншот мастера настройки AVR в CVAVR : --
kazus.ru/nuke/users_images/22052009/4450847.jpg
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
Последний раз редактировалось avr123-nm-ru; 01.03.2010 в 17:43.
|
|
|
|
24.05.2009, 16:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Из вашего первого поста я не понял ничего. Нарисуйте схему устройства квадратиками, что куда идет и зачем это нужно. Все, что я понял - вы не знаете, как вывести куда-то побайтно через уарт данные в формате флоат. Зачем в программе Вы делаете сравнение, если можно записать формулой - тоже вызывает недоумение.
Чтобы вывести побайтно флоат - я вижу 2 метода
1. Преабразуйте число в массив ASC символов и выводите побайтно каждый символ - число 31 будет записано как 0х33 0х31
2. Размер флоат - в зависимости от условий - 24 или 32 бита.
Через юнион
Код:
|
union {
struct{
unsigned char l;
}byte[4];
float fl;
}un;
un.fl=12.34;
for(i=0;i‹4;i++){
send_uart(un.byte[i].l);
} |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:36.
|
|