Куратор темы Статус: Не в сети Регистрация: 16.11.2006 Откуда: Всегда!
Для робота нижняя (несущая) плата будет выглядеть так:
#77
Процессор разместить технически можно, только вот тогда пришлось бы разъемы ставить мелкие, а они дороже обычных IDC в 30 раз и более. И положительной динамики за пару лет никакой нет А спонсора у меня нет. Поэтому число моторных драйвкров снижено до 4-х. У каждого, помимо питания, 5 ног управления и четыре силовых выхода. По длинной стороне разъемы ставить нежелательно, будут мешать. Второй короткий торец занят для подхода к верхнеиу аккумулятору, снизу места нет.
Наконец-то допроектировал блок печатных плат, который уже полгода назад все собирался начать. Сейчас платы отстаиваются, в воскресенье - контроль незамыленным взглядом, в понедельник - на изготовление.
Приехал SAM3U-EK. Монтаж не на пятерку, некоторые элементы кривенько стоят. Совсем Не понравилось крепление дисплея - болтается на толстой липучке, от касания тачскрина неприятно шевелится, уж не знаю, как это отразится на шлейфе. Хотя отверстия под штифты дисплея на плате есть, из-за толстой липучки штифты даже до платы не достают. Но ничего все работает, правда акселерометр как-то криво реагирует на ориентацию. Скоро будем мучать его со всех сторон.
zauropod Подскажи плиз двоешнику не могу записать в EEPROM отображенном в SRAMе командой ST. По Суперпупер-роботу чо нехотите управлять шаговиками с помощью XMEGи. У A1 как я понял четыре блока AWEX. Или я чота не догоняю для чего на плате четыре места под МС, кстати для меня зто тоже актуально. Чем управлять подачей проволки пока не решон.
Куратор темы Статус: Не в сети Регистрация: 16.11.2006 Откуда: Всегда!
max0000000 писал(а):
не могу записать в EEPROM отображенном в SRAMе командой ST
Апнот AVR1315 п.3.2 перечитай внимательно. Если не поможет - показывай код, где-то накосячил.
max0000000 писал(а):
управлять шаговиками с помощью XMEGи
При всей моей любви к XMEGA, дело не в шаговиках - она не вытянет глазки у робота:
#77
Минимальный дотклок на камеру 11МГц, а еще нужно данные сохранять/передавать, и с XMEGA даже с 160х120 видео запаришься. ARM будет рулить процессом. Но вообще-то число контроллеров может быть больше одного. Даже наверняка будет.
max0000000 писал(а):
для чего на плате четыре места под МС
Хрен знает - просто так, потренироваться. Платы процессора еще не будет как минимум пары месяцев, поскольку надо будет обкатать трансмиссию и заодно посмотреть на драйвера поближе. Я с ними еще не игрался, а их надо будет раза в четыре больше. Да и у меня нет никакого плана. Строю по кирпичикам, с изначально неправильным конструктивом, развлечения для.
zauropod При всей моей любви к XMEGA, дело не в шаговиках - она не вытянет глазки у робота Но вообще-то число контроллеров может быть больше одного. Даже наверняка будет
Так дергай ногами Суперпупер-робота с помощью XMEGI (своеобразный спиной мозг с мозжечком робота), а головой как раз потянет ARM. На блоки AWEX XMEGI (как я понял) только ключи приляпать останется.
По EEPROMу (ну прям беда у меня с ним). отобразил его LDI R16,0x08 STS 0x01CC,R16 далее гдето в программе прочетал его (убедился что читается вывел значение ячейки на экран) LDI R28,0x00 LDI R29,0x10 LD R3,Y Изменил значение и записал LDI R28,0x00 LDI R29,0x10 ST Y,R3 Убедился что установился флаг EELOAD активности загрузки страничного буфера EEPROM. Но ни значение не изменилось ни флаг не скинулся. А с английским у меня полный провал, как в прочим и с руским не намного лучше.
Куратор темы Статус: Не в сети Регистрация: 16.11.2006 Откуда: Всегда!
max0000000 Для вставки в свой текст цитаты, выделяешь текст в чьем-либо сообщении и щелкаешь по кнопке "цитировать" ниже никнейма из цитируемого поста.
max0000000 писал(а):
А с английским у меня полный провал
Вот это очень плохо. Нужно обязательно научиться хотя бы минимальному техническому английскому на уровне беглого чтения и понимания.
По записи в EEPROM. В отлисие от чтения, она всегда защищена, и на простых MEGA тоже. В случае с маппированным доступом на XMEGA снятие защиты происходит через CCP (Configuration Protection Bit), иначе команды записи в EEPROM не выполняются. Регистр CCP в данном случае должен содержать сигнатуру 0xD8, и в течение четырех следующих тактов процессора можно изменить бит CMDEX регистра NVM CTRLA, который и разрешает запись.
Как-то так нужно делать.
.... Тут нужно установить адрес, данные и команду записи в NVM регистры, ....
Заранее загружаем в ZH:ZL адрес NVM CTRLA, так как после снятия блокировки будет всего 4 такта до изменения бита CMDEX
Код:
ldi r30, 0xCB ldi r31, 0x01
бит CMDEX нулевой (NVM CTRLA[0]), соответственно готовим его для записи (0<<1)
Код:
ldi r17, 1
Снимаем блокировку CCP на следующих 4 процессорных такта:
zauropod Странно как то, обычно чем больше изучаеш тем больше понимаеш. А тут как то наоборот. Вычетал что после активизации отображения EEPROM в памяти данных, возможность выполнения загрузки страничного буфера EEPROM и чтения EEPROM через NVM-контроллер отключается. Так что может достаточно только изменить бит CMDEX регистра NVM CTRLA, который и разрешает запись.
zauropod писал(а):
Тут нужно установить адрес, данные и команду записи в NVM регистры
А без этого мож всетаки можно обойтись. Буду пробовать. СПОСИБЛ.
Куратор темы Статус: Не в сети Регистрация: 16.11.2006 Откуда: Всегда!
max0000000 писал(а):
А без этого мож всетаки можно обойтись
Ну так это все в общем виде, я кодом выделил обязательную часть. Но я практически на XMEGA с EEPROM пробовал только страничную запись-чтение через DMA, так что могут еще какие-то нюансы всплыть. Да и я с XMEGA пока только на C, хотя c CCP игрался, компилируя с программой на С ассемблерный файл CCP из фреймворка.
zauropod Вехал, не без вашей помоши, команда ST X,r вносит данные в страничный буфер. Далее вносим команду стирания-записи в CMD регистр. изменяем бит CMDEX регистра NVM CTRLA, который и разрешает запись из страничного буфера в ячейку EEPROM. Пишет проверил, только очень долго. Ставил проц в цикл 256х10(прмерно) тактов проца на клоке 32м так и не дождался. Ну мне это пока и не важно. Видемо в AVR оптимизировано под запись именно страницы а не одного байта.
Куратор темы Статус: Не в сети Регистрация: 16.11.2006 Откуда: Всегда!
max0000000 писал(а):
Видемо в AVR оптимизировано под запись именно страницы а не одного байта.
Экий ты быстрый. 256х10 * (1/32M) = 80 мкс. Запись в ППЗУ контроллера - единицы миллисекунд. Ожидание должно быть побольше раз в 30-40. Оптимизации нет, поскольку что для одного байта, что для страницы требуется подготовить внутренние высоковольтные цепи, накачать конденсаторы, поэтому и получается, что когда байт много, то среднее время записи на байт уменьшается.
Куратор темы Статус: Не в сети Регистрация: 16.11.2006 Откуда: Всегда!
Начал разгребать красную кучу с платы для XMega128, первый прототип которой был на предыдущей странице, правда много изменений сделал. Пока спаял только силовую часть, USB поддержку, сам МК и кое-что по-мелочи.
#77
Чип отзывается по JTAG, все порты в норме. Справа, там где будет память (512КB 10нс и 2/4MB 45нс) и много всего другого, пайку пока отложил на пару дней - я развел декодер 2 в 4 под VSSOP (0.5), а купил SSOP(0.65), ждем-с. Кстати, не ожидал подвоха - обычно ведь диоды маркируются у катода. Так у меня на плате зеленые светодиоды с маркером у катода, как и положено, а красные - у анода. Епрст, пришлось красные потом перепаивать. У меня на этой плате все ножки МК доступны, делай что хочешь, все порты EBI отключаемые, можно подсоединять модули хоть RAM, хоть SDRAM. Я три разных модуля изваял, чтобы разные конфигурации посмотреть. Бенчмарк контроллеров памяти хочется сделать ATSAM3U4E vs XMega128. А потом попробовать ZigBee на атмеловских модулях, взял себе парочку:
#77
Глянул на атмеловский зигбитовский фреймворк - как-то тяжело все там организовано. Придется разбираться, однако.
Куратор темы Статус: Не в сети Регистрация: 16.11.2006 Откуда: Всегда!
Собрал платку, только внизу навигатор снял - паял воздухом, а надо было паяльником, тоненькая пластмасса-ручка поплыла. Но он особо и не нужен - есть джойстик рядом.
#77
Играюсь, подключал дисплей и прочее. Но меня интересовала шина EBI - тут впал в ступор. Не могу понять в чем проблема - в режиме GPIO порты J,H,K работают как часы, любые комбинации уровней на всех ножках без проблем. При переводе их в трехпортовый EBI SRAM ALE1 не могу понять, как себя ведет ALE, не всегда выдается, без корреляции c nWR и nRD, шина данных работает, но адресные шины выдают непонятно что. Такое впечатление, что блок адреса в МК не получает питание, ни с того ни с сего разные запуски сниффера показывают то работу только по nWR, то nRD, хотя, к примеру, делаешь только запись, то ALE вообще пропадает. Это должно нормально работать на пустых шинах, вот на фотке ниже модули (их несколько вариантов) пропадают зря пока. Когда модуль SRAM собирал, вспомнил свою первую покупку пары модулей SDRAM по 1 MB в лохматом году на тогда еще тушинском рынке, по $40 за штуку...
zauropod XDB-ZP машинка очень интересная получается, фирменные киты отдыхают. А у меня пока всё заглохло. По весне мозги думают о чем угодно, но не о битах с байтами. А так в планах разобраться с блоком AWEX XMEGI.
Наконец распаял я свою плату =) Первый раз заказывал плату где-то, а не травил сам. Понравилось, хоть и деньги не малые =) В общем, я это всё к тому, что 16ти битная память отлично работает. Все "лишние" ноги повесил через 510Ом резюки на землю, UDQM к питанию подтянул... И из 4мбайт естественно работает только 1. Не стал заморачиваться со SRAM'ом, ибо SDRAM для меня проще, а цель - сделать устройство, а не экспериментировать. Скорсоть порядка 100кбайт до оптимизации и около 400 - после, но особо не копал пока...
Куратор темы Статус: Не в сети Регистрация: 16.11.2006 Откуда: Всегда!
Fasterpast писал(а):
Понравилось, хоть и деньги не малые
так покажи свое чудо, интересно будет глянуть.
Как и предполагал ранее, оставил EBI без питания, поэтому он криво работал. Atmel сейчас говорит, что на аналоговые цепи лучше питание подавать через RC фильтр и не использовать индуктор, результаты будут лучше. Я поэтому не поставил пока ничего - ни резистор, ни бусинку, ни дроссель. Не работал только порт A как надо, все остальные отлично пашут, а с подсоединенным питанием и А работает, естественно. Но потом отсоединил и забыл, но, вероятно, питание на EBI тоже идет через аналоговый блок, поэтому EBI и выдавал черти-что на адрес. С подключением питания все нормализовалось. А вот платка с 55нс 512КБ SRAM AS6C4008 (на предыдущем фото) в режиме ALE1 без CS выше 20 Мгц EBI глохнет - у нее минимальная длительность импульса на запись 45нс, чуть меньше - уже не пишет, то есть, макс паспортный клок еbi для нее - 22МГц, в Xmega можно настроить только первый цикл ожидания, что ничего не дает в данном случае. А в остальном - замечательно работает.
Мне нужен минимальный цикл записи-чтения, который достижим только в режиме ALE1 без CS, будет 4 цикла EBI на чтение и 5 на запись, т.е. 40нс/50нс при клоке EBI 100МГц. На большой плате у меня стоит 10нс память, но с ALE12, чуть похуже будет.
#77 Вот, поделка ) Там конечно еще много всего можно было расположить иначе и уменьшить размеры платы, но всё чертилось по ЛУТ привычке "сделай побольше зазор" и т.д. ))) Но, по крайней мере, она работает, и даже обошлось без крупных косяков. Единственное, когда xmeg'у разводил, не усмотрел, что вверху ножки питания (цифрового) и земли идут в другом порядке, поэтому пришлось их оставить висеть в воздухе. Ну и слот под флешку разводил по распиновке обычной SD карты, а у micro-sd оказывается одна земля, а не две, пришлось вешать соплю Как говорится, поспешишь - людей насмешишь. По работе платы в целом нашел только один косяк: от внешнего кварца стабильно работать не хочет (особенно EBI). От внутреннего 32/4 через PLL часами гоняет массивы с флешки в SDRAM и обратно, без проблем. Может и правда дело в том, что аналоговую часть запитал через дроссель, надо посмотреть будет...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения