Easyelectronics.ru

Электроника для всех
Текущее время: 16 окт 2018, 09:14

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 166 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 22 янв 2012, 15:26 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 2134
Откуда: Нальчик
SWG писал(а):
Цанга не разболтается, даже если их 3-4 гнезда, и держит штыри в себе надежно. Даже если лепестки в ней теряют упругость, трубочка не дает им разойтись. Контакт остается надежным, (особенно, если штыри, втыкаемые в цанговую гребенку, слегка развести в разные стороны через один, как зубья на пиле).

Твой подход к качеству и монументальность платы, вызывают ощущение что робота в космос готовят, ну или другая ассоциация - робот должен проработать минимум лет 100!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 22 янв 2012, 15:42 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
ShadS писал(а):
Твой подход к качеству и монументальность платы, вызывают ощущение что робота в космос готовят, ну или другая ассоциация - робот должен проработать минимум лет 100!

Да нет, просто я давно уже привык все делать хорошо. У меня некоторые поделки уже лет по 30 и больше отработали без единого ремонта. Например, частотомер, сделанный в 76г еще на 155 серии (до 40МГц, с динамической индикацией на ИН14, с памятью и гашением незначащих нулей, и уймой режимов измерения частоты, длительности, периода, отношения частот), до сих пор жив. И с разработками на работе, с 76 по 94г, (пока был электронщиком), тоже проблем никогда не было.
Первый мой компьютер, собранный в 84г, возможно, тоже еще жив (если только РФки заряд не потеряли, у них где-то 5-12лет паспортное, но году в 95 еще работали). Надо бы как-нибудь очистить от пыли да проверить...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 22 янв 2012, 16:25 
Старожил
Аватара пользователя

Зарегистрирован: 10 апр 2010, 18:47
Сообщения: 2490
Откуда: Харьков
SWG, как я понял вы пользуетесь МикроПаскалем от Микроэлектроники.
Вот мне и интересно, вы ЮАРТ используете штатный, библиотечный? А то, если я правильно понял, он не содержит ни кольцевых буферов, ни прерываний, программа зацикливается на время приемки байта?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 22 янв 2012, 16:34 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 2134
Откуда: Нальчик
SWG писал(а):
Первый мой компьютер, собранный в 84г, возможно, тоже еще жив. Надо бы как-нибудь очистить от пыли да проверить...

Кстати мой спекки (90-е годы) тоже где-то в гараже в анабиозе, дискет ГМД до сих пор штук 20 в столе лежит со всякими TR-DOS. Кстсти я к нему самодельную мышу соорудил (в арт студио использовал), полностью с нуля, не одной детальки от настоящей (какнить фотки покажу).
Тоже хочу собрать какнить все раритетное и уголочек ностальгический соорудить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 22 янв 2012, 21:44 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
R_ura писал(а):
SWG, как я понял вы пользуетесь МикроПаскалем от Микроэлектроники.
Вот мне и интересно, вы ЮАРТ используете штатный, библиотечный? А то, если я правильно понял, он не содержит ни кольцевых буферов, ни прерываний, программа зацикливается на время приемки байта?

У меня скорости там небольшие (напрямую с компом - 9600 пока, через радиоканал - вообще 1200 бод). Поэтому я не использую прерывания от USART, а в прерывании системного таймера (1мс), помимо инкремента счетчиков, проверяю заодним наличие байта на приеме. Если есть, ставлю флажок, а в главном цикле (который, например, в ходовом прокручивается в среднем за 250-270мкс), проверяю этот флаг, забираю байт, и соответственно обрабатываю. Можно флаг ставить и по прерыванию от приемника, но так структура программы получается более однородной, а скорости вполне хватает. Чтение, инициализацию, отправку байта, и проверку состояния порта, делаю штатными функциями МикроПаскаля. Они короткие. Можно конечно и напрямик с регистрами порта работать, разница в получаемом коде невелика. Если будет критично быстродействие, буду работать напрямую. Пока не было необходимости.

Вот на межконтроллерном обмене - там буду использовать прерывания. В основном для опознания адресного байта, попутно и приема своих. Скорость там будет скорее всего тоже 9600 (привык я к ней), но может и другая. После отладки на 9600 можно будет и поменять.

Контроллер башни пока отлаживал только в автономном режиме, (без подключения к ходовому), напрямую подключив к компу на 9600. И для команд и телеметрии, и для прошивки через лодыря.

Аудиоконтроллер тоже отлаживал автономно, без других плат (подключив его USART через MAX232 контроллера башни к компу).

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

Плату ЦК пока проверил на исправность, проверил питание +5v, +3,3v, выставил опорное 4,096v, проверил работу компаратора наличия питания. Решил для прошивки бутлоадера в Мегу128 сделать нормальный переходник, чтобы не цепляться к программатору как попало. Разводку уже нарисовал (все получилось на одной стороне), осталось вытравить и распаять платку. Она будет разьемом DIP-40 вставляться в разьем программатора ЧипПрог 48, а в разьем этой платки будет вставляться плата - переходник с запаянной Мегой, что ставится на ЦК (фотки выложены выше). После зашивки бутлоадера (тоже от МикроПаскаля для AVR) уже дело пойдет быстрее. Буду уже заливать и отлаживать программу уже прямо на плате ЦК. Пока отвлекли дела домашние, но вроде теперь будет времени побольше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 26 янв 2012, 20:39 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Сделал переходник для подключения своей Меги128 с переходником на программатор ЧипПрог-48. Сначала хотел по ISP, потом подумал, что полный - даже проще (для ISP там еще пару микросхемок ставить, а просто с PQFP-64 на DIP-40 - ничего кроме соединений). Все развелось на одной стороне. Зато нормальное параллельное программирование, и не надо внешнего тактирования или кварца, и от фузов не зависит...
В общем, сделал, загнал лодыря. Для проверки уже на плате ЦК лодырем зашил несколько простеньких программок. Сначала просто вывод по USART 2 на комп пары строк непрерывно по очереди, с интервалом в 1 сек. Потом - сделал доклад собщения о готовности при включении "ЦК_готов" и пустой пока главный цикл, с установкой и сбросом (для контроля длительности главного цикла) ноги порта D7, с задержкой внутри главного цикла 1мс. Вертится нормально, даже неинтересно... Прошивка через лодыря заливается нормально. Правда, я пока заливал на скорости 9600, максимум 13кб (тест UART и SD-CARD). Заливалось минуты полторы. Когда программа будет больше, можно будет скорость лодыря поднять, по шнурку - не проблема. (по умолчанию там стояло 19200).

Сейчас начал уже писать нормальную программу. Начал как обычно с дешифратора команд с компа, и выдачи информации с контроллера в комп. Это понадобится для дальнейшей отладки. Начал с команд установки и выдачи текущего времени и даты, обработку команд уже почти сделал, добавлю еще процедуры работы с DS1307, и можно будет проверить. Затем надо будет сделать системный таймер на 1 мс, чтобы как обычно повесить на него кучу программных таймеров для отработки временных интервалов, заодним можно также прописать обработчик внешнего прерывания от часов DS1307 (1 сек). Написав это, побалуюсь с отладкой (надо еще на виртуальном пульте в компе дописать программку для поддержки новых команд и отображения инфы от ЦК). Отладив все это, начну по кускам двигаться дальше, сначала задействуя то, что есть на плате ЦК. Там в основном память всякая... Потом - взаимодействие с другими контроллерами. Упорядочивание системы команд, приведение всего в порядок, документирование. Заодним и радиоканал заменю на более современный, с большей скоростью и надежностью. Потом (и параллельно) начну постепенно наворачивать интеллект и автономность... В общем, начинается самое интересное. И хватит надолго, ибо этот процесс бесконечен...

Вот такую сделал платку для программатора (фотографировать влом, даю разводку):
Вложение:
Snap19.PNG
Snap19.PNG [ 20.52 Кб | Просмотров: 20691 ]


Соединения соответствуют родному переходнику программатора ЧипПрог-48 для Мега-128 в PQFP-64.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 26 янв 2012, 21:02 
Старожил
Аватара пользователя

Зарегистрирован: 02 апр 2010, 12:39
Сообщения: 4401
Откуда: Брянск
А под радиоканал подобрали уже что-нибудь?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 26 янв 2012, 22:04 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Bomond писал(а):
А под радиоканал подобрали уже что-нибудь?

Наверное, буду трансиверы MRF49XA использовать, я как - то упоминал о них. 3 диапазона - 433, 868 и 915, программно выбирается, но номиналы схемы сопряжения на плате ставятся только под один диапазон. Также программно - выбор канала, полосы пропускания приемника, скорости, и куча всякого... И габариты в целом небольшие получаются.
Вложение:
PC010005.PNG
PC010005.PNG [ 185.86 Кб | Просмотров: 20670 ]

Show


Вложение:
MRF49XA_0900766b80d7787a.pdf [1.38 Мб]
Скачиваний: 503


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 29 янв 2012, 12:36 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Понемногу занимаюсь программой ЦК.
Сделал дешифратор команд, прием их по UART 2, выдачу результатов. Запустил системный таймер 1мс, пока на таймере 0. Вообще - то хочу на T2, (тоже 8-битном), - у того приоритет прерывания повыше, да и не такой универсальный, как Т0. Пусть себе вертится, а Т0 может еще на что сгодится. Странно в Меге сделаны таймеры. Только у нулевого - свой предделитель, остальные - 1,2,3 - сидят на общем предделителе. Если его сбросить для синхронизации одного из счетчиков, это сдвинет момент срабатывания остальных двух... Или если переключить его на внешнее тактирование - так тоже будет для всех... У PIC - так у каждого счетчика свой предделитель, работающий независимо от остальных.
Да и документация Атмела, как уже упоминал, не так хороша, как у МикроЧипа... Если у МикроЧипа, например, при описании таймеров, все по порядку, - сразу все режимы, настройки, и регистры, с ними связанные, и конкретные назначения их бит, - то у Атмела все разбросано, часто описано поверхностно, вскользь, иногда - просто с упоминанием разделов, где что-то можно посмотреть более подробно. В итоге, чтобы, например, разобраться полностью с одним из таймеров, приходится десятки раз бегать по всей документации, вместо того, чтобы просто просмотреть пару страничек, как по PIC. Вроде мелочь, но отвлекает здорово. Пока разберешься, глядишь, азарт уже пропал, пора отдохнуть...

Нашел в Интернете с десяток описаний Меги128 на русском и аглицком. Везде примерно одинаково. А в некоторых, например, описание таймера 2 - вообще пропущено... Был бы в наличии у меня PIC c 64 или хотя бы 32к памяти - сделал бы лучше ЦК на нем. Есть такие даже в PIC18 семействе. Но я привык делать на том, что уже лежит у меня на столе, а не где - то там на просторах Интернета...

Прием с UART сначала проверил, как делал раньше, - с проверкой приемника и выставлением флажка наличия принятого байта в прерывании системного таймера. Работает нормально. Потом перевел прием на прерывание по приему (поскольку у Меги разные вектора прерываний, почему бы не использовать). Тоже все без проблем.

Кое - какие проблемы с DS1307. То нормально, а то все вешается при чтении. Есть подозрение на кварц 32768, надо бы поменять. Он у меня бэушный, снятый откуда - то. Есть куча других на эту частоту, новых, но в других корпусах. Надо будет аккуратно выпаять с одной из материнок (есть несколько штук в запасе), там должны быть хорошие. Но сначала попробую сменить саму DS1307N, - она у меня на панельке, и запас имеется.

Для контроля системного таймера, как обычно, сделал в нем инверсию одной из ног (Порт D.6), для контроля периода срабатывания. Обнаружил, что примерно через десяток срабатываний идет пропуск инверсии. Скорее всего, связано с тем, что я одну из ног этого же порта (D.7) использую для контроля периода главного цикла. Нарушается атомарность. Надо или при смене состояния ноги D.7 запрещать прерывания, или использовать ноги разных портов (например, порт F пока еще не задействован в программе).

В общем, процесс пошел. Напишу и проверю низовые функции, дальше пойдет быстрее. Да и занимаюсь программой пока по паре часов, и то не каждый день. То лень, то некогда...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 29 янв 2012, 18:37 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Перенес контрольку таймера Т0 на порт F.2, подцепил на OneWire (разьемы J22, L42, J43, на порту B.7), термометр DS18B20 (пока один), сделал пару процедур для его чтения и преобразования результата, добавил команду для него в главный цикл, задействовал флажок для него в слове состяния (SSP_3.4 - "1"- Выдать текущую температуру), еще кое - что по мелочам... Проверил - все работает, даже неинтересно... С часами пока не разбирался, оставлю на потом. Надо еще пульт доработать для более удобной работы с ЦК. Пока использую универсальный способ - посылаю команды и смотрю ответы, используя встроенный в пульт терминал. Но удобнее когда это будет на пульте лучше поддержано.
Например, сделать на пульте окошки с отображением текущей даты и времени робота и компьютера, и кнопочку для отправки команды на их синхронизацию, для отображения температуры с термометра - сделать шкалу, обновляемую в реальном времени при изменении температуры или по запросу (как было сделано для измерения напряжения батареи ходовым контроллером).

Еще надо продумать и упорядочить систему команд ЦК. Пока временно использую старый пакетный формат, что был на радиоканале ходового и при отладке платформы - пакет 1+3 байта, байт кода команды и три байта параметров. Но для ЦК это маловато, надо сделать больше длину пакета, возможно - переменную, (байт до 256), добавить контрольные суммы, подтверждение приема с повторной передачей или перезапросом пакета, с расчетом на более скоростной канал.

Сейчас время прокрутки главного цикла - около 4 микросекунд. Время выполнения обработчика системного таймера Т0 - (1мс) - полторы - две микросекунды. Там пока три программных таймера, да пара смен состояния ноги порта F.2 (на входе и выходе из прерываеия). Из прерываний пока задействована только пара векторов - по совпадению таймера T0 и по приему второго UART. Тактовая - 16МГц, время такта - 62,5 наносекунды. До 16 тысяч коротких команд между тиками системного таймера. Пока за глаза...

На очереди - сейчас буду писать процедурку записи в регистр ключей (74HC595 и ULN2803). Это просто, в контроллере башни их 3, да еще на ввод один 74HC165, и функции там были посложнее. Здесь же - просто управление ключами на 12v питании.
Потом - возможно проверю работу с АЦП, внутренним и внешним EEPROM, напишу тест внешнего ОЗУ, надо еще сделать колодочку для подключения адаптера микро-SD к разьему на ЦК, проверить работу с FAT SD-Card. О межконтроллерном обмене уже подумываю...

Кстати, на днях обнаружил, что компиляторы МикроЭлектроники (в частности, mikroPascal PRO for AVR v4.60, на котором пишу для ЦК), написаны на DELPHI 6. Выдает информацию об этом в отчете в случае ошибки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 02 фев 2012, 10:56 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Добавил в программу ЦК управление ключами в ULN2803, измерение напряжения батареи (разовое и с заданным интервалом), с использованием внешней опоры 4,096v, и выдачу результатов по запросу или изменению, с отображением на пульте, соответствующие команды для управления ими. Полет нормальный...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 02 фев 2012, 11:13 
Старожил

Зарегистрирован: 09 апр 2011, 10:48
Сообщения: 1148
Откуда: Сибирь
5-й элемент - Zorg :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 02 фев 2012, 12:28 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
alex-rdx писал(а):

У меня этот фильм на диске на русском есть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 03 фев 2012, 03:00 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Переделал системный таймер (1мс) с таймера 0 на таймер 2 (тоже 8-битный).
В Атмеловском даташите на Мегу128 его описание отсутствует, пришлось использовать данные по режимам и используемым битам регистров из доки на Мегу64. Вроде кроме размера памяти - одинаковые со 128, но все же проверить не мешало. Проблем нет.

Слегка перегруппировал виртуальный пульт в компе. Освободил примерно треть площади для размещения отладочных элементов (кнопок, шкал, индикаторов, окошек) для ЦК.

Главный цикл в ЦК сейчас крутится с периодом порядка 5 мкс, слегка увеличиваясь только при обработке команд с компа. Это примерно 70 - 80 активных команд тела главного цикла. Но команд с компа и их обработчиков пока немного, всего десяток. Постепенно еще набежит, и логика обработки их усложнится. Но и запас еще большой. Оптимально было бы - не более интервала системного таймера (1мс), чтобы флаги программных таймеров в прерывании системного таймера обрабатывались с минимальной задержкой, без пропуска тиков. Хоть это и не очень критично...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 10 фев 2012, 14:16 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Запустил часы. Ничего не менял, просто протер плату ацетоном в районе часового кварца и прогрел немного феном (внутри фена - около 200 градусов), уж больно микромощный генератор в DS1307, малейшие утечки срывают генерацию. Возможно, остались следы глицерина. Сейчас пашет уже несколько дней стабильно, секундные импульсы с его выхода на прерывание Меги тоже идут нормально. Возможно, покрою это место лаком, (кремний-органикой, акриловым или нитро).

Проверил работу компаратора пропадания питания на LM311. Пришлось ей понизить опорное с 4,096 до 3 вольт. Думал, 311 работает при входных до 5v, оказалось - только вольт до 4. (при 5v питании). Последовательный резистор 3к (R43) там уже был, добавил со входа на землю 9,1к. Прилепил SMDшный снизу платы. Можно было поставить и обычный, место было. Но там в наиболее удобном месте сверху дорожка идет.

Начал набрасывать на виртуальный отладочный пульт кнопки и окошки для отладки ЦК. Можно и используя универсальный метод - писать коды команд для отправки вручную в окошке, но удобнее когда команда с параметрами отправляется одним нажатием кнопки.
Пока сделал только интерфейс чтения и установки даты и времени, и задание режима измерения напряжения батареи (разовое или автоматическое измерение раз в 1 сек).
Можно еще добавить управление и индикацию состояния ключей питания на ULN2803, само управление уже проверено.
Вот как пока выглядит пульт. (Часть панелей скрыты, показываются только когда надо. Например, панель управления каналом с компом, побитный показ слова состояния...) :
Show

Батарею заряжать пора. Ее окошко на пульте ниже 12v становится желтым, ниже 11v - красным, как тут. Это для свинца, для лития уровни будут другие.

Пора уже писать и проверять обмен по линии межконтроллерной связи. Или, может, сначала работу с внешним ОЗУ (64к), EEPROM 24C512, и SD-Card проверю... Хотя одно другому не мешает.
В общем, понемногу двигается. Попутно продолжаю проработку общей концепции построения всей системы в целом. Пока без RTOS. А там видно будет. Также пора команды модулей унифицировать и систематизировать, а то есть похожие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 10 фев 2012, 15:07 
Старожил
Аватара пользователя

Зарегистрирован: 25 фев 2011, 17:25
Сообщения: 985
Откуда: Тамбовская область
SWG, снимок экрана, если нужно одно окно, проще сделать по Alt+PrintScreen, чем потом в Paint'е обрезать лишнее. :) А так напоминает ЦУП - очень много всего, но на то он и пульт. А как у вас скрытие панелей сделано?

_________________
Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 10 фев 2012, 15:56 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
yars писал(а):
SWG, снимок экрана, если нужно одно окно, проще сделать по Alt+PrintScreen, чем потом в Paint'е обрезать лишнее. :)

Я снимок делаю сниппером, там куча режимов, в том числе можно и например только активное окно взять. Но я потом все равно обрабатываю ФотоШопом (кадрирую, меняю палитру на фиксированные цвета, конвертирую в .PNG), так что особой разницы нет. Да и привычка, все отработано до автоматизма, и много времени не отнимает.

Цитата:
А так напоминает ЦУП - очень много всего, но на то он и пульт.

Так пока не было ЦК, приходилось общаться на очень низком уровне с отдельными модулями - ходовым, бамперов, башни, аудиоконтроллером... Потом большую часть этой черной работы возьмет на себя центральный контроллер.

Кроме того, чтобы проверить работу разных узлов периферии, я для отладки ввожу временно в программу команды, например, для чтения или задания разных переменных, регистров... Зато очень удобно, все наглядно, в отличие от всяких отладчиков и симуляторов. Я привык контроллеры через COM-порт еще с 80х годов отлаживать (связист, как-никак, был...). Да и с Дельфи начиная с 1 версии постоянно работаю, быстро внести изменения в пульт - минутное дело...
Цитата:
А как у вас скрытие панелей сделано?

Да в Дельфи просто все. У любого обьекта есть свойство Visible. Делаешь его True или False,
обьект видно или нет. Так можно хоть десятки панелей пачкой держать, включая только те, что нужно. Если надо управлять не одним обьектом, а несколькими, кладешь их на отдельную панель, или в групповой бокс, и меняешь только его свойства. Остальные обьекты, лежащие на этой панели, просто их автоматом наследуют. Например, чтобы сменить настройки канала, я ткну кнопочку вверху "настройки", в программе это запустит ее обработчик:
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
  Panel14.Enabled := True;
  Panel14.Visible := True;
end;

И появится такая коричневая панелька с кнопочками и окошками (можно посмотреть на предыдущих страницах, там было). Чтобы убрать, на той панельке есть кнопочка, которая снова делает ее невидимой.
Код:
procedure TForm1.Button17Click(Sender: TObject);
begin
  Panel14.Enabled := False;
  Panel14.Visible := False;
end;


Или, например, внизу в середине есть отображение 3х байт слова состояния платформы побитно (синего цвета). Если там ткнуть в заголовок группбокса "состояние", справа появится большая панель, на которой все эти 24 бита подробно расписаны, и тоже отображается их состояние. На той панели есть кнопка ее закрытия. В Дельфи все это очень просто.

Когда налажу работу ЦК и межконтроллерную связь, сделаю уже новый виртуальный пульт, на котором будет задаваться и отображаться инфа более высокого уровня, (например, карты местности), текущее положение робота, его состояние, будут задаваться задачи, и отображаться их ход выполнения. Со временем возможно сделаю еще и автономный пульт управления, на контроллере с экраном дюймов 7-8, с которого можно также будет управлять роботом.

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

Вот на всякий случай программа пульта. Работает без инсталляции, из любого каталога. Можно побаловаться.
Вложение:
ROBO.rar [224.51 Кб]
Скачиваний: 379


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 10 фев 2012, 16:01 
Старожил
Аватара пользователя

Зарегистрирован: 25 фев 2011, 17:25
Сообщения: 985
Откуда: Тамбовская область
Спасибо, программу на всякий случай утянул. Я хоть и Дельфи недолюбливаю, но нет-нет да пользуюсь, пригодится.

_________________
Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 18 фев 2012, 21:04 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Продолжаю потихоньку ковыряться с ЦК.
Сделал на всяк случай еще переходник с Мегой 64 (все равно пока без дела лежат).
Она вроде отличается от 128 только размером памяти программ, а программа у меня пока всего только менее 4% от памяти Меги 128,
а для 64:
Used ROM (bytes): 4806 (7%) Free ROM (bytes): 60730 (93%)
Static RAM (bytes): 88 Dynamic RAM (bytes): 4008

Проверив работу термометра, (сначала как обычно, в монопольном режиме), переделал программку работы с ним под мою мультизадачность (там есть пара задержек - 125мкс и 400мс). Чтобы не тормозить главный цикл на 400 мс при измерении. Перевел эту задержку на программный таймер (в прерывании таймера T2 = 1мс). 125мкс оставил программную, она пока не мешает. По умолчанию сделал в непрерывном режиме измерение температуры раз в 10 сек, напряжения батареи - раз в 1сек. Естественно, с пульта можно перевести в режим разового измерения, или изменить период непрерывного.
Немного доработал программку пульта в компе - добавил шкалу температуры, управление термометром. При температурах меньше 20 градусов сделал ее голубой, от 20 до 30 - зеленой, 30-40 - желтой, выше 40 - красной.
Show

Сейчас главный цикл вертится с периодом около 6 мкс. Обработчик прерывания главного системного таймера T2 - отрабатывает за время менее 3 мксек.
В общем, с часами DS1307, термометром DS18B20, ADC, UART2, ключами питания на 74HC595/ULN2803, таймерами T0 и T2, - все проверил, привел программку в порядок, можно двигаться понемногу дальше. Отладку и смену прошивки лодырем веду через USART2 на 9600 бод. Вполне хватает.
Потребление платы ЦК от 12v - около 55мА. (Пока без SD-Card и внешних EEPROM).
Внешнее ОЗУ с адресным буфером без обращения к ним хавают немного.
Между делом пора уже межконтроллерный обмен запускать, собирать все в кучу. Да внешнюю память проверить. В общем, особых проблем пока нет, все по плану... Медленно, но неуклонно, движется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 18 фев 2012, 21:44 
Старожил
Аватара пользователя

Зарегистрирован: 10 фев 2010, 12:25
Сообщения: 375
Откуда: Донецк
SWG, к Вам два вопроса.

1.Как подключена программа пульт к роботу ? По RS232 ? Как потом будет, в дальнейшем ?
2.Подскажите рабочую версию-релиз Borland Delphi под Win7. Раньше пользовался активно Delphi 6.

Мне понравился очень интерфейс! Завидую по белому...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 18 фев 2012, 23:20 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
ciscobsci писал(а):
SWG, к Вам два вопроса.
1.Как подключена программа пульт к роботу ? По RS232 ? Как потом будет, в дальнейшем ?...

Да, сейчас с USART2 Меги через МАХ232 по шнурку - на COM порт компа. Система на компе - WIN XP PRO rus SP2, с корпоративной лицензией.
Но работа идет простыми пакетами, которые я сделал для общения по радиоканалу, когда еще ходовой был за центрального. И в пульте, и в ЦК осталась поддержка этого формата, так что я в любой момент могу вместо шнурка подключить радиоканал на брелках, который использовал уже, с позапрошлого года. Для этого достаточно снять перемычки между Мегой и МАХ232, и подключить приемник и передатчик радиоканала на разьем J19 ЦК. Правда, скорость придется снизить с 9600 (сейчас, можно и больше), до 1200 бод, при более высокой растет число ошибок. Но, возможно, пока отлаживаю ЦК, сделаю радиоканал на трансиверах MRF49XA, уже на более высокой скорости, с переменной длиной пакета, контрольными суммами и перезапросом порченых. Сейчас между делом думаю над этим.
Ну а на межконтроллерном - останутся короткие команды, как сейчас, (байт кода команды плюс 3 байта параметра), только с адресацией получателя. Ну, может, увеличу байт до 8, может, контрольные суммы добавлю. Хотя внутри робота все должно и так работать надежно, это не радио.

Цитата:
2.Подскажите рабочую версию-релиз Borland Delphi под Win7. Раньше пользовался активно Delphi 6.
Я ни WIN 7, ни Висту не ставил себе, поэтому особо не интересовался. Да и Дельфи 7 и 8 пробовал - не понравились, так под DELPHI 6.0 ENTERRPISE до сих пор и сижу, еще со времен WIN 98SE. Хотя программы, которые под ней писал на работе, нормально работали потом и на компах с WIN 2000, WIN XP, и даже под VISTA. Правда, уже третий год не работаю, поэтому особого смысла обновлять DELPHI тем более не вижу. Как и на WIN 7 переходить. Пока и XP вполне устраивает... Обычно систему меняю, когда при замене компа старая уже не поддерживает новое железо, как было при переходе на 2х ядерник в 2007г. А сейчас и железо пока устраивает, и система...
Цитата:
Мне понравился очень интерфейс! Завидую по белому...

Да тут особо - то и завидовать нечему. Набросал кнопок да окошек, привязал к ним команды робота, чтобы вручную в терминалке не набирать. При отладке часто приходится повторять одно и то же, пока нормально не отладишь очередной кусок, так куда проще делать это просто кнопочкой, с выводом результатов в удобной форме. Да и не нужно все коды в голове держать...

Да особо и не старался, этот пульт все равно временный, только для отладки модулей.
Для общения с роботом в целом, уже через ЦК, все равно другой пульт делать буду. Как уже писал, с экранами, локаторами, картами... Там уже можно будет и над дизайном подумать. Скорее всего, постараюсь изобразить что-то типа кабины вездехода изнутри. Правда, художник из меня хреновый, скорее чертежник... Сделаю что попроще, или какую-нибудь готовую картинку как фон натяну.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 19 фев 2012, 00:33 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 2134
Откуда: Нальчик
SWG писал(а):
связист, как-никак, был...

А что именно за связь. Я например на междугородке в ЛАЗ-е 10 лет отпахал в свое время, классная работка была, сутки через трое, днем вид делаеш что работаеш, а после 5-ти до утра идиллия полная и спектрум с ZEUS-ом (ассемблер такой был)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 19 фев 2012, 01:20 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
ShadS писал(а):
SWG писал(а):
связист, как-никак, был...
А что именно за связь. Я например на междугородке в ЛАЗ-е 10 лет отпахал в свое время, классная работка была, сутки через трое, днем вид делаеш что работаеш, а после 5-ти до утра идиллия полная и спектрум с ZEUS-ом (ассемблер такой был)

Производственная Лаборатория Республиканского Телеграфа (с 1976 по 1996г), инженер - электронщик. Занимался разработкой приборов и контроллеров для производства, внедрением новой техники. Потом - инженер - программист, занимался биллингом, автоматизацией отчетности. В общем, из 40 лет (с 1969г по 2009г) - 34 года в связи...
Хорошо знал все виды телеграфной связи ("Атолл","Лиман","АТ","ПС","ЦКС","TELEX", и прочие, позже - X.25), биллинг телеграфных и телефонных электронных станций...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 19 фев 2012, 02:31 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Задействовал прерывание Int_7 (PORTE.7). У меня на него заведены импульсы 1 сек с выхода DS1307. Пока в нем ставлю флаг считывания с DS1307, для обновления раз в секунду системного времени ЦК. На размере программы почти не отразилось, период главного цикла стал чуть больше 6 мкс. Это примерно сотня активных команд.

Вот что пока имеем (Для АТМега 64 - 16AU):
Used ROM (bytes): 5082 (8%) Free ROM (bytes): 60454 (92%)
Static RAM (bytes): 88 Dynamic RAM (bytes): 4008

Использовано пока всего 3 уровня вложения стека.
Вот размер имеющихся подпрограмм:
Show

Из будущих добавлений больше всего займут процедуры работы с SD-Card. Полный набор - около 16кб. Я их отдельно компилировал, чтобы размер прикинуть, когда еще платы ЦК не было. Ну немного еще для EEPROM и внешнего ОЗУ, да обслуживание линии межконтроллерного обмена. Это все мелочь.
В общем, пока код довольно экономный и эффективный, (хоть и Паскаль, да еще и для AVR), и по размеру, и по времени. Не думаю, что на С то же самое получилось бы намного меньше. Да и я пока еще не заморачивался с оптимизацией. Напишу побольше - тогда уж начну все вылизывать и поджимать. Пока некоторые вещи дублируются.
Так что запаса ресурсов на реализацию основных задач - функций интеллекта - еще достаточно... Почти сотня килобайт еще останется. А это для меня - очень много. Я привык байты экономить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 19 фев 2012, 20:35 
Старожил

Зарегистрирован: 09 апр 2011, 10:48
Сообщения: 1148
Откуда: Сибирь
А ты не библиотеки всякие (про запас) и музыку-шмузыку пихай туда. А "мозг"... "мозг" - делай ему! Это в первую очередь надо делать ему.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 166 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB