Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ObDev USB + UART
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
hd44780
Здравствуйте.

Сделал 2 прибора:

1. Переделанный PowerSwitch из ObDev-а (HID, одна нагрузка, вкл/выкл через указанное время и пр.). Сделан на Mega8@12MHz. Работает нормально.

2. Ваттметр для электросети - Mega16@16MHz. Измеряет напряжение, ток, мощности и всё такое. Полностью развязан от сети трансформаторами. Выводит добро на собственный LCD. Также способен выдавать все результаты измерений на UART по запросу из того же UARTа. Запрос - 1 байт, ответ (результаты) - 15 байт без каких-либо шифров, CRC, подтверждений и прочих заморочек. Параметры обмена по UART - 38400, 8N1. Проверял обмен через MAX232 и обычный COM-порт компа. Всё прекрасно.

Теперь надо связать эти 2 схемы в одну, чтобы данные измерений уходили в комп по USB. Добавил работу с UART - как у японца - http://www.recursion.jp/avrcdc/cdc-232.html
CDC не делал, обмен идёт по собственному протоколу (в рамках HID). Прерывание TXCIE (передача) убрал (оно мне не нужно, в ваттметр всегда отсылается только 1 байт запроса), увеличил буфер приёма до 16 байт (у японца - 8 байт).

Контроль целостности данных ваттметра только по длине - я должен получить 15 байт.

Проблема в том, что данные часто приходят "порченные":
1. Когда использовал прерывание UART по приходу байта (знаю, что в ObDev это нехорошо) - получал "пакеты" - 12, 2, 15 байт. Т.е. годной оказывалась одна посылка из 3-х.
2. Когда работаю с UART опросом (как японец) - ещё хуже - идут пакеты примерно 2, 5, 9, 12, 15 байт. Потерь уже пятая часть.

Скорость UARTа менять пока не пытался.

Можно ли как-то это дело поправить? Или только ставить "железный" USB контроллер?

ЗЫ
Есть USB контроллер PDIUSBD12D, и небольшой опыт работы с ним тоже есть biggrin.gif .
prottoss
ИМХО "нормальный" контроллер - с честными USB и USART самый лучший вариант. Разнообразных моделей полно и по цене и функционалу.
PDIUSBD12D в свое время была хорошая штука, но опять же в свете первого моего предложения - раритет, требующий, к тому же уйму ног МК.
Возьмите уже какой нить ARM или даже AVR (что может быть дороже wink.gif но ближе сердцу sm.gif)
hd44780
Да валяется у меня AT91SAM7X256 biggrin.gif .... Но я его ни разу не использовал, только описания всякие читал.
Да и жалко как-то такую мощу ставить на этот выключатель. Даже если я в него и ваттметр целиком запихну. Памяти в нём до хрена biggrin.gif .

А вообще - отличный повод разобраться с этим SAM7X.
prottoss
Цитата(hd44780 @ Apr 20 2012, 12:49) *
А вообще - отличный повод разобраться с этим SAM7X.
Повод разобраться вообще с ARM отличный, но SAM7X не для такой задачи, опять же ИМХО. Может лучше посмотреть в сторону STM32F1xx - и цена адекватная и как раз под Вашу задачу, думаю, подходит.
hd44780
Понятно. Спасибо.
Наверное сперва попробую связку PDI + Mega8. Просто модуль на PDI уже готовый лежит, только к процу подключить осталось.
Если не пойдёт, тогда дальше думать..

STM32 у нас по Донецку не нашёл, только с Киева заказывать. Цена - 13-14 грн, на уровне ATMega8A sm.gif
Но они ж гады, все SMD ... Бр-р
Чего DIP не делают? Невыгодно что ли ....
IgorKossak
Цитата(hd44780 @ Apr 20 2012, 11:36) *
Чего DIP не делают?

Чем быстее забудете, тем лучше. Не для спора и холивара, просто такова правда жизни.
hd44780
отож .....
prottoss
Ну так и возьмите какой нить мелконогий ARM и сделайте на нем ваттметр с USB и всякими всевозможностями sm.gif На счет ДИП-а Вы, конечно, зря боитесь - новички паяют TQFP как будто их с детсада учили sm.gif Да и, на самом деле, нет там ничего сложного - опять же гугл + ютуб Вам в помощь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.