Easyelectronics.ru

Электроника для всех
Текущее время: 24 янв 2018, 00:57

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



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 166 ]  На страницу 1, 2, 3, 4, 5 ... 7  След.
Автор Сообщение
 Заголовок сообщения: Центральный контроллер робота SWG
СообщениеДобавлено: 04 сен 2011, 19:40 
Супермодератор
Аватара пользователя

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

1. Основные предпосылки, которые легли в основу:

1. Центральный контроллер робота (далее для краткости - CCR, - от Central Controller Robot, - не суть важно, лишь бы запомнить, или просто ЦК), должен выполнять следующие функции:
1.1. Обьединять все остальные контроллеры робота в единое целое, принимать информацию от них, выдавать им команды нижнего уровня для выполнения ими своих функций.
1.2. Поддерживать связь с компьютером по радиоканалу, принимать от него задания и команды верхнего и нижнего уровня, отправлять в компьютер данные телеметрии, информацию по ходу выполняемых работ, различную информацию по запросу компьютера.
1.3. Выполнять сложную обработку данных, например - построение карты доступных зон помещения, ориентирование на местности с привязкой к хранящейся в памяти карте, прокладку маршрута в заданную точку с учетом препятствий, и так далее.
1.4. В промежутках между сеансами связи выполнять текущие и фоновые задания автономно.
1.5. В отсутствии текущих и фоновых задач для исполнения. переходить в режим энергосбережения, отключая питание остальных модулей, оставляя только прием с радиоканала и контроль батарей.
1.6. Вести контроль заряда батареи, при снижении до определенного значения - самостоятельно (по имеющийся карте или в режиме поиска по маяку) - найти зарядное устройство для подзаряда и зарядить батарею. Приоритет задачи заряда должен быть согласован с приоритетами других исполняемых задач.
1.7. Отслеживать часы и календарь реального времени, и в соответствии с ними выполнять задачи, привязанные ко времени (режимы "Будильник", "Тихий" (ночной) режим, "напоминалка").


Для обеспечения этих основных функций будет задействовано большое количество более мелких, которые буду описывать по ходу дела.

2. Некоторые исходные технические данные:

2.1. Максимальные размеры платы, определяемые габаритами корпуса - 140х190мм.
2.2. Питание - от бортового свинцового аккумулятора 12v 1,3Aч, через импульсный преобразователь на MC34063.
2.3. Использованный контроллер - Мега 128 (как наиболее подходящий, из имеющихся в наличии).
2.4. Внешняя память контроллера:
2.4.1. ОЗУ 64Kb (KM68512A 64Kx8 bit Low Power CMOS Static RAM);
2.4.2. EEPROM 64Kb (AT24C512 - 2-wire Serial EEPROM 512K - 65,536 x 8);
2.4.3. SD-Card 2Gb с FAT-16, SPI;
2.4.4. Возможно, (пока еще не решил окончательно), W25X40 -( 4 MBIT SERIAL FLASH MEMORY WITH 4Kb SECTORS AND DUAL OUTPUT SPI. DIP-8, CLOCK to 75MHz), 512 Kb, В общем - то не очень надо, но они у меня есть. Почему бы и не поставить... Питание 3.3v, потребление в покое 1 мкА, так что обузой не будет. Можно просто к SD-Card подпараллелить, интерфейс такой же, (SPI), выбор по /CS сделать...
2.5. Прошивка программы - через Bootloader, через один из UART - тот, что связан с радиоканалом.
2.6. Для реализации режима энергосбережения на плате CCR будет 4 ключа с малым (0,2 Ом) сопротивлением канала, через которые будет подключено питание:
2.6.1. Ходовой контроллер.
2.6.2. Контроллер бамперов.
2.6.3. Контроллер поворотной платформы (башни).
2.6.4. Усилитель аудиоконтроллера и плеер MP3.
2.7. Кроме того, есть 4 ключа с ОК, (выхода ULN2803), до 0,5A, выведенные на отдельный разьем, которыми можно коммутировать какие - нибудь дополнительные нагрузки, включенные относительно питания 12v или 5v. Заложено на будущее.
2.8. Автономные энергонезависимые часы-календарь - DS1307, (DIP-8, I2C).
2.9. Для шины связи между контроллерами робота будет использована или однопроводная линия на USART (в Меге - тот, что по ногам совмещен с ногами для программирования), или SPI, но имеющийся в Меге аппаратный SPI уже связан с SD-Card, не хотелось бы туда лишнего цеплять. Хотя проверить при отладке можно...


Распределение портов Мега-128 (помеченные *** - те, что пока не задействованы):
Show

3. Схема Центрального Контроллера (естественно, пока только то, с чем уже определился):
Show

4. Плата Центрального Контроллера (пока расположение деталей и net - связи между ними):
Show

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


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

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Возможно, некоторые обратили внимание на квадратную хреновину на картинке платы, с надписью "PQFT64".
Дело в том, что у нас в продаже недавно появились платы - переходники для микросхем, я уже писал об этом в какой - то теме. Когда я прикинул разводку центрального контроллера, то убедился, что запайка контроллера непосредственно на плату не дает мне особых преимуществ, поскольку я привык (еще со времен, когда рисовал платы вручную рейсфедером), делать разводку по сетке с шагом 2,5мм, изредка - 1,25мм, да и на плате много достаточно крупных деталей, что сводит на нет преимущества мелких микросхем, которые можно реализовать только на заводских двухсторонних платах с металлизацией, и использованием всех деталей только SMD. В результате переход дорожек от ног Меги 128 с шагом 0,8мм к сетке с шагом 2,54мм занимает довольно много места. Почти столько же, как недавно купленные переходники... Но запайка микросхемы на плату усложняет ее замену в случае необходимости, а такая необходимость при постоянных экспериментах с платой, вполне может возникнуть. Поэтому после долгих раздумий и анализа "за" и "против", было принято решение использовать переходник, устанавливаемый на разьем платы.
Это мне дало следующее:

1. Можно быстро сменить контроллер в случае необходимости.

2. Можно при экспериментах использовать не только Мегу 128, но и Мегу 64, - они у меня тоже есть, и отличаются вроде от 128 только размером памяти.

3. Со временем вообще можно поставить на плату центрального контроллера что-нибудь другое, - например, PIC24, или PIC32, не переделывая платы, а лишь изготовить новый переходник под них, и написав новую программу...

4. Можно не ставить на плату разьем внутрисхемного программирования (ноги которого совмещены с одним из UART), а пользоваться только бутлоадером. Для прошивки же бутлоадера можно сделать шлейф или платку - переходник для программатора, в которую для программирования вставлять переходник с микроконтроллером.

5. Разьемы, в которые будет вставляться на плату переходник, имеют уже удобное для разводки по сетке 2,54мм, расположение ног, и разводка получается более простой и удобной для лужения и распайки.


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


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

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 6218
Откуда: Челябинск
А гнездо там какое? Или из обычных PBS соберешь квадрат?

_________________
Хозяин дома


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

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
DI HALT писал(а):
А гнездо там какое? Или из обычных PBS соберешь квадрат?

Недавно разжился опять цанговыми однорядными рейками с гнездами, взял 10 шт по 40 гнезд.
Двухрядных цанговых у меня еще полно, а однорядные кончились. Правда, уже дома разглядел, что они, хоть и с шагом 2,54, как обычно, но внутренний диаметр меньше, и обычные квадратные штыри не влазят. Зато по высоте ниже, чем обычно, примерно как цанговые панельки для микросхем. Поеду в следующий раз в тот магазин - надо будет посмотреть теперь и гребенки со штырями для них. Иначе придется просто куски провода примерно 0,5 мм использовать. Есть еще вариант - запаять в плату квадратные позолоченные штыри (таких гребенок у меня еще полно), а переходник просто насаживать на них металлизированными дырками, но это как - то слишком кустарно... Хотя, если слегка разогнуть через один в разные стороны, получается довольно надежно... Я иногда так индикаторы LCD сажу, чтобы не паять и снять всегда можно было.


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

Зарегистрирован: 20 авг 2010, 14:14
Сообщения: 1619
Откуда: Рэшен Федерэшн
В данном случае цанговые гребенки - неподходящее решение, я бы поставил гнезда типа PBS. Получится немного повыше над платой (на 4-5 мм.), чем хотелось бы, зато голову не надо ломать, чтобы в эти цанги воткнуть подходящее. Если ЦП по высоте будет мешаться, то можно его сдвинуть ближе к краю платы, не обязательно его в центре лепить.


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

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Brigadir писал(а):
В данном случае цанговые гребенки - неподходящее решение, я бы поставил гнезда типа PBS. Получится немного повыше над платой (на 4-5 мм.), чем хотелось бы, зато голову не надо ломать, чтобы в эти цанги воткнуть подходящее.

Те цанговые рейки, что у меня были раньше, (1 и 2х рядные), с высотой пластмассы 7мм, прекрасно сочетались с гребенками со стандартными квадратными штырями. А контакт у них намного надежнее, чем у гнездовых реек с вилочками, которые со временем разбалтывались. Причем вставляются и вытаскиваются штыри легко, (не закусываясь, как в панельках для микросхем). Те, что купил - высота пластмассы всего 3мм, но вместе с утолщенной частью вывода получается 5мм над платой. Квадрат 0,5x0,5мм в них не лезет, круглый 0,5мм (например, вывод резистора МЛТ 0,25вт) - входит отлично, на глубину 4мм, и держится хорошо. Так что если не найду к ним родную пару со штырями, можно впаять в переходник кусочки посеребренных выводов от резисторов (у меня этих обрезков накопилось много, иногда использую в качестве перемычек на платах). Если паять, предварительно вставив в разьем, (или кусок платы - макетки с дырками), получится ровно. Но думаю пока дойдет до распайки платы, найду родные штыри. Гнезда с вилочками все же высоковаты (8,5мм), хотя все равно высота платы будет в основном определяться разьемами с проводами, и дросселями, это мм 12-15... Единственно, желательно сделать пониже в месте под поворотным узлом башни, где из дырки выходит жгут от ее контроллера, чтобы не зажимался, но в том месте у меня на центральном контроллере вроде пока ничего высокого нет. А больше на крышке основного корпуса ничего не выступает (если крепить плату деталями вверх). Но можно и деталями вниз повернуть, проводам удобнее будет. Сейчас рассматриваю вариант сделать в плате ЦК отверстие для прохода проводов от башни. Тогда можно было бы закрепить ЦК деталями вниз, почти вплотную к крышке, отделив ее мягкой прокладкой мм 3 толщиной. А чем больше будет вертикальная часть жгута от башни, тем меньше он будет перекручиваться.
Сейчас вспомнил, вроде у меня есть гребенки со штырями потоньше. Только у них шаг не то 2, не то 1,8мм... Если только использовать их без пластмассы, одни штыри... Также вроде есть какие - то круглые небольшие разьемы с кучей подходящих по диаметру позолоченных штырей... В общем, пока дело дойдет до распайки, проблема сама отпадет.


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

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Сегодня между делом решил проверить, как разведется то, что уже набросал, чтобы перекомпоновать в случае чего. В общем, ничего особо сложного, даже переставлять ничего не пришлось, развелось и так, как стояло. Собственно, наличие NET листа в трассировщике тем и хорошо (в отличие от всяких спринтов), что по связям между компонентами уже видно, еще до разводки, что куда тяготеет, и позволяет расставить детали достаточно хорошо. Более - менее проблематично только протащить один из USARTов (тот, что с ногами для программирования совмещен, его неразведенные связи на рисунке белыми линиями показаны), и то только потому, что я его тоже через MAX232 пропустил. Хотя он ему нафиг не нужен, я его все равно для межконтроллерной связи планирую, а для COM порта для отладки, заливки программы, и радиоканала все равно другой буду использовать, что на порту D сидит (D.2, D3), он развелся без проблем. Просто я сначала решил глянуть, как разведется по максимуму - с разьемами для программатора, JTAG (который мне тоже нафиг не нужен)... Сейчас прикину, что да как развелось, выкину лишнее, и начну добавлять еще что-нибудь, - у меня практически весь порт F свободен с аналоговыми входами, на других портах еще концов полно, в том числе с прерываниями, таймерами, ШИМ... Главное что то, что уже есть, развелось более - менее нормально, и еще почти половина места свободно.

Конечно, ОЗУ просится развернуться вниз (с самого начала быто видно), но тогда внизу останется много неиспользованного места. А больше туда ничего не пихнешь - порты с той стороны заняты. Так что нехай так стоит, все меньше места занимает. А если еще выкину разьемы программирования (бутлоадер я и без платы, на переходнике, в контроллер залью), да нафиг ненужный мне JTAG, так вообще сверху и справа все получается свободно, можно совать что угодно. Да USART выведу напрямую только на шину межконтроллерной связи, встанет удобнее, сверху, и не нужна будет куча джамперов, которыми сейчас PE.0, PE.1 на 3 направления коммутируются.

Правда, мне от центрального контроллера в основном мозги да память нужны, да работа с FAT на SD-CARD, остальное можно и модулями поделать. Тем не менее кое - какую периферию ему все же навешаю, раз место есть. Ну а пока вот что примерно получается (для увеличения масштаба можно ткнуть в картинку ):
Show

Пока все набросано тонкими (0,5 - 0,635мм) линиями, чтобы посмотреть, что как расходится. В окончательном варианте шины земли и питания будут большой площади (сейчас они вообще паршиво в середине идут, не удалось растащить понизу, приходится вертеться со стороны на сторону).
Но это пока только черновая прикидка, для общей оценки расположения. Потом кое - что передвину, лучше будет. Теперь буду думать, что и как еще добавить, с учетом уже сделанного. И свободную площадь платы, и незадействованные порты, оставлять жалко, хотя, конечно, можно их просто вывести на разьемы, для будущих расширений. Но еще много чего можно добавлять, кое - какие планы имеются...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Центральный контроллер робота SWG
СообщениеДобавлено: 05 сен 2011, 22:41 
Заглядывает иногда

Зарегистрирован: 05 сен 2011, 21:51
Сообщения: 97
Я тоже считаю, что специализированный контроллер для робота лучше универсальных ардуин.


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

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

Универсальное - это всегда куча компромиссов между стоимостью и функциональностью. Заложить все возможное - слишком дорого, а при приемлемой цене всем не угодишь, одному надо много аналоговых входов, другому - цифровых, третьему - надо немного, но с силовыми ключами, или высоковольтные ключи с оптронной развязкой... В некотором роде спасает модульность, но встает проблема соединений и согласования, особенно если модули мелкие, и их много.
Взять хотя бы мой контроллер башни. Там пока еще не все установлено и задействовано, а уже столько всякого... В нем более полусотни линий ввода - вывода с разными функциями - и силовые ключи, и АЦП, и измерители частоты (для датчика освещенности на TSL230R), и генерация импульсов для дальномера и анализ его эха, управление поворотом платформы и камеры шаговым и проcтым двигателями, отслеживание их положения, и многое другое...
Или хотя бы контроллер бамперов, где 12 датчиков 3 типов с разной управляемой подсветкой для них.

Я пошел по пути использования сравнительно крупных, функционально законченных модулей, выполняющих свой круг задач с минимальным обменом между ними, на уровне команд. При этом получается ступенчатая иерархия, пока 4x уровней: например, контроллер бамперов целиком подчинен контроллеру ходовому, ходовой же подчиняется центральному, который в свою очередь получает задания от компьютера. Пока, при отсутствии центрального, ходовой контроллер выполняет часть его функций, общаясь вместо него напрямую с компьютером, получая команды и отправляя свою информацию. Когда будет готов центральный контроллер, ходовой просто вместо радиоканала, через тот же USART, будет получать те же команды от центрального контроллера, который в свою очередь будет получать от компа задания уже более общего плана, и для их выполнения взаимодействовать с ходовым контроллером и контроллером башни. А также возможно и другими модулями, которые могут появиться в дальнейшем.

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

Центральный же контроллер добавит роботу значительную долю интеллекта. Ему уже не надо будет давать команды типа "левый двигатель вперед на столько-то", правый - на столько - то. Достаточно будет дать команду "5 метров по азимуту 130 градусов" или "переместиться в точку с координатами XY", и он переместится туда, обойдя препятствия, которые могут встретиться по пути. Или задания более общего плана, типа "Обследовать все доступные помещения и составить карту". Или просто "Перейти в режим охраны", и он будет анализировать окружающую обстановку датчиками движения, освещенности, акустическими, температурными, и прочими сенсорами, при необходимости передавая информация в компьютер, записывая на видеорегистратор, включать сигнализацию, и так далее. Чем дальше, тем больше у него будет появляться возможностей, и он будет становиться все более автономным, имея набор текущих, фоновых, и запланированных по времени, задач.
И все модули у меня, вплоть до контроллера бамперов, работают в мультизадачном режиме, обрабатывая параллельно несколько задач, с использованием системы флагов состояния.
ОС пока не была нужна (не смогла бы обеспечить большую эффективность, чем флаговый автомат, при тех же затратах ресурсов), но в центральном контроллере со временем может и сделаю. Хотя пока и без нее все неплохо получается.


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

Зарегистрирован: 16 янв 2010, 06:09
Сообщения: 6218
Откуда: Челябинск
Для цанговых линеек есть свои спец штыри. Я тут затарился ими. Но дорогие заразы. Ли нейка в 40 иголок тянет на 40 рублей. На вид словно точеные. Может потому и цена такая конская

_________________
Хозяин дома


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

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Выбросил разьемы внутрисхемного программирования и JTAG, поставил разьем межконтроллерной связи на 4 пары гнезд. Можно и больше, но пока хватает и двух - к контроллеру башни и ходовому, 2 еще в запасе. Можно сюда еще и контроллер бамперов прилепить, но он пока и по SPI с ходовым неплохо общается. Места свободного стало еще больше.
Вот слегка поправленные схема:
Show

И плата:
Show


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

Зарегистрирован: 20 авг 2010, 14:14
Сообщения: 1619
Откуда: Рэшен Федерэшн
A SD-карта будет отдельно подключаться?


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

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

Концы для нее выведены на разьем J17 (рядом с которым она показана на плате). Буду использовать Микро SD по 2 Гига (с FAT 16), вставленные в переходник. Их у нас сейчас полно баксов по 8-9, продают вместе с переходниками. Сам же переходник можно или прямо припаять на плату, или припаять к угловой гребенке и вставлять в разьем J17, или на место разьема припаять позолоченные пружинящие плоские контакты (есть у меня от каких-то разьемов), и накладывать переходник контактами на них, прижимая к плате чем- нибудь, или втыкать в пластиковую коробочку, прижатую к плате. А может, пока сделаю плату, и готовый разьем подходящий попадется. Места на плате достаточно под любой вариант. Сама же SD в любом случае будет сьемной, чтобы можно было читать и писать на компе. Файловую систему буду ставить полностью, все библиотечные функции (поиск, создание, удаление, чтение, запись в файл, дата и время файла). Наверное, не буду использовать только функцию форматирования - проще на компе это сделать, ридеры для этих флэшек у меня есть. Кроме того, эти же флэшки Микро SD используются у меня в фотоаппарате Олимпус FE-26, (с переходником MASD-1 под XD), и в видеорегистраторе HD DVR, через переходник SD.


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

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

Достаточно иметь несколько векторов для запасных блоков кода, для каждого блока - ссылка на адрес, по которому лежит статус блока. Или блок (и статус) пустой, или в статусе указаны его некоторые параметры (например, приоритет или уровень срочности задачи, интервалы ее запуска, можно ли ее прерывать, и некоторое другое), и далее - код модуля. Программа время от времени просматривает список векторов модулей и в случае обнаружения модулей с кодом выставляет флажки их наличия и статуса в диспетчере задач.
Во, пришло в голову: можно, к примеру, менять дневной блок задач на ночной, или праздничный (воскресный)...
Или, к примеру, запускать заранее заготовленную программу ко дню рождения или Новому Году, когда про нее уже давно позабудешь. Заложить, например, 4, 8, или 16 таких векторов, подгрузку можно также автоматизировать, считывая куски с фиксированными названиями из SD. В названии файла кодировать дату и время загрузки и номер вектора. Отслеживать наличие флэшки (раз в минуту или реже), при ее появлении после отсутствия считать список файлов - модулей в ОЗУ, и контролировать планировщиком... По совпадению даты и времени - загрузить модуль в память программ.
3-5 сотен раз в год из 10 000 - вообще мелочь...


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

Зарегистрирован: 23 сен 2010, 13:27
Сообщения: 2382
Откуда: Тамбовская обл.
Цитата:
Сейчас глянул даташит на Мегу 128 - у нее ресурс 10 000 циклов записи/стирания во флэшь памяти команд, так что даже если переписывать раз в час, хватит больше чем на год (на год - по 27 раз в день).

Это вроде гарантированный производителем ресурс. А реально дольше работает, где-то даже тесты видел (не МК, а обычных чипов памяти)...

Цитата:
Чем дальше, тем больше у него будет появляться возможностей, и он будет становиться все более автономным, имея набор текущих, фоновых, и запланированных по времени, задач.

...и в итоге захватит мир :)


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

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

Если хваталки приделать. Или сами вырастут. Но я на него всяких ARMов да пИнгвинов не ставлю, да и от Интернета пока подальше держу (чтобы херни всякой не нахватался), так что даже до Терминатора ему далеко... Cкорее, раньше в Страну Дураков попадет, на Поле Чудес, как Буратино, (или как Якубович)...


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

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Между делом, чтобы определиться, как много еще можно напихать на плату центрального контроллера, помимо его основной (мозговой) деятельности, понемногу начал пробовать программки, с целью определения занятости программной памяти. Естественно, самое громоздкое - работа с FAT-16 SD-Card. Полный тестовый пример из микроПаскаля, использующий все функции библиотек SD и FAT-16, а также обмен с компом по UART, при загрузке HEX-файла в программатор занимает процентов 13 памяти программ. Откомпилировать же его в составе своей программы пока не получается из за ограничений демо-версии (до 4 кбайт, или 2к слов), а с краками пока возникли проблемы - сколько уже перебрал, ни один нормально не отработал, лимит пока при компиляции остается...
Обрезав все по минимуму, все же откомпилировал небольшой кусочек, с инициализацией флэшки, поскольку там есть и чтение сектора, и многие другие библиотечные функции нижнего уровня, чтобы иметь хоть какое - то представление об обьемах. Вот что получилось:
Дерево вложений:
Show

Размер функций:
Show

И общие данные по использованию ROM, RAM и регистров:
Show

Порадовал малый размер функций умножения и деления 32 битных чисел. Ожидал больше. Да и в целом не так уж и плохо.
Большой обьем использованного ОЗУ (682 байта из 4096), получился из за буфера чтения сектора (512 байт), да буфера текстовых сообщений для UART (12 байт), остальные переменные по 1-2 байта. Да у меня будет еще внешнее ОЗУ (64кб), внешнее (кроме 4кб внутреннего) EEPROM 64кб (или даже 128, вчера нарисовал рядом еще одну 24C512, место было). А если еще и W25X40 (FLASH SPI DIP-8 512 Kb) поставлю...

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

P.S. Проблема с компилятором решена!
Ключик от 2.10, присланный "Brigadir", нормально отработал с обоими из установленных - 3.5 и 4.6 !!! Прогнал на обоих тестовый пример SD FAT-16, скомпилировался в 16 с лишним кбайт, как и HEX, что был с примером, также листинги тоже сформировал полностью.

Можно двигаться дальше, медленно, не спеша, но упорно...


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

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Ну, вот, теперь можно глянуть размер и остальных использованных функций этого тестового примера для SD с FAT-16:
Show

И суммарные данные:
Show

Естественно, переменных добавилось, и ОЗУ занято уже 1191байт из 4096 (29%).
Число уровней стека - 8.

Можно начинать писать программу ЦК...


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

Зарегистрирован: 10 авг 2011, 19:26
Сообщения: 632
а не проще было взять какой-нибудь АРМ по стоимости меги128 и выкинуть кучу лишних микросхем - вместо внешнего ОЗУ,EEPROM и часов - внутренние, вместо регистра и УЛН-ки - транз.ключи, вместо МАХ232 - можно вывести УСБ и TTL-RS232,


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

Зарегистрирован: 01 фев 2010, 12:45
Сообщения: 58
Откуда: Мюнхен
А на схеме мосфеты правильно стоят? Исток со стоком не перепутан?

_________________
Лето у нас короткое, но малоснежное.


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

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

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


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

Зарегистрирован: 20 авг 2010, 14:14
Сообщения: 1619
Откуда: Рэшен Федерэшн
reptile писал(а):
а не проще было взять какой-нибудь АРМ по стоимости меги128

Не проще - это уже 100500 раз обсуждалось.
reptile писал(а):
и выкинуть кучу лишних микросхем - вместо внешнего ОЗУ,EEPROM и часов - внутренние

А что есть АРМы с 64кБ ОЗУ и 512кБ ЕЕPROM?
reptile писал(а):
вместо регистра и УЛН-ки - транз.ключи

Типа собрать послед.-параллельный регистр на транзисторах?!
reptile писал(а):
вместо МАХ232 - можно вывести УСБ и TTL-RS232

Как это RS232 без Макса? Может USB-UART? Тогда определенно не проще, а сложнее.


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

Зарегистрирован: 10 авг 2011, 19:26
Сообщения: 632
>>А что есть АРМы с 64кБ ОЗУ и 512кБ ЕЕPROM?
угу, есть даже 96к озу и 2М flash. Для хранения настроек хватит, для чего-то бОльшего есть SPI flash и MicroSD

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

>>Как это RS232 без Макса?
вылезайте из танка, компьютеров с RS232 уже почти нет. Хватит внешнего шнурка USB-RS232(TTL), или прямого подключения через USB контроллера


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

Зарегистрирован: 20 авг 2010, 14:14
Сообщения: 1619
Откуда: Рэшен Федерэшн
reptile писал(а):
вылезайте из танка, компьютеров с RS232 уже почти нет. Хватит внешнего шнурка USB-RS232(TTL), или прямого подключения через USB контроллера

Нет уж это вы в танке, а я рядом стою. SWG уже не раз говорил, что ему насрать на то, что есть FT232 и другие подобные USB-UART мосты, т.к. в его компе есть железный COM, и этого для него достаточно. Важно понять, что робота он делает исключительно для себя, и ни на кого и ни на что не ориентируется в этом плане. Все, больше ничего не скажу, а то уже за других отвечаю.


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

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
reptile писал(а):
а не проще было взять какой-нибудь АРМ по стоимости меги128 и выкинуть кучу лишних микросхем - вместо внешнего ОЗУ,EEPROM и часов - внутренние, вместо регистра и УЛН-ки - транз.ключи, вместо МАХ232 - можно вывести УСБ и TTL-RS232,

По порядку. Не проще, потому что:
1. У нас в продаже их (ARM) нет, на заказ - дорого.
2. Распаять, а главное - развести без металлизации в домашних условиях корпус с более чем 64 ногами - геморрой такой, что мне не нужен.
3. Пока я буду изучать этот ARM с его заморочками, я уже успею под Мегу программу написать.
4. Под Мегу 128 я использую очень удобный для меня МикроПаскаль. Заморачиваться с С с ихними сплошными знаками препинания, скобками, и всякими закорючками - не хочу. А кроме С под АРМ ничего нет.
5. Внешние ОЗУ, EEPROM, часы, - я использую такие, какие мне удобно, а не те, что в ARM запихнули...
6. Городить сдвиговый регистр на транзисторах? Городить схему управления MOSFETами на рассыпухе? Да я что, идиот?
7. "вместо МАХ232 - можно вывести УСБ и TTL-RS232" - нахрена мне USB в роботе? мне что, его в задницу втыкать? По RS232 через MAX232 я веду отладку платы c COM порта компа, заливаю прошивки, с того же USART (до MAX232, отключаемого перемычками), у меня подключается радиоканал.

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

Свалить же все в одну кучу, и получить еще одну примитивную Ардуину, с хиленькими возможностями, которых еле - еле хватает на примитивные тележки, пусть даже и на ARMе - нехай этим пьяный ежик занимается... Если ему делать больше нефига.
Цитата:
нет, подключить транзисторы прямо к выводам контроллера без ненужного промежуточного регистра

Ага, и ваш ARM раскачает P-MOSFET, подвешенный к питанию 12-14,5v, и емкостью затвора в сотни - тысячи пикофарад, обеспечив ему размах сигнала на затворе не менее 9-10v, и даже не сдохнет при этом? Великое чудо Мониту...

Цитата:
компьютеров с RS232 уже почти нет. Хватит внешнего шнурка USB-RS232(TTL), или прямого подключения через USB контроллера
Это у вас нет. У меня - есть. Специально с COM и LPT плату при очередной сборке выбирал. А тянуть к роботу USB, особенно когда он при отладке бегает метров за 10, в другой комнате, - я что, совсем дурак? А по RS232 - запросто, у меня один отладочный шнурок 3 метра, когда при отладке робот не бегает, а подвешен рядом, на виду, другой - 20м, тонкий, гибкий, когда отлаживаю в реальных условиях, c наблюдением через телекамеру (у нее свой радиоканал), но по каким-то причинам (например, для оперативной перепрошивки на большой скорости при отладке), не использую командный радиоканал.


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

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


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

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


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

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

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