Самодельный лог. анализатор на AVR + SG24064
Самодельный лог. анализатор на AVR + SG24064
Доброго здоровья!
"Спас" от утилизации аж два символьно-графических дисплея формата 240х64 точек. Пока разбираюсь с ними и пишу свою низкоуровневую библиотеку на ассемблере AVR. И тем временем задумал построить простенький лог. анализатор - очень уж формат дисплея на него напрашивается.
Не так, чтобы мне этот анализатор нужен, но так и просится построить на его снове полезное устройство.
Тем более, что пришла пора длинных вечеров, а просто просиживать их у ящика желания нет.
Короче, я уже настроился творить, но кое какие вопросы по этому поводу требуют разъяснения.
Пока один из них.
Каким образом собирать данные с входов:
а) семплировать с определенным периодом и откладывать в памяти (как это делают цифровые осциллографы)
или
б) ожидать изменения на входах и сохранять в памяти с временным штампом?
Надеюсь выразился внятно.
Кто что может посоветовать?
PS. Пошукал по теме на easyelectronics, оказывается DI HALT похожий вариант (б) еще в 10-м году предлагал.
Пока читаю ту ветку.
PPS. Ветка DI HALT-а заглохла.
На Fun Electronic процесс пошел по варианту а), но совсем в другой уровень - мне не потянуть.
"Спас" от утилизации аж два символьно-графических дисплея формата 240х64 точек. Пока разбираюсь с ними и пишу свою низкоуровневую библиотеку на ассемблере AVR. И тем временем задумал построить простенький лог. анализатор - очень уж формат дисплея на него напрашивается.
Не так, чтобы мне этот анализатор нужен, но так и просится построить на его снове полезное устройство.
Тем более, что пришла пора длинных вечеров, а просто просиживать их у ящика желания нет.
Короче, я уже настроился творить, но кое какие вопросы по этому поводу требуют разъяснения.
Пока один из них.
Каким образом собирать данные с входов:
а) семплировать с определенным периодом и откладывать в памяти (как это делают цифровые осциллографы)
или
б) ожидать изменения на входах и сохранять в памяти с временным штампом?
Надеюсь выразился внятно.
Кто что может посоветовать?
PS. Пошукал по теме на easyelectronics, оказывается DI HALT похожий вариант (б) еще в 10-м году предлагал.
Пока читаю ту ветку.
PPS. Ветка DI HALT-а заглохла.
На Fun Electronic процесс пошел по варианту а), но совсем в другой уровень - мне не потянуть.
Последний раз редактировалось Fahivec 07 дек 2017, 02:20, всего редактировалось 2 раза.
Тест пройден!
- rhf-admin
- администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
- Сообщения: 3060
- Зарегистрирован: 25 авг 2009, 23:19
- Откуда: Уфа
- Контактная информация:
Re: Самодельный лог. анализатор на AVR + SG24064
Хм, я б наверное тоже по варианту "а" пошёл. Так памяти меньше займёт, да и зачем нужны эти "временные штампы", что потом с ними делать?
На мой взгляд не так важно знать точное время, когда произошло то или иное событие, важнее знать когда это произошло относительно других событий. Скажем один фронт (импульс, импульс...) относительно другого.
З.Ы. Выкладывай тогда уж и ссылки на темы на easyelectronics и fun electronics, чтоб мы тоже почитали.
На мой взгляд не так важно знать точное время, когда произошло то или иное событие, важнее знать когда это произошло относительно других событий. Скажем один фронт (импульс, импульс...) относительно другого.
З.Ы. Выкладывай тогда уж и ссылки на темы на easyelectronics и fun electronics, чтоб мы тоже почитали.
С уважением, администрация сайта.
Re: Самодельный лог. анализатор на AVR + SG24064
Ссылки сделал/вставил в головном сообщении.
Вот еще одна тема "нашего" немецкого камрада по варианту а). Но там, естесственно, всё на Немецком.
Почему "нашего" ? Так такой же заядлый подельщик увлеченный электронщик!
В двух словах, у него семплирование происходит на внешнюю SRAM, причем совершенно "хардверно". МК только управляет тактированием, стартом/стопом (а также триггером и пресемплом!) и последующей перекачкой на комп.
А там самописная прога собственно и заправляет этой железкой и выводит в графику. Анализатора, как такового, он еще не написал.
Т.е. хороший 8-канальный "показометр" с графикой в цвете.
Вот тоже думаю, может не изобретать? (Нет, блин, а как же хламерская гордость?)
Хотя, тогда уж и готовый купить можно. Причем со всеми плюшками.
По ссылке выше (вариант б) есть об этом подробнее. Не хочу всё повторять.
Вот еще одна тема "нашего" немецкого камрада по варианту а). Но там, естесственно, всё на Немецком.
Почему "нашего" ? Так такой же заядлый подельщик увлеченный электронщик!
В двух словах, у него семплирование происходит на внешнюю SRAM, причем совершенно "хардверно". МК только управляет тактированием, стартом/стопом (а также триггером и пресемплом!) и последующей перекачкой на комп.
А там самописная прога собственно и заправляет этой железкой и выводит в графику. Анализатора, как такового, он еще не написал.
Т.е. хороший 8-канальный "показометр" с графикой в цвете.
Вот тоже думаю, может не изобретать? (Нет, блин, а как же хламерская гордость?)
Хотя, тогда уж и готовый купить можно. Причем со всеми плюшками.
Должен не согласиться с тобой - вариант (б) требует меньше памяти, т.к. не "семплирует" тупо каждые, скажем, 10 мкс, а пишет в память только при изменении на входах. При этом с новыми данными сохраняет и относительное время в заданных единицах, напр. в тех же 10 мкс.Хм, я б наверное тоже по варианту "а" пошёл. Так памяти меньше займёт, да и зачем нужны эти "временные штампы", что потом с ними делать?
По ссылке выше (вариант б) есть об этом подробнее. Не хочу всё повторять.
Собственно мои рассуждения.
Тест пройден!
Re: Самодельный лог. анализатор на AVR + SG24064
"Информация к размышлению..."(c)
Сегодня набросал для прикидки код обработчика прерывания с самыми необходимыми инструкциями. Оказалось, я в предидущем сообщении недооценил возможного быстродействия.
EDIT. Засада! ATMega16 не имеет прерываний по смене уровня на входах! Поэтому код под спойлером отредактирован.
Значит, придется городить внешний детектор смены уровней в любом случае.
Т.е. при тактовой частоте 16 Мгц минимальный период захвата окажется около 1,6 мкс.
При 10 Мгц - ок. 2,5 мкс.
Хм, довольно не плохо, а?
Значит, таймер Т1 должен тикать с периодом в 1 мкс. Тогда его переполнение наступит через добрых 65 миллисекунд - мало!
Добавим счетчик переполнений (1 байт = 255 переполнений) и получим максимальное время захвата данных более 16 секунд.
Вот где-то так.
Сегодня набросал для прикидки код обработчика прерывания с самыми необходимыми инструкциями. Оказалось, я в предидущем сообщении недооценил возможного быстродействия.
EDIT. Засада! ATMega16 не имеет прерываний по смене уровня на входах! Поэтому код под спойлером отредактирован.
Значит, придется городить внешний детектор смены уровней в любом случае.
Захват данных.
При 10 Мгц - ок. 2,5 мкс.
Хм, довольно не плохо, а?
Значит, таймер Т1 должен тикать с периодом в 1 мкс. Тогда его переполнение наступит через добрых 65 миллисекунд - мало!
Добавим счетчик переполнений (1 байт = 255 переполнений) и получим максимальное время захвата данных более 16 секунд.
Вот где-то так.
Тест пройден!
Re: Самодельный лог. анализатор на AVR + SG24064
Продолжаю размышления.
В связи с нехваткой портов при использовании внешнего ОЗУ, обдумываю минимальный вариант без онного.
Внутреннего ОЗУ в AT90S8515 всего 512 байтов. При скромнном стеке в 12 байт получу максимальное кол-во регистрируемых событий 125 при затрате 4-х байт на событие (1 байт данных и 3 байта времени). Но писать код придется без использования переменных в ОЗУ и с минимальным использованием стека.
Ну хорошо, можно ограничиться 120-ю событиями, тогда под стек и переменные останется уже 32 байта.
Вот что можно "проанализировать" этими 120-ю изменениями? Т.е. на что их хватит?
Если же использовать Mega16, то с ее 1кБ ОЗУ "возможности" удваиваются.
На что хватит 240 "захватов"?
Я думаю, активные пользователи лог.анализаторов смогут подсказать.
В связи с нехваткой портов при использовании внешнего ОЗУ, обдумываю минимальный вариант без онного.
Внутреннего ОЗУ в AT90S8515 всего 512 байтов. При скромнном стеке в 12 байт получу максимальное кол-во регистрируемых событий 125 при затрате 4-х байт на событие (1 байт данных и 3 байта времени). Но писать код придется без использования переменных в ОЗУ и с минимальным использованием стека.
Ну хорошо, можно ограничиться 120-ю событиями, тогда под стек и переменные останется уже 32 байта.
Вот что можно "проанализировать" этими 120-ю изменениями? Т.е. на что их хватит?
Если же использовать Mega16, то с ее 1кБ ОЗУ "возможности" удваиваются.
На что хватит 240 "захватов"?
Я думаю, активные пользователи лог.анализаторов смогут подсказать.
Последний раз редактировалось Fahivec 05 янв 2018, 16:01, всего редактировалось 1 раз.
Тест пройден!
Re: Самодельный лог. анализатор на AVR + SG24064
Всех с наступившим 2018-м годом! Здоровья и творческих успехов!
Итак, подсказки по применению лог.анализатора я не дождался
Посему планирую применение внешнего ОЗУ, как опцию. Но, тут возникает проблема с таймингами, о которой писал в другой теме.
Ломал голову, как же подключить дисплей к оставшимся портам, коих осталось всего 6 линий! А ведь еще не подключены кнопки/крутилки!
Но вот после новогоднего "прояснения" возникла мысль: а почему бы не оставить подключение а-ля "внешняя память", но к дисплею обращаться проверенным "ногодрыгом", т.е. на лету отключать интерфейс внешнего ОЗУ для обращения к LCD?
Какие соображения по этому вопросу будут у уважаемого сообщества?
Итак, подсказки по применению лог.анализатора я не дождался
Посему планирую применение внешнего ОЗУ, как опцию. Но, тут возникает проблема с таймингами, о которой писал в другой теме.
Ломал голову, как же подключить дисплей к оставшимся портам, коих осталось всего 6 линий! А ведь еще не подключены кнопки/крутилки!
Но вот после новогоднего "прояснения" возникла мысль: а почему бы не оставить подключение а-ля "внешняя память", но к дисплею обращаться проверенным "ногодрыгом", т.е. на лету отключать интерфейс внешнего ОЗУ для обращения к LCD?
Какие соображения по этому вопросу будут у уважаемого сообщества?
Тест пройден!
Re: Самодельный лог. анализатор на AVR + SG24064
посади дисплей на I2C хоть через MCP23008. так обычно и сделано на контроллерах когда требуется IO экономить.
или хоть гирлянду на 74HC595...74LS595 из 3х ИО получится 8...16...
Re: Самодельный лог. анализатор на AVR + SG24064
MCP23008 нет у меня. Всё, что в проекте будет использовано, стараюсь взять из того запаса и хлама, что есть в наличии. Иначе какой же из меня "хламер"?
Про регистры тоже думал, они даже есть в наличии. Но пока хочу опробовать, о чем спрашивал.
Тест пройден!
Re: Самодельный лог. анализатор на AVR + SG24064
Пока еще трех лет не прошло, хочу просто сообщить, что "прожект" сей я еще не похоронил.
Плату устройства изготовил еще в первой половине прошлого года. Однако память и ее обвязку еще не впаял.
Т.е. пока играюсь с внутренним ОЗУ контроллера. И, соответственно, не могу с уверенность сказать, как себя поведут ЖКИ и внешнее ОЗУ, подключенные на общую шину.
Большую часть прошедшего с последнего сообщения времени затея эта пролежала в ожидании когда у меня наступит такое редкое сочетание, как свободное время плюс желание этим заниматься.
Правда, в последний месяц проекту повезло, как никогда: я научил МК рисовать графики по фиктивным данным и дошел до того момента, когда нужно писать процедуры управления выводом (курсоры, выбор окна и т.п.)
Вот тут-то опять спотыкнулся - нужно писать систему менюшек. Но, кроме сложности такого программирования сказывается и неопределенность желаемого (нет конкретного ТЗ).
На текущий момент я остановился на модели с дополнительным регистром счета времени (24 битный таймер/счетчик) и отказался от режима 8х8 пикселов на знакоместо, выбранного ранее в связи с упрощением графических процедур.
Из-за особенностей контроллера дисплея в текстовом режиме 6х8 графика кастрируется на два старших бита.
Ну, в общем: продолжение следует...
Плату устройства изготовил еще в первой половине прошлого года. Однако память и ее обвязку еще не впаял.
Т.е. пока играюсь с внутренним ОЗУ контроллера. И, соответственно, не могу с уверенность сказать, как себя поведут ЖКИ и внешнее ОЗУ, подключенные на общую шину.
Большую часть прошедшего с последнего сообщения времени затея эта пролежала в ожидании когда у меня наступит такое редкое сочетание, как свободное время плюс желание этим заниматься.
Правда, в последний месяц проекту повезло, как никогда: я научил МК рисовать графики по фиктивным данным и дошел до того момента, когда нужно писать процедуры управления выводом (курсоры, выбор окна и т.п.)
Вот тут-то опять спотыкнулся - нужно писать систему менюшек. Но, кроме сложности такого программирования сказывается и неопределенность желаемого (нет конкретного ТЗ).
На текущий момент я остановился на модели с дополнительным регистром счета времени (24 битный таймер/счетчик) и отказался от режима 8х8 пикселов на знакоместо, выбранного ранее в связи с упрощением графических процедур.
Из-за особенностей контроллера дисплея в текстовом режиме 6х8 графика кастрируется на два старших бита.
Ну, в общем: продолжение следует...
Тест пройден!