Страница 2 из 3

Добавлено: Пн авг 13, 2007 04:51:49
Spider
IMHO использовать delay для таких вещей, не позволительная растрата мипсов. Если КОТ поторопится, то моя статья как раз о этом на Си должна появиться на сайте.

Добавлено: Пн авг 13, 2007 11:02:56
Mr.Moss
А зачем вообще задержки какието писать? :shock:
Динамическая индикация безних прекрасно работает, ПРОВЕРЕНО!

Добавлено: Пн авг 13, 2007 11:35:16
Spider
Не хочу объяснять уже разжёваное, но надо :) Читай статьи и обучалку.

Добавлено: Пн авг 13, 2007 12:05:16
Mr.Moss
Я пекрас знаю что в обучалке написано по этому поводу, я просто хотел сказать что есть способ реализации динамической индикации без каких либо задержек, зачем тратить МИПСы на пустой цикл.

Добавлено: Пн авг 13, 2007 12:19:48
tych
ты пример приведи чтоб понятно было

Добавлено: Пн авг 13, 2007 12:25:44
Aheir
Mr.Moss, ну дык и просвети всех, чего пустозвонством-то заниматься? :)
Вон, Spider уже статью написал, а ты чего межуешься? :)

Добавлено: Пн авг 13, 2007 13:04:47
Mr.Moss
Сорри, поспешил с созданием темы :roll:
Дело в следующем, понадобилось мне както сделать индикацию на четырех семисигментных индикаторах. Дело то конечно не хитрое, но вот я подумал что задержку писать не стоит, зачем тратить время на пустые циклы и нашел вот такое решение, попытаюсь оъбяснить на словах, если будет не понятно выложу код (ейчас немогу не затем компом).
Как всем извесно для реализации динамической индикации необходимо использовать прерывание таймера, в данном случае это прерывание остается, для каждого индикатора пишется подпрограмма которая выводит в порт код для индикации и включает анод(катод) этого индикатора, при этом порт не обнуляется, а сигнал на нем висит пока не сработает прерывание и не перейдет на следующую подпрограмму, выходит что сементы светятся в промежутке между прерываниями, а прерывание по таймеру всеголиш по очереди переходит на одну из этих четырех подпрограмм

Добавлено: Пн авг 13, 2007 13:27:55
Mr.Moss
Вот собственно кусок кода.

Добавлено: Пн авг 13, 2007 18:15:32
Mr.Moss
Странно? Тема вро как популярная, но почемуто все молчат.

Добавлено: Вт авг 14, 2007 22:52:44
Mr.Moss
Коты и котята, а так же мышы и мышки! :o
Отзовитесь кто нибуть, скажите свое мнение по данной реализации, а то сначала просят разъяснить, а потом в ответ тишина. :(

Добавлено: Ср авг 15, 2007 00:41:25
WildCat
У меня в часах стоит ВЛИ - так я решил проблему просто - поставил фоторезистор и транз в цепь накала. То же самое можно впринципе сделать и с светодиодными индикаторами, ШИМ здесь - ненужное нагромождение

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

WildCat
, т.е. предлагается поставить транзистор в цепь общего катода (анода) индикатора? Причем не в ключевом режиме? При токе потребения порядка 0.5А греться будет достаточно сильно... Не очень хороший вариант.
А если в ключевом - получаем тот же ШИМ. :)

Добавлено: Ср авг 15, 2007 09:00:36
RexeR
Если используете сдвиговый регистр , то возмите например TPIC6B595. Он имеет вход "G" , ШИМ-уя его можно управлять яркостью и статической , и динамической индикации от 0 до макс.

Добавлено: Ср авг 15, 2007 10:45:14
Mr.Moss
Да я и не шумлю :roll:
Просто интересно, может есче какие варианты народ предложит.

Добавлено: Ср авг 15, 2007 12:29:15
Aheir
Mr.Moss, не обижайтесь, это я так, к слову... :)

RexeR, мысль интересная. В принципе, я можно то же самое сделать и на 74HC595

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


ЗЫ. Частота мецания 100Hz.

Добавлено: Ср янв 07, 2009 22:53:38
Сэр Мурр
А если эту частоту уменьшить до 25 Гц?

Добавлено: Ср янв 07, 2009 23:47:03
smac
Spider писал(а): ...
Что же это? Не судьба или я что-то не так делаю?
...
Схему в студию! Реальную, ту что у Вас на самом деле.
Код тоже неполхо посмотреть.

Добавлено: Чт янв 08, 2009 08:24:07
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

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