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

 
 
> ObDev USB + UART, Потеря байтов
hd44780
сообщение Apr 20 2012, 06:17
Сообщение #1


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

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Здравствуйте.

Сделал 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 .


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
hd44780
сообщение Apr 20 2012, 08:36
Сообщение #2


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

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Понятно. Спасибо.
Наверное сперва попробую связку PDI + Mega8. Просто модуль на PDI уже готовый лежит, только к процу подключить осталось.
Если не пойдёт, тогда дальше думать..

STM32 у нас по Донецку не нашёл, только с Киева заказывать. Цена - 13-14 грн, на уровне ATMega8A sm.gif
Но они ж гады, все SMD ... Бр-р
Чего DIP не делают? Невыгодно что ли ....

Сообщение отредактировал hd44780 - Apr 20 2012, 08:39


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Apr 20 2012, 11:08
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(hd44780 @ Apr 20 2012, 11:36) *
Чего DIP не делают?

Чем быстее забудете, тем лучше. Не для спора и холивара, просто такова правда жизни.
Go to the top of the page
 
+Quote Post



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

 


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


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