Meteor77

"систеный Уровень Сопряжения" Мк И Пк По Usb

10 сообщений в этой теме

Meteor77    10

Доброго времени суток, форумчане!

Посоветуйте как поступить, требуется сопрячь по USB МК и ПК.

Исходные данные:

Имеется 2 вида информации, назовем их потоком А и потоком В. Поток А, размером 10МБайт, собранный за конечный интервал времени, когда ПК спал.

Поток В размером 4кБайта, получаемых за 1 сек. (В-поток реального времени). Все это "хозяйство" требуется передавать в ПК по его требованию. В ПК информация потоков А и В обрабатывается разными программами.

Теперь о системном уровне. Есть несколько вариантов передачи.

Первый и самый простой - использовать 2 устройства и "долбить" каждым свой поток. Сердито и просто, но 2 устройства.

Второй- использовать 1 устройство, в нем делать своего рода микширование или мультиплексирование данных. Очень подходит для решения задачи. Но тут свои "заморочки":

1) Если передавать "фиксированную" длину, например по 256 байт, хорошо укладывается оба потока (частями, около 200 байт потока А и 20-32 байт потока В), но после окончания передачи потока А будет долбить 200 байт пустоты. :angry:

2) Сделать "плавающую" длину, в начале передаем скажем длиной 256 байт, а после передачи потока А уходим на "короткую" по 32 байта. :unsure:

В любом случае потоки А и В дополняются признаками для их отождествления.

Теперь о главном, аппаратно-программная часть МК может решиться хорошо. А что делать с дровами. В любом случае их надо писать. Так что проще написать на фиксированную длину? Или огорошить себя такой головной болью и биться с плавающей длиной? :rolleyes:

Спасибо всем, кто откликнется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
NebsteR    743

ну можно начать с того, что в usb любой обмен происходит только по запросу хоста... не получится сделать свой протокол для usb... смотришь www.usb.org и делаешь нормальный обмен со стороны мк, для дров используешь WinDriver, затем используя готовые дрова пишешь под них софт обмена...

Изменено пользователем NebsteR

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Meteor77    10

Уважаемы NebsteR Когда я писал фразу "это хозяйство требуется передавать данные в ПК по его требованию. Я имел в виду именно ПК(читайте хост), а не как уж МК.

Далее. Что Вы называете "нормальным" обменом? Код в МК РОН -> регистр передачи данных USB?(Утрированно)

Что касаемо второй части Вашего ответа, то я ожидал нечто иное... а не просто бери и пиши софт. Интерес представляет как Лучше, Проще и Быстрее?

Кстати Ваш "софт обмена" разве не является реализацией протокола обмена, о котором я и писал?

Спасибо за ответ.

Изменено пользователем Meteor77

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
NebsteR    743
"софт обмена" разве не является реализацией протокола обмена
нет, он является реализацией обмена с драйвером...
как Лучше, Проще и Быстрее
в любом случае писать свой софт, задача специфичная...

по поводу-же длины & смешивания это уже к usb не относится, в низкоскоростном режиме фиксированный размер пакетов, в высокоскоростном фиксированная скорость реальных данных...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

Meteor77    10

2 NebsteR Ваша позиция ясна, спасибо.

Еще будут "ссображения" и предложения? :rolleyes:

Или я всех в ступор ввел? Извиняйте если это так. :unsure:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
wowa    4

Неясен вопрос обработки и розделения данных на ПК. Достаточно будет их просто уложить в два файла?? Я бы сказал что лучше их укладывать в локальную базу данных. Посылать данные можно пакетами разной длины.. усб имеет для этого несолько ендпоинтов.. Но я рекомендую использовать розмер который ближе всего подходит к маленькому блоку данных (64 байта например + на начало адрес пакета - 24 байта) а большой потом делить на маленькие и опять незабывать на адрес.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Meteor77    10
Я бы сказал что лучше их укладывать в локальную базу данных.

А вот это, мне предстоит объяснить программерам :rolleyes:

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

Если я правильно понял, то достаточно иметь одно физическое соединение, а через эндпоинты "подрубить" пакеты разной длины?

... рекомендую использовать розмер который ближе всего подходит к маленькому блоку данных...

А как прекрасно у меня складывались данные длиной на старте в 256 байт, с последующим переходом на 64 :unsure:

Спасибо. Буду учитывать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
wowa    4

Да ненадо посылать большие пакеты :) Скоросто большая - и по 64 байта ваш файл зальётся за минутку... В это же время его 60 раз прервёт ваш маленький покетик :) Так что без потери синхрона данные попадут в компа.. А можно ещё поставить на МК часы независимые и передавать с пакетом маленьким и время.. Место там будет на 6 байт... Зато потом можно будет их передать хоть сразу хоть потом и всегда сможете понять как они шли в времени.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Meteor77    10
Да ненадо посылать большие пакеты :) Скоросто большая - и по 64 байта ваш файл зальётся за минутку...

Ахха... Но тут меня сомнения разобрали. Дело в том, что если я правильно понял П.Агурова с его "Практикой программирования USB" хост запрашивает данные не чаще 1 мс. И если в ответ каждую мс будет качаться всего 64 байта, то времени потребуется Ой-ой-ой. :unsure:

Может я чаго не до недопонял? Помогите пожалуйста, не дайте сломать один тока свой мозг :rolleyes:

Изменено пользователем Meteor77

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
wowa    4

Давайте всё сделаем сначала и с блок схемой.. А то не очень понятно чего надо... Плюс описать надо как долго может быть комп выключен и что будет делаться с данными которые не поместятся в память?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • Зря ты так, очень даже неплохой КПД у линейного получается! Около 96%. При использовании одного Li-ion на один светодиод (соответственно так же при два на два).  Лучше, чем у большинства обычных DC-DC преобразователей. Чего стоят "Народные" AMC7135 . Да и, в отличии от импульсных, по мере разряда яркость гаснет плавно, что продлевает время свечения. Конечно, и в DC-DC можно встроить функционал, но если с этим туго, то это сложнааа Если при токе 750мА у тебя 3.3В, то это очень плохая подделка. Даже при токе 2А напряжение не должно превысить 3.2В! Это все не синхронные преобразователи, у них транзисторы с большими сопротивлениями, а так же ширпотребные диоды. О каком КПД может идти речь? Хочешь максимальный КПД и с импульсным преобразователем, то только повышайка "Микроконтроллер+полевик(и)" в помощь. Светодиоды последовательно.
    • @DJSLONN ,менять все что не нравится или греется это не ремонт. Ремонт делается после дефектовки,остальные действия это
    • Если в Питере, то макет БП можно придумать по-месту, наверное ))) Опишите параметры ))
    • Переделать выходной каскад http://www.imageup.ru/img6/3058453/peredelka-bp1.gif.html Или распустить косичку и перекоммутировать обмотки http://www.imageup.ru/img26/2808684/obmotki.gif.html
    • Слитие в НК идет большим током, оно мгновенно повышает напряжение НК за счет его ЭПС. Чтобы погасить этот "выброс" по входу регулирующего транзистора, ОУ должен обладать высоким быстродействием (иначе он его просто не заметит). Добился стабильности от вот такой схемы: Q3 представляет собой генератор тока около 6 мА, питающий выходные транзисторы. Если разомкнуть R3, генератор тока легко отключить и, таким образом, отключить выход блока. Я буду отключать в случае снижения напряжения питания ОУ, чтобы случайно на выход не прошло повышенное напряжение. Резисторы R2, R7 и R8 - токовый шунт, в будущем будут использоваться для снятия показаний тока отдельным ОУ. Падение напряжения - 1 В при 3 А. За счет включения после генератора тока, но до регулирующих транзисторов такой шунт практически не увеличивает общего падения напряжения на регуляторе. Недостаток такого включения - через токовый шунт течет ток нагрузочного резистора R9, который может достигать 35 мА. Позже попробую увеличить сопротивление R9, возможно это не сильно скажется на характеристиках блока (в идеале бы заменить его вообще на генератор тока, например, 10 мА). Q4 - усилитель напряжения по схеме с ОБ с сильной ООС в цепи базы (через резисторы R5 и R6). Общий коэффициент усиления по напряжению получается около 6.6. Ток каскад с ОБ не усиливает вообще, поэтому ОУ на выходе должен уметь выдавать весь ток генератора Q3. Диод D3 защищает эмиттерный переход Q4 от обратного напряжения, если на выходе ОУ вдруг будет высокое напряжение. Если его не ставить, то схему нельзя полностью отключить, выключив генератор тока Q3 - на выходе ОУ появляется +15 В, они "пробивают" эмиттерный переход Q4, поднимают напряжение на его базе, в результате чего на базу Q2 поступает положительное напряжение, которое проходит на выход блока. Цепочка C3 R13 уменьшает скорость ОУ до уровня, когда схема не возбуждается. Скорее всего номинал конденсатора в итоговой схеме надо будет корректировать, т.к. сейчас по факту делитель выходного напряжения R11 R12 собран на резисторах 10 К и 62 К. Диод D4 с другой стороны не дает выходному напряжению ОУ сильно подниматься, когда схема переходит в режим СС (на схеме пока нет элементов, отвечающих за этот режим), чтобы ОУ быстрее возвращался из него в режим стабилизации. Выходная цепочка C2 R10 также препятствует возбуждению блока. В результате при не очень высокой общей скорости ОУ выход из режима СС занимает меньше 10 мкс. На осциллограмме ниже желтая линия - выходное напряжение блока, синяя - выходное напряжение ОУ. Режим СС имитировался замыканием базы транзистора Q2 на общий провод.
    • А может там холодильник no frost? 
    • Первые включения обнажили проблему... горит предохранитель. Сначала на 2 А, потом на 5 А, при этом тестер при измерении сопротивления не показывает короткого, вообще ничего не показывает как обрыв - а в режиме прозвонки показания 334 почему-то... Вот спаял предохранитель на 10 А и сижу думаю - включать или выяснять...по идее первичный импульс, необходимый для заряда ёмкостей - вполне может такой бросок тока организовать, хоть и термистор стоит в цепи... на схеме номинал предохранителя не указан... как действовать шоб не попалить - последовательно с лампой 220 включить или ещё есть варианты ? Померял сток-исток у обеих IRF - короткое...мде...