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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Сообщение SmarTrunk »

Это если свободные ножки есть.
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

то настройки всяких таймеров, портов, прерываний и т.п. не сбросятся ведь.
Если это так то у вас огромные проблемы будут возникать на ровном месте. Начальную инициализацию провести по полной программе не надеясь на "умолчания" и все будет пучком. Вач-дог так же не приводит к эффекту "сброса" периферия остается в неизвестном состоянии, регистры не очищаются... и в специальном регистре даже можно узнать что сброс произошел по причине срабатывания вач-дога.
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Вс дек 09, 2012 12:14:44

Сообщение 1essor1 »

Alexeyslav, у меня ест инклудник, упертый у Ди Хальта с изиэлектроникс - там только иницилизируется стек, очищается ОЗУ и регистры. Что еще туда целесообразно добавить? Полную очистку настроек периферии? Сброс, возможно установленных флагов прерываний?
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Добавлять ничего не надо. Ваша программа по сбросу делает все что нужно для установки необходимого состояния переферии, а та периферия что не используется - в инициализации и не нуждается - её состояние в процессе работы менятся не будет. Все что нужно для того чтобы гарантировать сброс переходом на нулевой вектор - запретить прерывания и чтобы инициализация НЕ ЗАВИСЕЛА от состояния регистров, RAM и может быть EEPROM. Так же было бы неплохо в процессе инициализации периферии требующей прерываний сбрасывать признак прерывания после разрешения прерывания и инициализации переферии. В момент аппаратного сброса признаки все и так сброшены, а вот в течение программного сброса они могут возникнуть в момент инициализации и сработает прерывание после глобального разрешения прерываний. Это будет происходить очень редко! Например перед программным сбросом таймер был в состоянии еще чуть-чуть и прерывание, мы прерывание запретили но таймер досчитал и установил признак прерывания еще до того как мы инициализировали его заново - в результате будет прерывание сразу по окончанию процедуры инициализации. Иногда это не важно, иногда это может быть очень критичным. Вероятность такого поведения очень мала - в процессе отладки на такую ситуацию можно не нарваться, но рабочий вариант будет "чудить" раз в сутки-месяц-год...

В большинстве случаев ничего плохого не будет, но иметь в виду стоит.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Web
Потрогал лапой паяльник
Сообщения: 321
Зарегистрирован: Пт мар 22, 2013 16:05:05
Откуда: Саратов

Сообщение Web »

Скажите, пожалуйста, если SCl/SDA никуда не подключать, будет работать устройство, в частности аудио селектор PT2323, на вход звук подается, но на выходе нет ничего?
Последний раз редактировалось Web Вс май 19, 2013 17:00:33, всего редактировалось 1 раз.
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

Web писал(а):если SCl/SDA никуда не подключать, будет работать устройство
... по линиям SCL,SDA идет управление - если нет управления, будет работать?
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Ну почему же, он будет работать вполне. будет ждать команды, находясь в начальном состоянии. А начальное состояние для него скорей всего режим "выкл".
Контактная информация:
Web
Потрогал лапой паяльник
Сообщения: 321
Зарегистрирован: Пт мар 22, 2013 16:05:05
Откуда: Саратов

Сообщение Web »

Можно перейти в режим "вкл" без МК ?
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

Alexeyslav писал(а):.. ну почему же, он будет работать вполне.
... если для Web работать и "выкл" одно и то же, то да :)
Web писал(а):Можно перейти в режим "вкл" без МК ?
... конечно - реализуйте протокол I2C и все.. :)
Web
Потрогал лапой паяльник
Сообщения: 321
Зарегистрирован: Пт мар 22, 2013 16:05:05
Откуда: Саратов

Сообщение Web »

Каим образом ?
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

По даташиту, там идет манипуляция двумя сигналами. Все достаточно просто с применением конроллеров, и превращается в АД когда пытаешься это собрать на логике. Нет, там вполне возможно настучать команду и кнопками, когда натренируешься и выучишь наизусть нужную комбинацию то где-то за пол минуты набъешь команду, ага.

Можно еще сделать многоразрядный регистр сдвига, и зашить в него команду "перемычками"... где-то я видел такое изделие, RFID-карточка со 128-ю битами кода на простой логике с применением SMD-микросхем получилась размером с кредитку но монтаж плотный и на две стороны. Принцип тот же самый, только там часть схемы синхронизации можно выкинуть.
Контактная информация:
Web
Потрогал лапой паяльник
Сообщения: 321
Зарегистрирован: Пт мар 22, 2013 16:05:05
Откуда: Саратов

Сообщение Web »

Спасибо, все понятно. Нельзя значит включить без управления, тогда придется собирать до конца с со схемой управления на МК. Просто хотелось проверить работает или нет.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Если у тебя есть готовый функциональный 2-х канальный генератор, то проверить можно. Этому условию в принципе может даже аудиокарта соответствовать, но не всякая - в I2C шине очень важными моментами являются условие старта и окончания посылки, они требуют довольно строгой синхронности сигналов по двум каналам, не все аудиокарты могут этим похвастаться. Я свою смотрел на осциллографе - сдвиг между каналами даже на 1кГц виден невооруженным глазом, а на 15кГц сдвиг больше 30 градусов - это вообще ни в какие ворота.
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Добрый день!
У меня такой вопрос по Verilog. У меня есть одно событие @always (posedge источник_тактовой_частоты), где мне нужно инкрементировать регистр-счетчик, и есть wire input, по положительному фронту которого нужно запоминать значение регистра-счетчика в другой регистр, а сам счетчик обнулять. Это должен быть простой измеритель периода. Как туит грамотно избежать ошибки "Can`t resolve multiple drivers for ... ". Пробовал сделать переменную, в которую записывал единицу по фронту wire input в событии @always (posedge input), значение которой передавать в другой always через wire. Но проблема, как эту переменную обнулить, после выполнения нужных действий.

Быдлокод прилагается:
Спойлер

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

//
// Подсчет временных интервалов и управление транзисторами
//
module PeriodCounter(
		//Тактирование
		input wire inclk,
		
		//Сигналы синхронизации
		input wire fb,
		input wire reset,
		
		//Результат работы
		output reg [15:0] outp_cur_period
	);
	//*******************************************************************//
	// Объявление регистров
	//*******************************************************************//
	reg fb_reg = 0;
	reg fist_fb = 1;
	wire fb_reg_wire;
	
	//*******************************************************************//
	// Соединения
	//*******************************************************************//
	assign fb_reg_wire = fb_reg;
	
	//*******************************************************************//
	// Подсчет периода
	//*******************************************************************//
	reg [15:0] per_cnt = 0; 
	//Считаем тычки
	always @(posedge inclk) begin 
		per_cnt <= per_cnt + 16'b1;
		
		//Сохраняем, если было событие
		if( fb_reg_wire ) 
		begin
                                                //Если это событие не нужно пропускать
			if( !fist_fb )
			begin
				outp_cur_period <= per_cnt;
			end
			fist_fb <= 0;
                                                //Обнуляем счетчик
			per_cnt <= 16'b0;
		end
		
                                //Устанавливаем флажок о пропуске следующего события
		if( reset )
		begin
			per_cnt <= 0;
			fist_fb <= 1;
		end
	end 
	
	//Событие синхронизации
	always @(posedge fb) begin 
		fb_reg <= 1;
	end
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Открыл глаза
Сообщения: 73
Зарегистрирован: Вт июн 22, 2010 20:15:17

Сообщение DDark »

прошу помощи)) какая то странная ситуация... пытаюсь включить реле через транзистор... уровни на ноге переключаются а реле включаться не хочет.. посмотрел на базу транзистора - 0.73 вольта при "1"... попытался поставить полевик - он вообще не закрывается при сбросе "1" в "0"... работаю в протеусе) единственное к чему можно придраться - ножка Т1, но она не задействована в программе (а вот Т0 задействована).. подскажите как победить эту напасть, а то свободных пинов не осталось...
Изображение
Изображение
Chettuser

Сообщение Chettuser »

Есть полевики которые в таких схемах работать не будут.
А чем не устроил биполярник с резистором в базовой цепи?
А как же оно будет работать если T1 не задействовано? Или Вы подключали в T0 и тоже самое?
Открыл глаза
Сообщения: 73
Зарегистрирован: Вт июн 22, 2010 20:15:17

Сообщение DDark »

Chettuser писал(а):Есть полевики которые в таких схемах работать не будут.
А чем не устроил биполярник с резистором в базовой цепи?
А как же оно будет работать если T1 не задействовано? Или Вы подключали в T0 и тоже самое?
ну вот с резистором и 0.73в в базе...
на Т0 у меня счетчик реализован, а остальные 2 таймера/счетчика - таймеры.. или все равно нельзя использовать Т1?..
вот на порте С все работает как надо) как можно использовать лапу Т1?
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Как обычно используете так и можно, только настройте таймер1 так, чтобы он эту ногу не использовал. Просто удалите все настройки таймера и попробуйте что при этом происходит.
И вообще можно просто проверить -залить программу в Мк, возможно это очередной глюк протеуса.
Контактная информация:
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

если не секрет, как Вы 12 вольт получили для питания реле?
Вложения
mega16_tst.zip
(23.13 КБ) 172 скачивания
Открыл глаза
Сообщения: 73
Зарегистрирован: Вт июн 22, 2010 20:15:17

Сообщение DDark »

в смысле? вставил клемму "питание" а потом прописал в Design - Config Power Rails....
а насчет реле - я понимаю что можно вот так на простом примере, но беда в том что у меня почти все готово и понадобилась еще одна нога, а осталась только Т1... не хотелось бы разводить устройство которое на работает в протеусе, мало ли что..
поэтому мне кажется где то косяк с таймером 1, хотя вроде все перепроверил по 10 раз...
Вложения
Рабочий стол.rar
(43.64 КБ) 142 скачивания
Ответить

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