Страница 50 из 628

Добавлено: Ср апр 15, 2009 18:18:58
бгкот
Микросхема 74HC245.

Добавлено: Чт апр 16, 2009 11:58:22
Виталик
Слышал, что входы МС нельзя оставлять неподключенными, а выходы можно. Т.е. согласно вышепривенной схеме и цоколевки 74HC245N я должен обьеденить ножки 6-9 и присоеденить их к 10 (земля) или через токоограничительный резистор на 20 (+), а ножки 11-14 оставить?

Добавлено: Чт апр 16, 2009 12:57:27
бгкот
Ничего не надо никуда присоединять, там буффера двунаправленные,
что вход, что выход - одно и то же, направление определяется
сигналом на выводе 1, а все буффера отключаются (переводятся в
высокоимпедансное состояние) сигналом на выводе 19.

Добавлено: Чт апр 16, 2009 17:55:25
a.a.ryzhov
Использую ATMEGA88
Какая наиболее удобная форма кода подходит для программного опроса окончания АЦ преобразования? Насколько я понял в ATmege напрямую "пощупать" флаг ADIF в регистре ADCSRA нельзя, т.к. он находится за пределами действия команды sbic.
Предполагаю, что сначала регистр ADCSRA нужно поместить в temp, а затем определить состояние 4-го бита, затем снова считать в temp, затем опять проверить 4й бит и до тех пор пока не станет 1. Поправьте, если я ошибаюсь.

Добавлено: Чт апр 16, 2009 19:07:29
ARV
a.a.ryzhov писал(а):Использую ATMEGA88
Какая наиболее удобная форма кода подходит для программного опроса окончания АЦ преобразования? Насколько я понял в ATmege напрямую "пощупать" флаг ADIF в регистре ADCSRA нельзя, т.к. он находится за пределами действия команды sbic.
Предполагаю, что сначала регистр ADCSRA нужно поместить в temp, а затем определить состояние 4-го бита, затем снова считать в temp, затем опять проверить 4й бит и до тех пор пока не станет 1. Поправьте, если я ошибаюсь.
для "ощупывания" конца цикла АЦП обычно используют бит ADSC: как только упал - аллес, все готово. а в остальном все верно.

Добавлено: Чт апр 16, 2009 19:32:36
a.a.ryzhov
ARV
Ясно, опрашивать будем ADSC, но получается что только через промежуточный регистр, неудобно конечно. Спасибо.

Добавлено: Чт апр 16, 2009 19:35:32
ARV
неудобно - работайте по прерываниям

Добавлено: Пн апр 20, 2009 21:41:23
Sounds
Есть вентилятор(Кулер) с датчиком оборотов(холлом), подскажите как с него можно считать информацию. Пока интересует алгоритм считывания.
Параметры вентилятора(колера):
Рабочие напряжение - 12V
Потребность тока - 0.11A

Добавлено: Пн апр 20, 2009 21:47:59
бгкот
А параметры датчика какие?

Добавлено: Пн апр 20, 2009 21:48:52
Sounds
бгкот писал(а):А параметры датчика какие?
К сожалению не знаю!=(

Добавлено: Пн апр 20, 2009 21:51:15
ARV
какие там параметры... там идет прямоугольные импульсы - иногда просто открытый коллектор (т.е. надо резистор на питание, чтобы импульсы увидеть). на 1 оборот 1 или 2 (может и больше - не уверен) импульса. надо просто мерить частоту этих импульсов, она будет пропорциональна частоте вращения.

Добавлено: Пн апр 20, 2009 22:01:14
Sounds
отлично! но как можно померить частоту импульсов без осциллографа?
У меня есть одна мысль но не знаю насколько она бредовая, может как-то использовать прерывание?

Добавлено: Пн апр 20, 2009 22:03:22
ARV
Sounds писал(а):отлично! но как можно померить частоту импульсов без осциллографа?
У меня есть одна мысль но не знаю насколько она бредовая, может как-то использовать прерывание?
поищите на форуме - была не одна тема про измерение частоты и периода...

Добавлено: Пн апр 20, 2009 22:10:58
Sounds
если честно то не чего не нашёл, только не ругайте!
может я плохо искал, и не потому слову?!

Добавлено: Вт апр 21, 2009 14:12:38
sachok
У меня небольшой впрос по Си. Такая ситуация:

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

if (a==0 | b==0 | c==0 | d==0 | e==0 | f==0 )
{
[група операторов];
}
Я так понял что если любая переменная из этих шести равна "0" то будет виполнятся

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

[група операторов];
, а если все не равны "0" то ничего выполнятся не будет. Правильно?

Добавлено: Вт апр 21, 2009 14:43:37
Yellow Tiger
Будет правильно,.. если побитовые ИЛИ заменить на логические.
Или так:

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

if ( !(a && b && c && d && e && f) )
{
    ... ;
}

Добавлено: Вт апр 21, 2009 14:47:28
sachok
Тоесть мне нужно так сделать:

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

if ( (a && b && c && d && e && f)=0) 
{ 
[група операторов]; 
}
Если любая из переменных равна "0" то что то делаем
?

Добавлено: Вт апр 21, 2009 15:03:46
Тихоня
У меня тоже вопрос, по внешним прерываниям.
Разбирал пример из книжки, где с помощью таймера борются с дребезгом контактов. Там обработчик INT'а сразу же запрещает INT от кнопки, делает свои дела, потом включает таймер и на этом всё (reti).
Снова разрешает прерывания от кнопки уже обработчик таймера, после выдержки антидребезговой паузы.
Вопрос следующий: надо ли в обработчике таймера перед разрешением INT'ов от кнопки предварительно сбрасывать флаг этого прерывания?
Ведь, несмотря на то, что дребезг к этому времени уже кончился, он мог "запомниться" в флаге... Или нет?
В книжке ничего не сбрасывают.

Добавлено: Вт апр 21, 2009 15:07:42
ARV
Тихоня писал(а):Вопрос следующий: надо ли в обработчике таймера перед разрешением INT'ов от кнопки предварительно сбрасывать флаг этого прерывания?
мыслите верно - флаг сбрасывать нужно

а вам, sachok, я, как и обычно, порекомендую почитать книжки про язык Си, чтобы запомнить разницу между оператором = и ==

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

if ((a && b && c && d && e && f) == 0) 
{ 
[група операторов]; 
}

Добавлено: Вт апр 21, 2009 15:11:10
sachok
Разницу знаю:) Читал. Просто спешил и пропустил один "=". Спасибо за помощ!!!