реклама на сайте
подробности

 
 
> RS232 --> AtMega16 --> ЦАП с параллельным входом
rasstranger
сообщение May 25 2009, 15:30
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540



Нужно передать данные с последовательного порта компа (RS232, естесственно) на AtMega16, который запишет их в память и передаст через порты ввода-вывода на 12-битный цап с параллельным входом..
Никто таким не занимался? Вдруг завалялась программка для МК, желательно на ассемблере.. Ну и советы какие-нибудь приветствуются smile.gif ЦАП MAX507BCNG
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
mempfis_
сообщение May 26 2009, 07:09
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(rasstranger @ May 25 2009, 18:30) *
Нужно передать данные с последовательного порта компа (RS232, естесственно) на AtMega16...


http://atmel.com/dyn/products/app_notes.asp?family_id=607

AVR244: UART as ANSI Terminal Interface
AVR306: Using the AVR UART in C

Даже в документации на AtMega16 есть примеры рабочего кода для работы с uart (на ассемблере и С).
Задача: принять байт или слово, отправить его в паралельный порт управления ЦАП smile.gif
Найдите в приведённых апноутах (а ещё лучше в документации) инициализацию UART, приём символа из UART а дальше делайте с этим символом всё что хотите smile.gif

http://www.gaw.ru/html.cgi/txt/app/micros/avr/index.htm

Тут можно найти на русском по ключевому слову УАПП
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 26 2009, 07:16
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(rasstranger @ May 25 2009, 18:30) *
Ну и советы какие-нибудь приветствуются smile.gif

Какой нибудь совет.
Продумайте протокол передачи. Или возьмите уже придуманный.
А то сейчас начнется передача двух байт двумя посылками и барахтанье, кто там старший, кто младший.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
rasstranger
сообщение Jun 2 2009, 08:22
Сообщение #4





Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540



C USART разобрался.. только вот проблема.. ЦАП-то 12 бит, параллельный вход, то есть необходимо задействовать 2 порта ввода-вывода, а с USART принимается только 1 байт данных.. Нужно как-то считать регистр UDR по прерыванию 2 раза (старший и младший байт), затем выдать их на порты, допустим, старший в портB, младший в портC.. Одновременно, естественно, не получится, тут две команды необходимо задействовать.. Я никак толку не могу дать с этим, ничего в голову не идет..
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 2 2009, 09:12
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(rasstranger @ Jun 2 2009, 11:22) *
Одновременно, естественно, не получится, тут две команды необходимо задействовать.. Я никак толку не могу дать с этим, ничего в голову не идет..
Вы переживаете, что не можете одновременно выставить все 12 бит на ЦАП? Не переживайте. Если внимательно посмотреть в документацию на ЦАП, то можно увидеть, что у этой м/с кроме ног D0-D11 есть и другие, которые отвечают за приём кода. Есть CS и WR... В документации приведены сигналы на них при вводе кода в ЦАП.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jun 2 2009, 09:20
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(rasstranger @ Jun 2 2009, 11:22) *
... Я никак толку не могу дать с этим, ничего в голову не идет..

Ну а я что говорил? biggrin.gif

Разбейте 12 бит по 6. Останется два свободных бита в каждом байте. Ими можно закодировать, что где есть старшая половина, а где младшая. А уж как сложить биты опять, может и сумеете.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
rasstranger
сообщение Jun 2 2009, 13:24
Сообщение #7





Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540



Спасибо, вроде полегче становится.. понемногу пишется код..
Только задание мне сменили..
Никто не подскажет, как в ОЗУ МК в цифровом виде записать синусоиду, чтобы потом её передать на ЦАП?
Есть мысль записать в ячейки значения углов, при этом синусоиду над осью нужно поднять, чтоб не было отрицательных значений в самой синусоиде..
ищу в инете, нет ничего sad.gif

Вообще, общий смысл теперь таков:
В памяти микроконтроллера записана синусоида, он её выдает на ЦАП, цап преобразует в напряжение и подает на вход модуля АЦП второго МК (хотя можно и на одном все это сделать, мне кажется), где новая синусоида идет через УСАРТ в ком-порт ПК и с помощью проги Terminal by Bray 1.9b выводится график

Для второго МК я код написал(прикреплен), осталось придумать, как синусоиду реализовать...

Прикрепленный файл  mk2.rar ( 7.41 килобайт ) Кол-во скачиваний: 170


Сообщение отредактировал rasstranger - Jun 2 2009, 13:26
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 2 2009, 14:05
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(rasstranger @ Jun 2 2009, 16:24) *
В памяти микроконтроллера записана синусоида, он её выдает на ЦАП, цап преобразует в напряжение ... осталось придумать, как синусоиду реализовать...
Собственно, идею Вы уже озвучили. В памяти достаточно иметь только четверть синусоиды: в ячейки памяти заносятся коды ЦАП соответствующие значению sin через равное приращение аргумента. Смещение - прибавление к коду ЦАП некоего кода смещения... Первая четверть синусоиды: вывод через равные промежутки времени на ЦАП значения смещения плюс очередной код из массива синусов; следующая выдача - следующее значение из массива. Вторая четверть: то же, но значения из массива выбираютя начиная с конца массива - к началу. Третья и четвёртая четверти: аналогично первой и второй, но значения из массива вычитаются из смещения. Интервал между выводами на ЦАП - по таймеру или программная задержка. Значения кодов ЦАП для sin прийдётся посчитать "руками" или написать на ПК маленькую программку...
Go to the top of the page
 
+Quote Post
rasstranger
сообщение Jun 2 2009, 16:35
Сообщение #9





Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540



Интервал между выводами на ЦАП - по таймеру или программная задержка...
Ткните носом на какой-нибудь пример, как реализовать программную задержку при выводе в порт.. из задержек знаю только NOP. unsure.gif

Все сильно усложняется тем, что я учил немецкий, перевод документации для меня сущий ад sad.gif
Go to the top of the page
 
+Quote Post
rasstranger
сообщение Jun 2 2009, 19:39
Сообщение #10





Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540



Сделал синусоиду в экселе, первый лист - графики, второй - пояснения.. Частота сигнала и частота дискретизации взяты с потолка.. Попинайте посильнее, главное, по частотам smile.gif

Прикрепленный файл  _________.rar ( 5.66 килобайт ) Кол-во скачиваний: 416




Да, забыл совсем.. смысл всего этого - исследовать статические характеристики модуля АЦП, в модуле используется 8-битное преобразование, то есть синусоида должна быть более "качественная"
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 3 2009, 05:46
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(rasstranger @ Jun 2 2009, 19:35) *
из задержек знаю только NOP.
Собственно, на NOP'ах задержку и делают. Вместо многих NOP пишут цикл выполнения малого (может быть одного) числа NOP'ов
Код
     mov r16, 50; число, заносимое в r16 определяет число выполнений кода ниже
delay:
     nop
     dec r16
     brne delay
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jun 3 2009, 07:09
Сообщение #12


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(rasstranger @ Jun 2 2009, 23:39) *
Да, забыл совсем.. смысл всего этого - исследовать статические характеристики модуля АЦП, в модуле используется 8-битное преобразование, то есть синусоида должна быть более "качественная"

А зачем для исследования статической характеристики синусоида? Чем пила плоха? Или это очередной диплом?
Go to the top of the page
 
+Quote Post
rasstranger
сообщение Jun 3 2009, 10:01
Сообщение #13





Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540



Диплом smile.gif

Решили просто синусоиду подать и все тут.. пилу все равно не много проще будет, просто точек поменьше чуток, а синусоида нагляднее, да и привычнее
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jun 3 2009, 10:13
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(rasstranger @ Jun 3 2009, 14:01) *
Диплом smile.gif
Решили просто синусоиду подать и все тут.. пилу все равно не много проще будет, просто точек поменьше чуток, а синусоида нагляднее, да и привычнее

Решали-то долго?
Действительно, смешно.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 3 2009, 10:27
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(rasstranger @ Jun 3 2009, 13:01) *
пилу все равно не много проще будет, просто точек поменьше чуток
Ну, да! rolleyes.gif
"Поменьше чуток" - это две: нижняя и верхняя!
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 12:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01496 секунд с 7
ELECTRONIX ©2004-2016