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

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

Сообщение Spider »

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

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

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

Сообщение Spider »

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

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

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

Сообщение tych »

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

Сообщение Aheir »

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

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

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

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

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

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

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

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

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

Сообщение WildCat »

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

Сообщение Aheir »

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

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

Сообщение RexeR »

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

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

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

Сообщение Aheir »

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

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

Сообщение Spider »

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


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

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

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

Сообщение smac »

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 КБ) 359 скачиваний
osc.PNG
Вот так вот диод шимится
(14.48 КБ) 497 скачиваний
Контактная информация:
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

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

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