Если это так то у вас огромные проблемы будут возникать на ровном месте. Начальную инициализацию провести по полной программе не надеясь на "умолчания" и все будет пучком. Вач-дог так же не приводит к эффекту "сброса" периферия остается в неизвестном состоянии, регистры не очищаются... и в специальном регистре даже можно узнать что сброс произошел по причине срабатывания вач-дога.то настройки всяких таймеров, портов, прерываний и т.п. не сбросятся ведь.
Мелкие вопросы по МК и ПЛИС.
- Реклама
- Сообщения: 162
- Зарегистрирован: Вс дек 09, 2012 12:14:44
Alexeyslav, у меня ест инклудник, упертый у Ди Хальта с изиэлектроникс - там только иницилизируется стек, очищается ОЗУ и регистры. Что еще туда целесообразно добавить? Полную очистку настроек периферии? Сброс, возможно установленных флагов прерываний?
Добавлять ничего не надо. Ваша программа по сбросу делает все что нужно для установки необходимого состояния переферии, а та периферия что не используется - в инициализации и не нуждается - её состояние в процессе работы менятся не будет. Все что нужно для того чтобы гарантировать сброс переходом на нулевой вектор - запретить прерывания и чтобы инициализация НЕ ЗАВИСЕЛА от состояния регистров, RAM и может быть EEPROM. Так же было бы неплохо в процессе инициализации периферии требующей прерываний сбрасывать признак прерывания после разрешения прерывания и инициализации переферии. В момент аппаратного сброса признаки все и так сброшены, а вот в течение программного сброса они могут возникнуть в момент инициализации и сработает прерывание после глобального разрешения прерываний. Это будет происходить очень редко! Например перед программным сбросом таймер был в состоянии еще чуть-чуть и прерывание, мы прерывание запретили но таймер досчитал и установил признак прерывания еще до того как мы инициализировали его заново - в результате будет прерывание сразу по окончанию процедуры инициализации. Иногда это не важно, иногда это может быть очень критичным. Вероятность такого поведения очень мала - в процессе отладки на такую ситуацию можно не нарваться, но рабочий вариант будет "чудить" раз в сутки-месяц-год...
В большинстве случаев ничего плохого не будет, но иметь в виду стоит.
В большинстве случаев ничего плохого не будет, но иметь в виду стоит.
Скажите, пожалуйста, если SCl/SDA никуда не подключать, будет работать устройство, в частности аудио селектор PT2323, на вход звук подается, но на выходе нет ничего?
Последний раз редактировалось Web Вс май 19, 2013 17:00:33, всего редактировалось 1 раз.
- Реклама
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
... по линиям SCL,SDA идет управление - если нет управления, будет работать?Web писал(а):если SCl/SDA никуда не подключать, будет работать устройство
Ну почему же, он будет работать вполне. будет ждать команды, находясь в начальном состоянии. А начальное состояние для него скорей всего режим "выкл".
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
... если для Web работать и "выкл" одно и то же, то даAlexeyslav писал(а):.. ну почему же, он будет работать вполне.
... конечно - реализуйте протокол I2C и все..Web писал(а):Можно перейти в режим "вкл" без МК ?
По даташиту, там идет манипуляция двумя сигналами. Все достаточно просто с применением конроллеров, и превращается в АД когда пытаешься это собрать на логике. Нет, там вполне возможно настучать команду и кнопками, когда натренируешься и выучишь наизусть нужную комбинацию то где-то за пол минуты набъешь команду, ага.
Можно еще сделать многоразрядный регистр сдвига, и зашить в него команду "перемычками"... где-то я видел такое изделие, RFID-карточка со 128-ю битами кода на простой логике с применением SMD-микросхем получилась размером с кредитку но монтаж плотный и на две стороны. Принцип тот же самый, только там часть схемы синхронизации можно выкинуть.
Можно еще сделать многоразрядный регистр сдвига, и зашить в него команду "перемычками"... где-то я видел такое изделие, RFID-карточка со 128-ю битами кода на простой логике с применением SMD-микросхем получилась размером с кредитку но монтаж плотный и на две стороны. Принцип тот же самый, только там часть схемы синхронизации можно выкинуть.
Спасибо, все понятно. Нельзя значит включить без управления, тогда придется собирать до конца с со схемой управления на МК. Просто хотелось проверить работает или нет.
Если у тебя есть готовый функциональный 2-х канальный генератор, то проверить можно. Этому условию в принципе может даже аудиокарта соответствовать, но не всякая - в I2C шине очень важными моментами являются условие старта и окончания посылки, они требуют довольно строгой синхронности сигналов по двум каналам, не все аудиокарты могут этим похвастаться. Я свою смотрел на осциллографе - сдвиг между каналами даже на 1кГц виден невооруженным глазом, а на 15кГц сдвиг больше 30 градусов - это вообще ни в какие ворота.
Добрый день!
У меня такой вопрос по Verilog. У меня есть одно событие @always (posedge источник_тактовой_частоты), где мне нужно инкрементировать регистр-счетчик, и есть wire input, по положительному фронту которого нужно запоминать значение регистра-счетчика в другой регистр, а сам счетчик обнулять. Это должен быть простой измеритель периода. Как туит грамотно избежать ошибки "Can`t resolve multiple drivers for ... ". Пробовал сделать переменную, в которую записывал единицу по фронту wire input в событии @always (posedge input), значение которой передавать в другой always через wire. Но проблема, как эту переменную обнулить, после выполнения нужных действий.
Быдлокод прилагается:
У меня такой вопрос по 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
прошу помощи)) какая то странная ситуация... пытаюсь включить реле через транзистор... уровни на ноге переключаются а реле включаться не хочет.. посмотрел на базу транзистора - 0.73 вольта при "1"... попытался поставить полевик - он вообще не закрывается при сбросе "1" в "0"... работаю в протеусе) единственное к чему можно придраться - ножка Т1, но она не задействована в программе (а вот Т0 задействована).. подскажите как победить эту напасть, а то свободных пинов не осталось...


Есть полевики которые в таких схемах работать не будут.
А чем не устроил биполярник с резистором в базовой цепи?
А как же оно будет работать если T1 не задействовано? Или Вы подключали в T0 и тоже самое?
А чем не устроил биполярник с резистором в базовой цепи?
А как же оно будет работать если T1 не задействовано? Или Вы подключали в T0 и тоже самое?
- Сообщения: 73
- Зарегистрирован: Вт июн 22, 2010 20:15:17
ну вот с резистором и 0.73в в базе...Chettuser писал(а):Есть полевики которые в таких схемах работать не будут.
А чем не устроил биполярник с резистором в базовой цепи?
А как же оно будет работать если T1 не задействовано? Или Вы подключали в T0 и тоже самое?
на Т0 у меня счетчик реализован, а остальные 2 таймера/счетчика - таймеры.. или все равно нельзя использовать Т1?..
вот на порте С все работает как надо) как можно использовать лапу Т1?
Как обычно используете так и можно, только настройте таймер1 так, чтобы он эту ногу не использовал. Просто удалите все настройки таймера и попробуйте что при этом происходит.
И вообще можно просто проверить -залить программу в Мк, возможно это очередной глюк протеуса.
И вообще можно просто проверить -залить программу в Мк, возможно это очередной глюк протеуса.
если не секрет, как Вы 12 вольт получили для питания реле?
- Вложения
-
- mega16_tst.zip
- (23.13 КБ) 172 скачивания
- Сообщения: 73
- Зарегистрирован: Вт июн 22, 2010 20:15:17
в смысле? вставил клемму "питание" а потом прописал в Design - Config Power Rails....
а насчет реле - я понимаю что можно вот так на простом примере, но беда в том что у меня почти все готово и понадобилась еще одна нога, а осталась только Т1... не хотелось бы разводить устройство которое на работает в протеусе, мало ли что..
поэтому мне кажется где то косяк с таймером 1, хотя вроде все перепроверил по 10 раз...
а насчет реле - я понимаю что можно вот так на простом примере, но беда в том что у меня почти все готово и понадобилась еще одна нога, а осталась только Т1... не хотелось бы разводить устройство которое на работает в протеусе, мало ли что..
поэтому мне кажется где то косяк с таймером 1, хотя вроде все перепроверил по 10 раз...
- Вложения
-
- Рабочий стол.rar
- (43.64 КБ) 142 скачивания


