OSD на ATmega1281

Syberian

У техаса в плане контроллеров есть 2 замечательные вещи: “коде компостер” и “рф студио” и есть один недостаток: даташиты на процы пишут еще кривее, чем СТ.

varvar
Syberian:

У техаса в плане контроллеров есть 2 замечательные вещи: “коде компостер” и “рф студио” и есть один недостаток: даташиты на процы пишут еще кривее, чем СТ.

Они замечательны, пока ими не пытаешься пользоваться 😃 После чего компостер летит в топку и используется старый добрый IAR.
А кривая документация - это новое веяние, раньше (лет 10 тому назад), документация была отличная. Да, впрочем, по MSP430 документация по-прежнему хорошая. Кстати, и сайт был намного информативнее - легко можно было найти примеры и что угодно. Попробуйте сейчас это сделать - ради килобайта текста придется скачать десятки-сотни мегабайт всякой чешуи, предварительно зарегистрировавшись и подписавшись под кучей соглашений, которые читать в лом.
Но на вкус и цвет…

Вахтанг
varvar:

Правда, насчет доставки в Россию не могу 100% утверждать, что будет халява (народ утверждает, что даже бесплатных образцов не шлют), но при желании попытаться можно.

Регулярно получаю от TI бесплатные образцы. Срок доставки 3-5 дней!

Syberian:

даташиты на процы пишут еще кривее, чем СТ.

Не замечал, вроде всё понятно и привычно. Меня наоборот, даташити других производителей больше раздражает.

varvar:

ради килобайта текста придется скачать десятки-сотни мегабайт всякой чешуи, предварительно зарегистрировавшись и подписавшись под кучей соглашений, которые читать в лом.

Тоже не замечал. Специально не регистрировалься, нужную мне информацию нахожу быстро. В отличии от сайтов других производителей. Может я к нему привык?

Вахтанг

Сергей
Не совсем понятно каким образом получаете 12В из 9В. И не понятно полярность включения VD3.

msv

Это обычный step-up DC/DC для получения 12V от 3S-липо. При полностью заряженном акке преобразователь затыкается и напруга чуть больше 12 (за счет падения на D3). По мере разряда, преобразователь запускается и выдает стабильные 12В. Несколько упрощенно, конечно грамотнее сделать какой-нибудь SEPIC, но что-то сходу у меня с ним не сложилось, не стал пока заморачиваться…
ЗЫ Аа… понял недоумение… Сергей вход с выходом на схеме перепутал… 😃

ubd

Сергей вход с выходом на схеме перепутал…

Опа… Мой косяк. Ну кто собирать будет, допрёт. В крайнем случае нам вопрос задаст. Я не думаю, что полный ламер будет пытаться спаять этот девайс.

13 days later
msv

Немного не по теме…
Погода нелетная, от скуки слепил прогу захвата видео. Кроме VirtualDub проги либо слишком тяжелые для моего ноута, либо денег просят. Собственно даб устраивал, но захотелось упростить жизнь. Те сверхзадача была максимально сократить необходимые действия в поле, для старта записи. Получилось вроде- проще некуда…
Одна кнопка- превью, другая кнопка- запись. Даже имя файла генерируется автоматом, по дате/времени. Конечно всех, достаточно сложных и серьезных наворотов от даба нет, да и весь код просто ^C+^V из msdn, но вроде работает.
Вообщем кому интересно поиграться - FPVcap. Версия по сути альфа…

avisenja

Сергей, как всегда - на высоте!!!😒
Спасибо!!! Супер!!!

Vlado

Версия по сути альфа…

а она под XP? попробывал под Win7-64 чего то не того не пишет а так молодец! я в этом не разбираюсь к сожалению:(
PS папочку организовал вроде заработала

Syberian
msv:

слепил прогу захвата видео

То, что надо. Ни плюх, ни свистулек. Четко и просто. Спасибо!!!

msv

Ок, благодарю за оценку и тестирование.
Немного букв о своей суперписАлке…

  1. Несмотря на активные советы msdn использовать только VMR9, поэспериментировав, пришел к старому доброму Video Reder. Все варианты VMR, VMR7, VMR9, то не создаются на некоторых компах (может там старые DirectX, не разбирался особо), то не соединяются в графе, то еще какая фигня. Возможно я не умею их готовить, но от компа к компу, от одного устройства захвата к другому,- не угадать какой казус выйдет. Простой VR оказался самым стабильным. Может стоит дать возможность определять рендер юзеру в конфигурации, но пока не увидел в этом особого смысла.
  2. Для синхронизации потоков полностью доверился стандартному AviMux из DirectShow. Единственно, что там можно сделать (и конечно сделано) указать “мастером” аудио-поток. В принципе при нормальном захвате все более-менее синхронизировано, но при большом количестве дропов (увы, для нас актуально) все как-то непредсказуемо… То почти идеально сводится, то появляется не устраняемая со временем ощутимая рассинхронизация аудио и видео… Увы, простых решений пока не вижу, а писАть свой мукс пока не готов…
  3. Далеко не все аудио-устройства поддерживают интерфейс микшера для DirectShow. Нужно сделать интерфейс к системному микшеру с возможностью установки при запуске всех настроек, определенных в конфигурации. Это полезно и для авто-включения мониторинга звука с установлением предварительно заданных значений уровней и параметров. Надеюсь добавлю в след. версиях.
  4. Сознательно не стал делать возможность включения аудио-кодека. Экономии на копейки, а проблем может оказаться много (не совместимость форматов аудио/видео для avi-контейнера, рассинхронизации итп…).
  5. Есть и хорошая новость ( 😃 ) - прога регистрирует как положено свой граф в системе и его можно посмотреть GraphEdit и прочими подобными смотрелками (типа GraphStudio из пакета K-Lite). Весьма полезное и поучительное занятие…
9 days later
flygreen

Шыкарная прога ! Мега респект. Буду видео на нетбук теперь писать)))

msv

Тут как раз и обновление поспело: FPVCap 1.1(beta)
Со “спасибами” не торопитесь, все-таки сыровато наверное… Тем более в этом деле (куча возможных устройств с неизвестно кем писанными дровами) добиться гарантированной надежности невозможно…
Немного рекомендаций:

  1. Если девайс позволяет, выбрать формат для PAL 720x576 25fps YUY2 (или подобный).
  2. Мой любимый кодек PICVideo M-JPEG.
  3. Звук желательно захватывать тем же устройством, что и видео. Гораздо меньше проблем с синхронизацией.
  4. Для наших дел формат звука пойдет 22050Hz, 1ch, 16bps.
msv

Еще вспомнил:
5. VideoRederer более универсален, но в некоторых случаях дает в динамике артефакты или может неоправданно грузить проц. Есть смысл тогда попробовать включить в настройках “VMR”.
6. УСБ-бишные устройства захвата могут конфликтовать с другими УСБ девайсами. Например мой PCTV начинает жутко тормозить если включить USB WiFi адаптер.
7. Audio->Playback->Enable включает софтовый мониторинг звука через DirectSound устройство. Это дополнительная нагрузка на проц и неустранимая задержка (уменьшение размера аудио-буфера приводило к зависаниям графа и даже вываливание в синий экран смерти). Если нет желания с этим (с задержками) мириться можно для аудио-мониторинга просто параллельно в выходу аудио подключить активную колонку.

Syberian

Сергей, подскажите, как переназначить вывод MCI вместо окна в какую-нибудь переменную типа TImage?
Написал плеер, выковыривающий телеметрию из видео. Видео воспроизводится через TMediaPlayer, в котором в качестве Display можно назначить только оконный элемент: форму, панель, кнопку… Все бы хорошо, но если окно закрыто другим окошком или свернуто, информацию с кадра считать невозможно.

msv

Вроде для MCI нужно передавать HWND окна для отображения. Вероятно по этому TMediaPlayer.Display может быть только наследник от TWinControl, имеющий свойство Handle- по сути HWND. Конечно всех возможностей MCI не помню, но вполне может оказаться, что эта задача нерешаема…
Есть повод окунуться в DirectShow 😃, там эта задача легко решается. Даже можно не писать свой фильтр, пользовать готовый SampleGrabber.

Syberian

ага, там черт ногу сломит.
Нашел такой код:

#ifndef DIBSIZE
#define WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8)
#define DIBWIDTHBYTES(bi) (DWORD)WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount)
#define _DIBSIZE(bi) (DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight)
#define DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(_DIBSIZE(bi)) : _DIBSIZE(bi))
#endif

void PlayAvi(LPCSTR pszFile, HWND hWndOutput)
{
  AVIFileInit();
  PAVIFILE paf;
  AVIFileOpen(&paf, pszFile, OF_READ, 0);
  AVIFILEINFO afi;
  AVIFileInfo(paf, &afi, sizeof(AVIFILEINFO));
  PAVISTREAM pas;
  AVIFileGetStream(paf, &pas, streamtypeVIDEO, 0);
  AVISTREAMINFO asi;
  AVIStreamInfo(pas, &asi, sizeof(AVISTREAMINFO));
  long nFormatSize;
  AVIStreamReadFormat(pas, asi.dwStart, NULL, &nFormatSize);
  BITMAPINFOHEADER* pbihIn = (BITMAPINFOHEADER*)malloc(nFormatSize);
  AVIStreamReadFormat(pas, asi.dwStart, pbihIn, &nFormatSize);
  BITMAPINFOHEADER bihDec;
  memcpy(&bihDec, pbihIn, sizeof(BITMAPINFOHEADER));
  bihDec.biCompression = BI_RGB;
  bihDec.biBitCount = 24;
  bihDec.biSizeImage = DIBSIZE(bihDec);
  BYTE* pDecData = (BYTE*)malloc(bihDec.biSizeImage);
  memset(pDecData, 0, bihDec.biSizeImage);
  HIC hic = ICDecompressOpen(ICTYPE_VIDEO, pbihIn->biCompression, pbihIn, &bihDec);
  ICDecompressBegin(hic, pbihIn, &bihDec);
  HDC hdc = GetDC(hWndOutput);
  RECT rc;
  GetClientRect(hWndOutput, &rc);
  HDRAWDIB hdd = DrawDibOpen();
  BYTE* pInData = NULL;
  long nBufSize = 0, nSampleSize = 0;
  for (int nSample = asi.dwStart; nSample <= asi.dwStart + asi.dwLength; nSample++)
  {
    AVIStreamSampleSize(pas, nSample, &nSampleSize);
    if (nSampleSize > nBufSize)
    {
      pInData = (BYTE*)realloc(pInData, nSampleSize);
      nBufSize = nSampleSize;
    }
    AVIStreamRead(pas, nSample, 1, pInData, nBufSize, NULL, NULL);
    ICDecompress(hic, 0, pbihIn, pInData, &bihDec, pDecData);
  // ñåé÷àñ â pDecData òåêóùèé êàäð â âèäå áèòìàïêè, ðèñóåì åãî
    DrawDibDraw(hdd, hdc, 0, 0, rc.right - rc.left, rc.bottom - rc.top, &bihDec, pDecData, 0, 0, bihDec.biWidth, bihDec.biHeight, 0);
    Application->ProcessMessages();
  }
  DrawDibClose(hdd);


  ReleaseDC(hWndOutput, hdc);
  ICDecompressEnd(hic);
  ICClose(hic);

  AVIStreamRelease(pas);
  AVIFileRelease(paf);
  AVIFileExit();
  free(pInData);
  free(pDecData);
  free(pbihIn);
}

При указании пути файла и хендла формы/панельки должен воспроизводить файл. Нифига, вылетает на строке ICDecompress(hic, 0, pbihIn, pInData, &bihDec, pDecData); с ексепшеном ffdshow.ax. Удалил ffdshow - дает просто черный экран.

===
еще нашел dspack, попробую его.

msv

Олег, имхо все эти библиотеки (в тч. MCI) по сути софтовые интерфейсы к этому. А зачем нам посредники? 😃 Конечно реальное приложение будет посложнее, вместо RenderFile придется свой граф собирать, но Intelligent Connect сделает всю самую сложную работу.
//-------------------------------------
Обновление FPVcap_1.2(beta). Исправлен тексты сообщений о ошибках, и вылеты на исключения при отсутствии железки захвата. Никаких принципиальных изменений.

28 days later
Vlado

Special… в свете последних достижений MSV сделал антенку для DX приложений на диапазон 400МГц. Измереный gain ~ 7dB, КНД порядка 9dB, ну и на модельке диполь с gain 2-5dB. ИМХО довольно перспективно, на какую сотню другую км потянет, обенно если тракт профессиональный, от какой либо р.станции:)

ubd

А чертёжик антенны можно?

ну и на модельке диполь с gain 2-5dB

И на самолете, обычный четверть волновый диполь?
Разве есть разница между, просто штырьком четверть волны?
И как определили 2-5 db.

И ещё вопрос, поляризация какая подразумевается?