![]() |
![]() |
#21 |
Senior Member
Регистрация: 03.11.2013
Адрес: Севастополь
Сообщений: 347
Вес репутации: 0 ![]() |
![]()
... именно поэтому в такую, довольно тормозную по своему принципу систему просто просится SPI-RAM. На запись пакета даже в килобайт размером там времени нужно будет "не 2-3 порядка", а меньше миллисекунды.
|
![]() |
![]() |
![]() |
#22 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
![]()
Это и есть "2-3 порядка". Команда проца отрабатывается за 62.5 НАНО секунды.
![]() |
![]() |
![]() |
![]() |
#23 |
Senior Member
Регистрация: 03.11.2013
Адрес: Севастополь
Сообщений: 347
Вес репутации: 0 ![]() |
![]()
Не, я про отзывчивость всей системы в целом. Сравнивал с теми самыми 7-8мсек, что отдаются серве.
|
![]() |
![]() |
![]() |
#24 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
![]()
Так конечный автомат, запуская серву на "поворот" - не ждет жеж "сложа ручки" ... он следующее событие в очереди отрабатывает, если оно есть и если может.
![]() ![]() А подключение SPI-RAM к процу, да превращает его "двуручный тормоз": только из-за последовательного интерфейсу, надо отдать "хотя бы" 16 бит адреса и отдать/получить 8 бит данных + команда, хотя бы в пару бит (читать/писать/это адрес/..) + начало/конец сеансу ... итого даже для 64к имеем 26 - 28 циклов передачи ... то бишь УЖЕ БОЛЬШЕ ПОРЯДКА. А если учесть, что передача одного бита у вас никак не влезет менее чем в 3-4 команды "итого", то имеем ПОЧТИ ДВА порядка ... а ежели учесть что это все подпрогаммы, да писанная либа, да с учетом "разных краевых эффектов" ... то вот вам и все ТРИ ПОРЯДКА. ... как итого: это не "проц тормозной". Это подключение SPI-RAM ДЕЛАЕТ ЕГО ТАКОВЫМ. потому как ежели родной памяти "нехватат", то усё - "труба". ... вот и хочу "выйти" через нормальный выход, предусмотренный авторами проца. Дабы "отзывчивость всей системы" соответствовала ВОЗМОЖНОСТЯМ микроконтроллера, а не самой "крайней дырки в бочке". ![]() P.S. связка "датчик - серва" это далеко не "вся система". В итого уже насобиралось: 1. 8 серво двигателей на ножках 16-и битных таймеров 1,3 и 4 (чем будут заняты расписано уже 6шт); 2. 4 маршевых двигателя на ножках 8-и битных таймеров (4шт) + UART1,2,3 (2х3=6) + T0in + T4ICP ... по три ноги на движок: "вперед/назад/скорость" (эти расписаны все); 3. датчик HC-SR04 на ноге T5_ICP (echo по прерыванию) + аналог13 (trig) 4. 20,21 - I2C, на который садятся: гироскоп GY-521 + гирокомпас GY-271 (как ведомый к GY-521) + альтиметр BMP180 + дисплей LCD1602 5. 50-53 - SPI с каналом приема/передачи по беспроводному интерфейсу типа nrf905; 6. Аналоги 0,1,2,3 - пара микрофонных ушей для возможности обработки в дифференциальном режиме ADC с усилениями 10/200; 7. Аналоги 4,5,6,7 - 4 ИК датчика обнаружения препятствий и слежения за линией (можно по парно, можно все 4 одного типа - уже опробовано тоже); 8. Аналоги 14,15 - датчик PIR + датчик Tilt; 9. Аналоги 8,9,10,11,12 + T5in + T5outA,B,C - "итого" 9 ножек ... всё что остается на пару датчиков обнаружения цвета TCS3200. 10. UART0 - на последовательную связь с компом и/или работу с SD-картами. ... и xmem + D42,D43 на контроллер "внешней памяти" 128кило или 2метра. ... итого нехватает одной ножки. ![]() Последний раз редактировалось Arhat109; 16.07.2015 в 15:18. |
![]() |
![]() |
![]() |
#25 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
![]()
Вот, кстати наткнулся на шикарное в части доходчивости описание конечных автоматов на простом примере: http://ru.wikipedia.org/wiki/%D0%90%...BD%D0%B8%D0%B5
Практически "вся теория конечных автоматов". ![]() Самое печальное в том, что микроконтроллеры, как устройства управления именно так и должны программироваться. А типовой Wiring толи по незнанию авторов толи по какой ещё причине не содержит даже намеков на этот подход. И это сильно осложняет создание действительно эффективных применений микроконтроллеров. Администратору форума настоятельно рекомендую воткнуть это описание куда-то в общедоступный раздел по теории. Проще, наверное и не изложишь. |
![]() |
![]() |
![]() |
#26 |
Senior Member
Регистрация: 03.11.2013
Адрес: Севастополь
Сообщений: 347
Вес репутации: 0 ![]() |
![]()
Та ладно. При чем тут wiring и ардуино ? Задача их разрабов - обучить программированию каждую домохозяйку.
А те, кто не считает себя таковыми, либо переделывают под себя стандартные библиотеки, либо просто берут ардуиновские платы и программируют их "нормальными" языками (вышеупомянутые асм и чистый Си). И получают на выходе конфету, шоколадную и с орехами. |
![]() |
![]() |
![]() |
#27 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
![]()
Так вот как раз и вопрос "чему и как учить"...
![]() Использован "типовой" подход к созданию либы ... фактически, с использованием Wiring, КА строится "строго последовательно" ... а "железяка" хочет выдерживать тайминги, имеет разные состояния и правила переходов. Как следствие, имеем примеры сплошь и рядом обставленные задержками. А при попытке соединить две железки - кучу проблем. Поскольку они управляться должны как-бы "независимо"... ан нет: delay() - "наше всё". Помножьте это на "отсутсвие знаний, навыков и умений" у домохозяек. Собственно тут и лежит "мнение" что микроконтроллер - это тормоза. ![]() На самом деле, 16Мгц с тактированием 1 команда = 1 такт, это "достаточно круто". К примеру, это примерно производительность i286 без FPU (в среднем 2-4 такта на команду, помнится и теже 12-16Мгц). А, в свое время, им пользовались и для достаточно серъезных задач, в частности программирование игр. И последние модели оснащались мегабайтами памяти... А, ежели иметь "встроенный" КА, то все выглядит несколько иначе. И подход к программированию МК - совсем иной. ... и delay() внезапно избыточен. И этот подход к программированию управления железом - как раз интуитивно прост и понятен. ![]() |
![]() |
![]() |
![]() |
#28 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
![]()
Ещё "одна задача" для расширенной памяти: вывод на видеокарты. От старых компов осталось полно разного VGA-хлама, почему бы не организовать вывод "на монитор" напрямую с микроконтроллера, ась?
Нереально? Да, ладно. VGA 640x480 = 0.3Мп, а самое интересное, что имеет режимы "текстового" и "псевдотекстового" показу. Это где есть такое понятие как "шрифт" - матрица из 8х8, а то и 9х16 точек экрана с заранее прописанными символами-рисунками. И, в этом случае, весь экран внезапно превращается в размер 80х60 картинок... то бишь 4800 .. байт. Даже в память Меги влезет и без расширения. Кстати, помнится VGA позволял хоть всю излишнюю память упихать картинками и переключать их банками по 32шт. или около того (сейчас уже плохо помню). ... когда-то делал такую "псевдографику" для 286-го на EGA ... получал скорость перерисовки экрана до 16 кадров в сек. ... неужели этот микроконтроллер не справится? Почему я в это не верю? ![]() |
![]() |
![]() |
![]() |
#30 |
Senior Member
Регистрация: 20.09.2014
Сообщений: 145
Вес репутации: 0 ![]() |
![]()
Девайсов куча по сопряжению атмега и мониторов vga, вот ссылка на один из них:
tinyvga.com/avr-isa-vga |
![]() |
![]() |
![]() |
Метки |
расширение памяти, sram extended, xmem |
Здесь присутствуют: 2 (пользователей: 0 , гостей: 2) | |
|
|