|
RS232 --> AtMega16 --> ЦАП с параллельным входом |
|
|
|
May 25 2009, 15:30
|
Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540

|
Нужно передать данные с последовательного порта компа (RS232, естесственно) на AtMega16, который запишет их в память и передаст через порты ввода-вывода на 12-битный цап с параллельным входом.. Никто таким не занимался? Вдруг завалялась программка для МК, желательно на ассемблере.. Ну и советы какие-нибудь приветствуются  ЦАП MAX507BCNG
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
May 26 2009, 07:09
|

Профессионал
    
Группа: Свой
Сообщений: 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=607AVR244: UART as ANSI Terminal Interface AVR306: Using the AVR UART in C Даже в документации на AtMega16 есть примеры рабочего кода для работы с uart (на ассемблере и С). Задача: принять байт или слово, отправить его в паралельный порт управления ЦАП  Найдите в приведённых апноутах (а ещё лучше в документации) инициализацию UART, приём символа из UART а дальше делайте с этим символом всё что хотите http://www.gaw.ru/html.cgi/txt/app/micros/avr/index.htmТут можно найти на русском по ключевому слову УАПП
|
|
|
|
|
May 26 2009, 07:16
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(rasstranger @ May 25 2009, 18:30)  Ну и советы какие-нибудь приветствуются  Какой нибудь совет. Продумайте протокол передачи. Или возьмите уже придуманный. А то сейчас начнется передача двух байт двумя посылками и барахтанье, кто там старший, кто младший.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jun 2 2009, 08:22
|
Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540

|
C USART разобрался.. только вот проблема.. ЦАП-то 12 бит, параллельный вход, то есть необходимо задействовать 2 порта ввода-вывода, а с USART принимается только 1 байт данных.. Нужно как-то считать регистр UDR по прерыванию 2 раза (старший и младший байт), затем выдать их на порты, допустим, старший в портB, младший в портC.. Одновременно, естественно, не получится, тут две команды необходимо задействовать.. Я никак толку не могу дать с этим, ничего в голову не идет..
|
|
|
|
|
Jun 2 2009, 09:12
|

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

|
Цитата(rasstranger @ Jun 2 2009, 11:22)  Одновременно, естественно, не получится, тут две команды необходимо задействовать.. Я никак толку не могу дать с этим, ничего в голову не идет.. Вы переживаете, что не можете одновременно выставить все 12 бит на ЦАП? Не переживайте. Если внимательно посмотреть в документацию на ЦАП, то можно увидеть, что у этой м/с кроме ног D0-D11 есть и другие, которые отвечают за приём кода. Есть CS и WR... В документации приведены сигналы на них при вводе кода в ЦАП.
|
|
|
|
|
Jun 2 2009, 13:24
|
Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540

|
Спасибо, вроде полегче становится.. понемногу пишется код.. Только задание мне сменили.. Никто не подскажет, как в ОЗУ МК в цифровом виде записать синусоиду, чтобы потом её передать на ЦАП? Есть мысль записать в ячейки значения углов, при этом синусоиду над осью нужно поднять, чтоб не было отрицательных значений в самой синусоиде.. ищу в инете, нет ничего  Вообще, общий смысл теперь таков: В памяти микроконтроллера записана синусоида, он её выдает на ЦАП, цап преобразует в напряжение и подает на вход модуля АЦП второго МК (хотя можно и на одном все это сделать, мне кажется), где новая синусоида идет через УСАРТ в ком-порт ПК и с помощью проги Terminal by Bray 1.9b выводится график Для второго МК я код написал(прикреплен), осталось придумать, как синусоиду реализовать...
mk2.rar ( 7.41 килобайт )
Кол-во скачиваний: 170
Сообщение отредактировал rasstranger - Jun 2 2009, 13:26
|
|
|
|
|
Jun 2 2009, 16:35
|
Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540

|
Интервал между выводами на ЦАП - по таймеру или программная задержка... Ткните носом на какой-нибудь пример, как реализовать программную задержку при выводе в порт.. из задержек знаю только NOP. Все сильно усложняется тем, что я учил немецкий, перевод документации для меня сущий ад
|
|
|
|
|
Jun 2 2009, 19:39
|
Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540

|
Сделал синусоиду в экселе, первый лист - графики, второй - пояснения.. Частота сигнала и частота дискретизации взяты с потолка.. Попинайте посильнее, главное, по частотам 
_________.rar ( 5.66 килобайт )
Кол-во скачиваний: 416Да, забыл совсем.. смысл всего этого - исследовать статические характеристики модуля АЦП, в модуле используется 8-битное преобразование, то есть синусоида должна быть более "качественная"
|
|
|
|
|
Jun 3 2009, 10:01
|
Группа: Новичок
Сообщений: 9
Регистрация: 25-05-09
Пользователь №: 49 540

|
Диплом  Решили просто синусоиду подать и все тут.. пилу все равно не много проще будет, просто точек поменьше чуток, а синусоида нагляднее, да и привычнее
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|