|
|
  |
Использование 16-сегментного индикатора с 6 цифрами в протеусе |
|
|
|
Apr 13 2013, 18:01
|
Группа: Новичок
Сообщений: 3
Регистрация: 13-04-13
Пользователь №: 76 489

|
Здравствуйте всем. Тут такая проблемка. В протеусе подлючил индикатор к AtMega128.Пытаюбсь вывести строку из 5 символов. Вывожу каждый символ по очереди. Они отображаются но вот незадача, очень сильно видно как они моргают. То есть видно что в каждый момент только один символ зажжен. Задержка междлу символами 100 мс. Если делаю меньше то они отображаются вообще некорректно. Так вот вопрос как обычно работают с этими проклятыми индикаторами? Или это глюк протеуса? И еще такой вопрос. Основной цикл занят олбновлением индикатора,но мне нужно выполнить кое-какой код раз в секунду. Какэ то можно реализовать? Заранее спасибо
|
|
|
|
|
Apr 13 2013, 18:25
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(D@rkD@iver @ Apr 13 2013, 21:01)  Задержка междлу символами 100 мс. Если делаю меньше то они отображаются вообще некорректно. Так вот вопрос как обычно работают с этими проклятыми индикаторами? Или это глюк протеуса? И еще такой вопрос. Основной цикл занят олбновлением индикатора,но мне нужно выполнить кое-какой код раз в секунду. Ключевые слова для поиска: "Динамическая индикация микроконтроллер". 100 мС - это много. Для 6 цифр скорее подойдут 10 мС. Протеусу место в мусорном контейнере, ИМХО. АВР - это не тот случай, где нужны симуляторы. Я вопроса вашего не понял. Но расскажу, как я решал похожую задачу. В основном цикле крутилась основная программа, которая выполняла кучу всяких действий, в том числе и вывод текста на индикатор. Для хранения этого текста использовался текстовый буфер на 6 символов, и основная программа, не задумываясь, просто писала в него символы, с каждым символом увеличивая счетчик записанных и еще не выведенных на индикатор символов на единичку. И все, что происходило с буфером потом, ее не касалось. Для отображения использовались обработчики от таймеров. Первый обработчик вызывался 100 раз в секунду и включал цифру за цифрой на индикаторе, реализуя динамическую индикацию. Второй же обработчик (его можно вызывать реже, например, 20 раз в секунду) проверял счетчик записанных в буфер и еще не выведенных на индикатор символов, и при отличии содержимого счетчика от нуля обновлял содержимое индикатора ...
|
|
|
|
|
Apr 14 2013, 03:17
|
Группа: Новичок
Сообщений: 3
Регистрация: 13-04-13
Пользователь №: 76 489

|
ну в принципе я так и делаю, есть буффер из которого прога отправляет символы на индикатор, если буфер поменять то мнгновенно поменябтся данные на индикаторе. но сейчас основная проблема что не могу его настроить чтоб он отображался нормально без морганий, если ставлю 10 мс то он не отображает ничего
|
|
|
|
|
Apr 15 2013, 07:44
|
Группа: Новичок
Сообщений: 1
Регистрация: 3-02-09
Из: Украина, Славянск
Пользователь №: 44 361

|
динамическая индикация в протеусе и в железе разные вещи, приходится для отладки ставить другие задержки.
|
|
|
|
|
Apr 16 2013, 05:02
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
нет, не надо для отладки ствить другие задержки, надо настроить протеус. в его меню 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Гц, но вы подогнали настройки протеуса так, что ничего не мигает и довольны, как слон... а после прошивки в девайс страшно удивляетесь, что все страшно мерцает.
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Apr 21 2013, 15:34
|
Частый гость
 
Группа: Свой
Сообщений: 118
Регистрация: 3-12-06
Из: Новороссийск
Пользователь №: 23 082

|
Может поможет: Proteus_FAQ_for_Dummies.pdfСтраница 29.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|