Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Да и так в 3064 впишется, на задачу уйдет где-то 26 LC. Можно, конечно, 4 LC сэкономить, если сделать сдвиговый регистр.
Контактная информация:
Реклама
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

Сообщение Nevox »

я на словах это понимаю,а как кодом это запишется? можете подсказать? а дат, это просто входные сигналы,их можно использовать) решил указать сразу все)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

Изображение
как понимать отмеченное слово в данном предложении ? может это опечатка ?
источник http://www.gaw.ru/html.cgi/txt/doc/micr ... 10_0_5.htm
Tell Me The Truth
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Вс июн 27, 2010 17:24:13

Сообщение Бар-Барсик »

Здравствуйте, возникла проблема. Нужно подключить семисегментник mega8 но с нестандартным подключение к портам.(со стандартным всё подключается) схема прилагается в протеусе. а архиве исходник и проект протеус. проблема - не выводятся сегменты подключённые к портуД, но аноды переключаются. перепробовал много вариантов и уже заплутался. Подскажите в чём может быть проблема. Заранее спасибо.
Вложения
test - копия.rar
(35.5 КБ) 144 скачивания
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

может это опечатка ?
Чем это смущает? Порог сравнения, он и есть порог... хоть и цифровой.
не выводятся сегменты подключённые к портуД
Порт D настроен на вывод? Что-то сомнение берет способ инициализации...
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Вс июн 27, 2010 17:24:13

Сообщение Бар-Барсик »

да portd portc на выход
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Сообщение unalex »

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

void outputLED(char data)
и в теле этой функции зажигаете разряды
откуда функции знать чему равен cnt_led если вы его ей не посылаете, а посылаете всего лишь элемент массива(какой он по счету функция не догадаться не сможет)?

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

//global routine
void outputLED(char kathode, char anode)
{
	//outputLED routine
	if(kathode & (1 << 0))//a
	SetBit(PORTD,6);
	
	//outputLED routine
	if (anode==0)
	SetBit(LED_KAT_PORT,k1);
}

//global routine

ISR (TIMER0_OVF_vect)
{
	//interrupt routine
	outputLED(led_buffer[cnt_led], cnt_led);
}

где катоды а где аноды разбирайтесь сами, а то у вас в коде фигурируют катоды, а в комментарии аноды
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Мудрый кот
Аватара пользователя
Сообщения: 1812
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

FreshMan писал(а):как понимать отмеченное слово в данном предложении ? может это опечатка ?
Регистр хранит "пороговое значение" (число в двоичном виде, Alexeyslav уже написал :) ).
Обычно под пороговым значением понимается величина, до этого значения, так сказать, одно состояние, после - другое.
Чтобы определить "до" или "после" надо сравнить это пороговое значение с отслеживаемой величиной (в этом случае со значением счётчика).
По смыслу, вроде, ничего не противоречит. Но перевод "кривоват", звучит не очень.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

Сообщение Nevox »

Nevox писал(а):я на словах это понимаю,а как кодом это запишется? можете подсказать?
Ребят,помогите пожалуйста.
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Вс июн 27, 2010 17:24:13

Сообщение Бар-Барсик »

unalex писал(а):

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

void outputLED(char data)
и в теле этой функции зажигаете разряды
откуда функции знать чему равен cnt_led если вы его ей не посылаете, а посылаете всего лишь элемент массива(какой он по счету функция не догадаться не сможет)?

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

//global routine
void outputLED(char kathode, char anode)
{
	//outputLED routine
	if(kathode & (1 << 0))//a
	SetBit(PORTD,6);
	
	//outputLED routine
	if (anode==0)
	SetBit(LED_KAT_PORT,k1);
}

//global routine

ISR (TIMER0_OVF_vect)
{
	//interrupt routine
	outputLED(led_buffer[cnt_led], cnt_led);
}

где катоды а где аноды разбирайтесь сами, а то у вас в коде фигурируют катоды, а в комментарии аноды

переменная cnt_led объявлена как глобальна. с ней проблем и не было, аноды переключаются правильно. но я попробовал как вы говорили - результат тот же...
я думаю что когда я выполняю команду SetBit(LED_KAT_PORT,k1) у меня стирается значение порта которое выставлялось при помощи команды SetBit(PORTD,6) и горит только анод. но на анализаторе я это не заметил.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Nevox писал(а):Ребят,помогите пожалуйста.
Если на словах Вы действительно понимаете(Вы так написали), а проблемы только с кодом - предлагаю Вам начать с составления схемы на логических элементах. Можно использовать счетчики, триггеры. По результату все вместе напишем код.
Ставим плюсы: )
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

Сообщение Nevox »

ibiza11 писал(а):По результату все вместе напишем код.
вот допустим я прочитал одну статью и написал код, чтобы лампочка моргала,раз в какое-то время(при 0 у меня лампочка горит,при 1 гаснет):

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

module test(CLOCK,IN);
input wire CLOCK;
output reg [15:0] IN;
reg [15:0] counter; 

localparam F = 50;	// тактовая частота в Гц


// временнЫе интервалы в миллисекундах
localparam 	t1 = 1000/(20*F),	// необходимо пересчитать время для "0"
			t2 = t1;			// и "1", времена равны поскольку импульс типа "меандр"

// моменты времени в "тиках" тактовой частоты
localparam n1 = 1,		// для нулевого момента времени, уровень "0"
n2 = n1 + t1 *F,		// для момента времени где заканчивается "0", затем перейдёт в "1"
n3 = n2 + t2 *F;		// конец "1", снова будет "0"

always @(posedge CLOCK)	// работать по положительному фронту импульса
begin
	if(counter == n3)
		counter <= 0;		// сброс счётчика при совпадении с конечным моментом времени (n3)
	else
		counter <= counter + 1;	// иначе инкремент счётчика

	case (counter)
		n1: IN [15:0] <= 16'b1;		// формируем "0" на выходе
		n2: IN [15:0] <= 16'b0; 		// формируем "1" на выходе
		default IN [15:0] <= 16'b1;	// по умолчанию, если что-то не так, выводим "0"
	endcase

end
endmodule
проблема в том,что моргает только первая лампочка,остальные все просто горят всегда, где исправить-то?
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Nevox писал(а):проблема в том,что моргает только первая лампочка
нееет. проблема в том, что Вы не понимаете как работает этот код, да и вообще либо статья не годная, либо Вы и её не поняли.
В коде проблем нет, как написалино, так и работает.
Ставим плюсы: )
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

Сообщение Nevox »

ibiza11 писал(а):В коде проблем нет, как написалино, так и работает.
Так я не тупо код скопировал,я его поправил, уже разобрался почему работал только 1 канал. Дальше буду думать,как зажигать каналы по очереди.
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

Сообщение Nevox »

вот,если кому интересно,написал последовательное включение лампочек.

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

module test (CLOCK,IN);
input wire CLOCK;
output reg [15:0] IN;
reg [15:0] counter; 

localparam F = 50;	
localparam 	t1 = 1000/(20*F),	
			t2 = t1;			
localparam n1 = t1 *F,		
n2 = n1 + t1 *F,		
n3 = n2 + t2 *F,
n4 = n3 + t2 *F,	
n5 = n4 + t2 *F,	
n6 = n5 + t2 *F,	
n7 = n6 + t2 *F,	
n8 = n7 + t2 *F,	
n9 = n8 + t2 *F,	
n10 = n9 + t2 *F,	
n11 = n10 + t2 *F,	
n12 = n11 + t2 *F,	
n13 = n12 + t2 *F,
n14 = n13 + t2 *F,	
n15 = n14 + t2 *F,	
n16 = n15 + t2 *F;				

always @(posedge CLOCK)	
begin
	if(counter == n16)
		counter <= 0;		
	else
		counter <= counter + 1;	

	case (counter)		
n1: IN [15:0] <= 16'b1111111111111110;
n2: IN [15:0] <= 16'b1111111111111101;
n3: IN [15:0] <= 16'b1111111111111011;
n4: IN [15:0] <= 16'b1111111111110111;
n5: IN [15:0] <= 16'b1111111111101111;
n6: IN [15:0] <= 16'b1111111111011111;
n7: IN [15:0] <= 16'b1111111110111111;
n8: IN [15:0] <= 16'b1111111101111111;
n9: IN [15:0] <= 16'b1111111011111111;
n10: IN [15:0] <= 16'b1111110111111111;
n11: IN [15:0] <= 16'b1111101111111111;
n12: IN [15:0] <= 16'b1111011111111111;
n13: IN [15:0] <= 16'b1110111111111111;
n14: IN [15:0] <= 16'b1101111111111111;
n15: IN [15:0] <= 16'b1011111111111111;
n16: IN [15:0] <= 16'b0111111111111111;
 		
		default IN [15:0] <= 16'b1111111111111111;	
	endcase

end
endmodule

 
Друг Кота
Аватара пользователя
Сообщения: 4106
Зарегистрирован: Пн авг 10, 2009 01:18:55
Откуда: Электросталь

Сообщение Evgeny1 »

всем привет
решил собрать дозиметр микрон-1
возник вопрос-что нужно прошивать в первую очередь флэш или eeprom? или не имеет значения?
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Nevox писал(а):вот,если кому интересно,написал последовательное включение лампочек.
молодчина! :beer:
Ставим плюсы: )
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

Сообщение Nevox »

ibiza11 писал(а):молодчина! :beer:
вот нет бы помочь... :)) :)) :))
Друг Кота
Аватара пользователя
Сообщения: 4106
Зарегистрирован: Пн авг 10, 2009 01:18:55
Откуда: Электросталь

Сообщение Evgeny1 »

и мне тоже
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4618
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

И мне тоже помогите !
Хочу изобрести велосипед. Что делать ? :idea:
Ответить

Вернуться в «Разные вопросы по МК»