динамическая индикация

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Spider
Опытный кот
Сообщения: 732
Зарегистрирован: Чт дек 29, 2005 07:29:25
Откуда: Омск
Контактная информация:

Сообщение Spider »

IMHO использовать delay для таких вещей, не позволительная растрата мипсов. Если КОТ поторопится, то моя статья как раз о этом на Си должна появиться на сайте.
Аватара пользователя
Mr.Moss
Открыл глаза
Сообщения: 68
Зарегистрирован: Вт июл 24, 2007 23:34:23

Сообщение Mr.Moss »

А зачем вообще задержки какието писать? :shock:
Динамическая индикация безних прекрасно работает, ПРОВЕРЕНО!
Аватара пользователя
Spider
Опытный кот
Сообщения: 732
Зарегистрирован: Чт дек 29, 2005 07:29:25
Откуда: Омск
Контактная информация:

Сообщение Spider »

Не хочу объяснять уже разжёваное, но надо :) Читай статьи и обучалку.
Аватара пользователя
Mr.Moss
Открыл глаза
Сообщения: 68
Зарегистрирован: Вт июл 24, 2007 23:34:23

Сообщение Mr.Moss »

Я пекрас знаю что в обучалке написано по этому поводу, я просто хотел сказать что есть способ реализации динамической индикации без каких либо задержек, зачем тратить МИПСы на пустой цикл.
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

ты пример приведи чтоб понятно было
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

Mr.Moss, ну дык и просвети всех, чего пустозвонством-то заниматься? :)
Вон, Spider уже статью написал, а ты чего межуешься? :)
Оптимизм х (Опыт + Знания) = const
Аватара пользователя
Mr.Moss
Открыл глаза
Сообщения: 68
Зарегистрирован: Вт июл 24, 2007 23:34:23

Сообщение Mr.Moss »

Сорри, поспешил с созданием темы :roll:
Дело в следующем, понадобилось мне както сделать индикацию на четырех семисигментных индикаторах. Дело то конечно не хитрое, но вот я подумал что задержку писать не стоит, зачем тратить время на пустые циклы и нашел вот такое решение, попытаюсь оъбяснить на словах, если будет не понятно выложу код (ейчас немогу не затем компом).
Как всем извесно для реализации динамической индикации необходимо использовать прерывание таймера, в данном случае это прерывание остается, для каждого индикатора пишется подпрограмма которая выводит в порт код для индикации и включает анод(катод) этого индикатора, при этом порт не обнуляется, а сигнал на нем висит пока не сработает прерывание и не перейдет на следующую подпрограмму, выходит что сементы светятся в промежутке между прерываниями, а прерывание по таймеру всеголиш по очереди переходит на одну из этих четырех подпрограмм
Аватара пользователя
Mr.Moss
Открыл глаза
Сообщения: 68
Зарегистрирован: Вт июл 24, 2007 23:34:23

Сообщение Mr.Moss »

Вот собственно кусок кода.
Вложения
Test.asm
(1.83 КБ) 386 скачиваний
Аватара пользователя
Mr.Moss
Открыл глаза
Сообщения: 68
Зарегистрирован: Вт июл 24, 2007 23:34:23

Сообщение Mr.Moss »

Странно? Тема вро как популярная, но почемуто все молчат.
Аватара пользователя
Mr.Moss
Открыл глаза
Сообщения: 68
Зарегистрирован: Вт июл 24, 2007 23:34:23

Сообщение Mr.Moss »

Коты и котята, а так же мышы и мышки! :o
Отзовитесь кто нибуть, скажите свое мнение по данной реализации, а то сначала просят разъяснить, а потом в ответ тишина. :(
Аватара пользователя
WildCat
Собутыльник Сэра Мурра
Сообщения: 2918
Зарегистрирован: Вт янв 10, 2006 00:26:45
Откуда: Челябинск

Сообщение WildCat »

У меня в часах стоит ВЛИ - так я решил проблему просто - поставил фоторезистор и транз в цепь накала. То же самое можно впринципе сделать и с светодиодными индикаторами, ШИМ здесь - ненужное нагромождение
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

Mr.Moss, не шуми! ;)
Вполне себе нормальная реализация, кстати, имеет право на жизнь. Наверное, даже сделаю так когда-нибудь :) У меня иногда случается, что таймеров под динамику уже не хвататет, тогда просто пишу функцию типа "показывать такие-то цифры в течение ххх мс" и пользую ее вместо обычных delay.

WildCat
, т.е. предлагается поставить транзистор в цепь общего катода (анода) индикатора? Причем не в ключевом режиме? При токе потребения порядка 0.5А греться будет достаточно сильно... Не очень хороший вариант.
А если в ключевом - получаем тот же ШИМ. :)
Оптимизм х (Опыт + Знания) = const
RexeR
Родился
Сообщения: 3
Зарегистрирован: Чт сен 21, 2006 14:27:35

Сообщение RexeR »

Если используете сдвиговый регистр , то возмите например TPIC6B595. Он имеет вход "G" , ШИМ-уя его можно управлять яркостью и статической , и динамической индикации от 0 до макс.
Аватара пользователя
Mr.Moss
Открыл глаза
Сообщения: 68
Зарегистрирован: Вт июл 24, 2007 23:34:23

Сообщение Mr.Moss »

Да я и не шумлю :roll:
Просто интересно, может есче какие варианты народ предложит.
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

Mr.Moss, не обижайтесь, это я так, к слову... :)

RexeR, мысль интересная. В принципе, я можно то же самое сделать и на 74HC595
Оптимизм х (Опыт + Знания) = const
Аватара пользователя
Spider
Опытный кот
Сообщения: 732
Зарегистрирован: Чт дек 29, 2005 07:29:25
Откуда: Омск
Контактная информация:

Сообщение Spider »

И снова воскресим тему :)
Собрал я "табло" из 9ти 8ми сегментных индикаторов. Естественно всё динамически. Но вот беда. Яркость диодов упала, а упала видать в 9 раз по сравнению с обычным статическим свечением диода.
Ну думаю, щас как ток задеру у диодов - будут знать как выпендриваться тут. Взял да и уменьшил сопротивление, ограничивающее ток диодов, а яркость не изменилась. Тогда я давай было грешить на неспособность меги отдать ток, достаточный для свечения диодов, и перевесил диоды на транзисторы, последними уже управляет мега. И снова ничего. Как светились тускло, так и продолжают. Тут пришла мысль, что спалил я диоды и они "устали". Выпаял я один из них и подключил к БП, выставив 15мА, светится аж слепит.
Что же это? Не судьба или я что-то не так делаю?


ЗЫ. Частота мецания 100Hz.
Аватара пользователя
Сэр Мурр
Модератор
Сообщения: 11169
Зарегистрирован: Чт окт 27, 2005 18:50:07
Откуда: из мест не столь отдалённых

Сообщение Сэр Мурр »

А если эту частоту уменьшить до 25 Гц?
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

Spider писал(а):...
Что же это? Не судьба или я что-то не так делаю?
...

Схему в студию! Реальную, ту что у Вас на самом деле.
Код тоже неполхо посмотреть.
Аватара пользователя
Spider
Опытный кот
Сообщения: 732
Зарегистрирован: Чт дек 29, 2005 07:29:25
Откуда: Омск
Контактная информация:

Сообщение Spider »

Ну сам проект сильно велик, и я пока отлаживаю на макетке.
Макетка представляет собой 1 диод символизирующий собой как бы 1 разряд.

Код: Выделить всё

#include <avr>
#include <avr>

ISR(SIG_OUTPUT_COMPARE1A)
{   
   static uint16_t pwm_cnt;
   OCR1A += 0x0163;  //1Hz
   pwm_cnt++;
   if (pwm_cnt>=225) {
      pwm_cnt=0;
      PORTD |= _BV(PD4);
   } else
   if (pwm_cnt>=25) {
      PORTD &= ~_BV(PD4);
   }   
}

void timer1_start(void){
   OCR1A = 0x0163;   //22.5kHz
   TCNT1 = 0;
   TIFR |= _BV(OCF1A);
   TIMSK |= _BV(OCIE1A);
   TCCR1B = _BV(CS10);
}

int main(void) {
   PORTB = 0;
   DDRB = 0;

   PORTC = 0;
   DDRC = 0;

   PORTD=_BV(PD4);
   DDRD=_BV(PD4);

   TCCR1B = 0;
   timer1_start();

   sei();      

   while(1) {
   }
   return 0;
}

проц запущен с кварцем 10MHz
Вложения
LED.png
Макетка для отладки
(1.9 КБ) 355 скачиваний
osc.PNG
Вот так вот диод шимится
(14.48 КБ) 494 скачивания
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

Spider писал(а):Ну сам проект сильно велик, и я пока отлаживаю на макетке.
Макетка представляет собой 1 диод символизирующий собой как бы 1 разряд.
...

Ну и схема, а питание куда подается, лапы контроллера куда? Вас же просили привести реальнуюю. Пусть макетка, Вы нарисуйте как она подключена где питание, какое и т.п. А то Вы и свое и чужое время попусту тратите.
Теперь по делу. В код не вдавался, но как я понимаю вы просто включаете диод на некоторое время, судя по диаграмме на порту сигнал нормальный.
Теперь по схеме- зачем верхний транзистор? Если через него подается + напряжения питания и вы думаете что на диод оно все приходит, то вы ошибаетесь. Падение напряжения на верхнем транзисторе составит величину, равную напряжению завор-исток необходимому для открытия транзистора, т. е. от 2 В, возможно больше в зависимости от типа транзистора.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»