Перейти к содержанию
    

Использование 16-сегментного индикатора с 6 цифрами в протеусе

Здравствуйте всем. Тут такая проблемка.

В протеусе подлючил индикатор к AtMega128.Пытаюбсь вывести строку из 5 символов.

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

Задержка междлу символами 100 мс. Если делаю меньше то они отображаются вообще некорректно.

Так вот вопрос как обычно работают с этими проклятыми индикаторами?

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

Какэ то можно реализовать? Заранее спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задержка междлу символами 100 мс. Если делаю меньше то они отображаются вообще некорректно.

Так вот вопрос как обычно работают с этими проклятыми индикаторами?

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

Ключевые слова для поиска: "Динамическая индикация микроконтроллер".

 

100 мС - это много. Для 6 цифр скорее подойдут 10 мС.

 

Протеусу место в мусорном контейнере, ИМХО. АВР - это не тот случай, где нужны симуляторы.

 

Я вопроса вашего не понял. Но расскажу, как я решал похожую задачу. В основном цикле крутилась основная программа, которая выполняла кучу всяких действий, в том числе и вывод текста на индикатор. Для хранения этого текста использовался текстовый буфер на 6 символов, и основная программа, не задумываясь, просто писала в него символы, с каждым символом увеличивая счетчик записанных и еще не выведенных на индикатор символов на единичку. И все, что происходило с буфером потом, ее не касалось. Для отображения использовались обработчики от таймеров. Первый обработчик вызывался 100 раз в секунду и включал цифру за цифрой на индикаторе, реализуя динамическую индикацию. Второй же обработчик (его можно вызывать реже, например, 20 раз в секунду) проверял счетчик записанных в буфер и еще не выведенных на индикатор символов, и при отличии содержимого счетчика от нуля обновлял содержимое индикатора ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Протеусу место в мусорном контейнере, ИМХО. АВР - это не тот случай, где нужны симуляторы.
напрасно вы так. в чем другом - не знаю, но для отладки прог с МК протеус просто крайне удобен и полезен.

 

P.S. не понятно, зачем в вашем примере второй таймер - разве основная программа не могла писать "не задумываясь" сразу в буфер индикатора? к чему посредник, перемещающий данные из одного буфера в другой?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

напрасно вы так. в чем другом - не знаю, но для отладки прог с МК протеус просто крайне удобен и полезен.

 

P.S. не понятно, зачем в вашем примере второй таймер - разве основная программа не могла писать "не задумываясь" сразу в буфер индикатора? к чему посредник, перемещающий данные из одного буфера в другой?

Да, можно и так, это не принципиально. Задача-то несложная, и я просто предлагаю автору темы поискать в Сети, как реализуется динамическая индикация ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну в принципе я так и делаю, есть буффер из которого прога отправляет символы на индикатор, если буфер поменять то мнгновенно поменябтся данные на индикаторе.

но сейчас основная проблема что не могу его настроить чтоб он отображался нормально без морганий, если ставлю 10 мс то он не отображает ничего

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нет, не надо для отладки ствить другие задержки, надо настроить протеус. в его меню System есть пунктик Set Animation Options - там настраиваются режимы, позволяющие привести в соответствие "мгновенность" обновления диспля компьютера с "виртуальным" временем исполнения. вы замечали, что протеус как правило для имитации 10-миллисекундных процессов затрачивает сотни миллисекунд? поэтому ваша динамическая индикация на дисплее компа выглядит как редкое мигание отдельных разрядов. чтобы как-то это сгладить и служит указанный мной пункт меню. Задайте Frames per Second = 20, Timestep per Frame = 50m, Single Step Time = 50m, Max SPICE Timestep = 25m, Step Animation Rate = 4 (так настроено у меня и я не жалуюсь). надеюсь, эти настройки вам помогут, а если нет - поварьируйте первые два параметра и подберите подходящие для вас.

 

Еще в параметрах динамических (многоразрядных) индикаторов есть Minimum Trigger Time - этакий аналог времени послесвечения, можно подстроить эту величину для какой-то компенсации слишком медленной симуляции...

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С протеусом сталкиваюсь не часто, но в сети попадались на глаза подобные топики. Суть (если это "оно") в том, что частота тактирования индикатора не должна быть кратна обновлению экрана протеуса. Или частота обновления в протеусе не должна быть кратна частоте обновления экрана. Помню, что, вместо 10мс необходимо установить к примеру 9.5мс. Или чтото в этом духе. Где править эти настройки я не помню. Возможно народ подскажет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже несколько дней работать пытаюсь в протесе.

Мало в нем конечно удобства, но работать можно, особенно когда начинаешь понимать где и от чего у него вылазят глюки.

AVR Tiny13a эммулируется нормально. Хотя порой заметно что есть какая-то странная реакция на прошивку, может вылететь с симуляции с непонятной ошибкой.

 

что касается димамической индикации, так 100мс на символ - это реально много

обычно выбирается из соображений минимум 30Гц на символ * кол-во символов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...