Security Tech Lviv, пока что в ваших оценках никто не нуждается. маркировать каждую команду дополнительной парочкой байт. ещё можно отсылать фото только по запросу с пк, тогда в промежутках между посылками - команды. у вас схема камера-мк-зигби-радио-загби-комп или нет, конкретизируйте задачу
MiBBiM писал(а):Security Tech Lviv маркировать каждую команду дополнительной парочкой байт. ещё можно отсылать фото только по запросу с пк, тогда в промежутках между посылками - команды. у вас схема камера-мк-зигби-радио-загби-комп или нет, конкретизируйте задачу
Именно так и есть. С байтами буду мучится но сделаю
У меня идея DC-3840 на модельку(планер или крьiло) и фотки принимаються на замле на КПК(с RS232). Связь через XBEE. Один канал я пользую для управления самолета, а другой канал для фотки. Управление камерой автономно на Мега32 (прототип на Мега128) и на самой модели. На земле передаються только картинки(никаких команд). Софт для PC сделан и работает как надо. Портирую для КПК, но там грабли с согласование сигналов.
А разве можна один и тот же XBEE разбить на несколько каналов? У меня только один.Чтоб был другой нужно еще один модуль. То что есть на http://www.codeproject.com/KB/recipes/C328R.aspx. я знал. Но вот мне нужно портировать под бейсик потом етот код
Последний раз редактировалось EdGull 16 май 2009, 21:12, всего редактировалось 1 раз.
Причина:излишнее цитирование!!! в следующий раз будет предупреждение!!!
Приветствую всех. пробую прилепить камеру С328 к меге128 и гиговой флешке. За основу взял плату от логера http://vrtp.ru/index.php?showtopic=9020&st=240 и буржуйский проект с первого поста. Проект навороченый, и для знакомства с камерой я оставил только инициализацию флехи и зацикленую запись фотографий. Сталкнулся с проблемой- фотки с разрешением 320х240 пишутся, но только штук 15 приблизительно, а далее все зависает. С разрешением 640х420-проблема. пишется только первая фотка, пока камера не инициализировалась, она имеет малый размер. Далее все виснет. Если закрыть объектив, то фотки имеют маленький размер и пишутся, открываем объектив, и все виснет.
Добавлено спустя 9 минут 36 секунд: привожу АСК от проца AA 0E 00 00 72 00 AA 0E 00 00 73 00 AA 0E 00 00 F0 F0 закончилась первая фотка (небольшого размера )
начало следуюшей полноценной фотки AA 0D 00 00 00 00 начало синхронизации AA 0E 0D 00 00 00 засинхронизировались AA 01 00 07 03 07 установили джипег AA 06 08 40 00 00 установили размер пакета AA 0D 00 00 00 00 опять засинхронизировались AA 0E 0D 00 00 00 AA 05 00 00 00 00 снапшот AA 04 01 00 00 00 гет пикче
AA 0E 00 00 00 00 подтверждение полученных пакетов AA 0E 00 00 01 00 . . . AA 0E 00 00 B5 00 AA 0E 00 00 B6 00 AA 0E 00 00 B7 00 AA 0E 00 00 B8 00 AA 0E 00 00 B9 00 AA 0E 00 00 BA 00
и все виснет
Добавлено спустя 9 минут 4 секунды: подозрения у меня на ошибку АВР-ДОСа. Файлы конфигов АВР-ДОСА и ММС стандартные, может я какие настройки АВР-ДОСа упускаю? или неправильно его инициализирую? С прогой C328Ap.exe камера работает нормально.
Добавлено спустя 9 минут 40 секунд: вобщем я монго чего попробовал, сам окончательно запутался, понимаю, что все что попробовал зараз не описать. Прошу какихнибудь советов. Кстати ситуацию усложнило отсутствие возможности на имеющейся плате организовать выдачу диагностических сообщений. но многое я диагностировал пошагово с применением имеющихся светодиодов. Неудобно конечно, но тоже выход.
А где взял исходники AVR-DOS? (Config_MMC.bas, Config_AVR-DOS.BAS). Можете сюда выложить. Как вариант отладки (посотреть где виснет) можно сделать: отключить все что связано с AVR-DOS, то есть тупо оставить процедуры общения с камерой и узнать где программа виснет
использовал исходники Config_MMC.bas, Config_AVR-DOS.BAS размещенные в папке SAMPLES, AVRDOS баскома. С этими файлами у меня нормально работает GPS логер. Пишет файлы без остановки неделю. Config_MMC.bas, Config_AVR-DOS.BAS приложенные в буржуйском проекте не пойдут. Они адаптированы под мегу32. пробовал изменять настройки Config_AVR-DOS.BAS .Положительных результатов нет. Попробую закоментировать строки связанные с AVR-DOS и терминалкой тупо продолжительно помониторить RX и TX (обмен проца и камеры). Складывается впечатление, что файл не успевает записатся на флеху. пробовал производить запись каждого полученного блока (58 байт) используя команду FLUSH, и вводил после нее допоолнительную задержку WAITMS 3 (на запись). Попутно изменяя настройки USER в файле Config_AVR-DOS.BAS разрешающие команду FLUSH. Вобщем запутался окончательно. Причем после того, как карта зависнет, повторно фотки на нее будут писаться только после форматирования, а обычный фотик после зависания флешки нормально на нее фотает и все сохраняет. Скорее всего прейдется всетаки вывести дебагинговые сообщения во второй уарт.
Вобщем сегодня закоментировал все строки, связанные с AVR_DOS. Обмен проца с камерой мониторил терминалкой. Полет нормальный, все пашет.Проблему надо искать в обмене проца с флехой.Может я не все учел в инициализации или организации записи?
добавил дебагинговые сообщения (пока теже, что в исходнике первого поста файл camera.bas )и вывел в софтовый уарт. все сообщения говорят о успешном прохождении всех этапов. осталось только добавить подпрограмму Testerrors из файла archive.bas. Может там что прояснится.
Snaphot: length } 4084.......................................................... - получена длина файла от камеры и каждая точка успешно сохраненый блок файла.............
error-OK 10 - Gbdoserror=0 после сохранения последнего блока
error-OK 11 -Gbdoserror=0 после команды FLUSH
error-OK 12 -Gbdoserror=0 после закрытия файла
Connect: try #1 NACK: AA 0D 00 00 00 00 заново попытка засинхронизироваться
done. успешно пройдена
setting CCTV resolution установка разрешения
error-OK 9 - Gbdoserror=0 после открытия файла
Snaphot: length = 11072......... - получена длина файла от камеры и зависаем после записи нескольких блоков.
Добавлено спустя 1 минуту 57 секунд: прикладываю последний исходник
Добавлено спустя 5 минут 32 секунды: виснет на этом участке
While Bytes < Filelength ' Receive all the bytes, packet after Temp = Waitkey(#2) ' packet, byte after byte. Temp = Waitkey(#2) Packetlength = Waitkey(#2) ' Get packet length (usually the same as Temp = Waitkey(#2) ' buffer length,can be less on last packet). For I = 1 To Packetlength Temp = Waitkey(#2) ' Receive and dump all packetLength bytes. Put #3 , Temp Next Temp = Waitkey(#2) ' Skip CRC. Temp = Waitkey(#2) ' Bytes = Bytes + Packetlength ' Account for bytes just received. Packet = Packet + 1 Lsb = Low(packet ) Msb = High(packet ) If Bytes = Filelength Then ' Any more data left? Print #1 , "." Call Send(&Haa , &H0E , &H00 , &H00 , &HF0 , &HF0 ) ' Send END packet before exit. Else Print #1 , "."; Call Send(&Haa , &H0E , &H00 , &H00 , Lsb , Msb ) ' Acknowledge packet and continue. End If Wend