PDA

Просмотр полной версии : Электронное устройство


wut
21.04.2009, 19:21
Добрый день, появилась необходимость на базе AVR изготовить устройство, выполняющее следующие функции

1. Несложную коммуникацию по RS232 (в качестве разъема - DB9, исп. Rx, Tx, Gnd).
2.Управление выходным транзисторным ключем (сухой контакт)
3.Питание от источника 12 В через стабилизатор
4.Вывод считанного на ЖК экран.

В наличие уже есть контроллер, стабилизатор, экран + функции на С для обмена с устройством по RS232.
Жду Ваших предложений

Заранее благодарен

Shurup
21.04.2009, 23:33
так а что нужно конкретно? если все есть, то там остается только плату сделать и программу написать

voland
21.04.2009, 23:49
wut, то что Вы ищете - продается под названием DK-8070/8072. Питерская разработка на ATMega128, еще 2004го примерно года. Я такую повторил на AT90S2313, а потом на AT90S8515 (с разными кодировками). Там еще предусмотрены 24 клавиши, которые можно считывать.

wut
22.04.2009, 08:30
Shurup, да, кроме того, программа уже есть, но ее нужно адаптировать под WinAvr.
voland, спасибо за ссылку. А какая цена терминала не знаете? И у него ж нет управляющих выходов насколько я видел, зато коммуникационные возможности для нас избыточны.

voland
22.04.2009, 14:56
wut, раньше сей девайс продавался в районе 70$, если не изменяет склероз. Но сейчас это уже очень дорого, требуйте дешевле. А насчет управления - так там есть сигнал управления подсветкой - ставите на него твердотельное реле или транзистор - и вот вам то что вы хотели.
ЗЫ: эти вещи используются для АСУ, так что там такая стоимость и функциональность были весьма актуальны.

Shurup
22.04.2009, 17:18
если есть программа, схема, то остается все собрать %)
на чем и в чем написала программа?

Малышъ
22.04.2009, 17:25
[Только зарегистрированные пользователи могут видеть ссылки.] - посмотри здесь. Может найдешь чего полезного. Мне искать влом, да и некогда. Магазин харьковский с доставкой по украине.

wut
23.04.2009, 17:51
Написано на С++ в VS, но выдерну методы из класса и переделаю под функции понятные gcc.

gri
06.05.2009, 00:08
Нафик тут ООП. Скачай микроСи от микроэлектроники, там функции и для компорта и для 160н встроенные есть, тут программить то на один вечер.

wut
14.05.2009, 15:43
Нафик тут ООП. Скачай микроСи от микроэлектроники, там функции и для компорта и для 160н встроенные есть, тут программить то на один вечер.

Никто ООП использовать и не предлагает, читайте внимательней.

Плата уже кое-как сделана, нужно реализовать теперь 232 интерфейс. Вопрос актуален. Может есть кто возьмется. Жду предложений!!!

Vrungel
14.05.2009, 20:55
232-й (uart) в большинстве AVR присутствует аппратно. Что нужно реализовать? С чем нужно "общаться"? ПК?
Что значит "функции на С для обмена с устройством по RS232". Это функции для какой стороны? Контроллера или другого "собеседника".
Нужно реализовать "распознавание" кодов команд поступающих по uart, и на основе этого коммутировать ключи?
Много вопросов...

wut
14.05.2009, 22:29
Коммуникации будут происходить между контроллером и терминалом . Фактически, нужно написать для контроллера:
1 функция, которая инициализирует uart
2 функция, записывает отправляет n байт в порт (на Тх)
3 функция считывает n байт из порта. (из Rx)

Т.е. аналоги APIшным CreateFile(), ReadFile(), WriteFile() для работы с портами. Может не совсем понятно выржаюс, но не имел дело с программирование AVR, поэтому говорю на манер ПК.

Может у кого есть наработки и он может поделиться ими с поддержкой, естественно не безвозмездно.

voland
14.05.2009, 22:41
wut, в даташитах контроллеров всегда есть примеры использования UART на АСМе и Си. Многим просто непонятна ваша задача, т.к. опять несколько вопросов:
1) откуда берутся данные, которые надо отдавать в порт (SRAM, EEPROM, FLASH, программа блочно или побайтно)?
2) куда девать контроллеру данные, которые приходят из порта (SRAM, EEPROM, FLASH, программа блочно/побайтно)...
А еще хорошо при этом разработать несложный протокол обмена или взять готовый, чтобы не мучаться с ошибками передачи и прочими пакостями.

wut
14.05.2009, 23:13
Хорошо, тогда конкретнее.
Порядок взаимодействия

Шаг 1. Контроллер посылает терминалу команду запроса данных (около 20 байт, ASCII). функция формирования запроса написана.
Шаг 2. Терминал отвечает контроллеру 1 байт в случае отсутствия данных, и 58 байт в случае наличия. Если данных нет, переход на ШАГ 1.
Шаг 3. Из 58 байт значимые только 2 - они выделяются и сливаются одну двухбайтовую переменную (word, unsigned short)(эта функция уже написана)
Шаг 4. Значение переменной выводится на индикатор
Шаг 5. Если значение равно нулю, то ничего не происходит и переходим на Шаг 1. Если значение больше 0, то оно уменьшается на 1.
Шаг 6. Контроллер посылает терминалу запрос на запись обновленного числа. Величина запроса, в районе 20 байт (ф-ия формирования написана). Терминал присылает ответ - результат операции 1 байт
Шаг 7. Открывается транзисторный ключ на 100 мс (вообще, время строго не регламентировано, главное получить более ли менее вразумительный импульс).
Шаг 8. Задержка на 1 мин, переход к Шагу 1.

Все....

Vrungel
15.05.2009, 09:23
Как два пальца... :)
С понедельника могу взяться.
p.s. ася в профиле.