Перейти к содержанию

uuu000

Members
  • Постов

    9
  • Зарегистрирован

  • Посещение

Весь контент uuu000

  1. Остановка счетчика битами CSxx в ноль ничего не дала
  2. Понадобилось сделать переключатель switch на atmega328 для переключения между генераторами меандра (на различные частоты). Генератор на таймере Т0 в режиме СТС, разница между подключаемыми генераторами только в численном значении OCR0A. При первом нажатии на кнопку после подачи питания зажигается светодиод(case1). Затем при последовательном нажатии кнопки происходит вызов функций генераторов (case2, case3, case4). Проблема в том что вызвать функцию генератора можно, но вернуть ее назад (если так можно сказать) при следующем нажатии кнопки (например case5) не получается. Я попробовал просто отключать выход OC0А (в моем случае это DDRD&=~(1<<PD6)) но после возвращения из case5 в case1 светодиод не горит (т.к. в предыдущем case5 было отключение ОС0А (DDRD&=~(1<<PD6)). Если ввести еще один case6 для включения ОС0А (DDRD|=(1<<PD6)) то получается что генератор из case4 (последний по списку) вновь получил возможность подавать меандр на теперь подключенный ОС0А (и подключение ОС0А в case6).Поэтому после первого прохождения прохождении case1...case6 при последующем переключении в case1 получаем работающий на выход ОС0А генератор из case4. Возможно применение отключения выхода ОС0А это моя ошибка. Я еще начинающий, хоть и не молодой. Пробовал вводить переменную (типа флаг) и использовать оператор if() который в зависимости ит наличия установленного или сброшенного флага включал бы или отключал бы генератор в кейсах switch.К сожалению не помогло. Прошу помощи у опытных форумчан. Спасибо за терпение. TEST TIMER.rar
  3. Спасибо,ARV! Я так и предполагал,теперь попробую поиграться с частотой и с различными МК.
  4. Не могу избавиться от минусов для измерения температуры(по моему урок 8): Вопрос снимаю нашел ошибку. было for (int i=0;i<40;i++) { ADCSRA |=(1<<ADSC); while (ADCSRA &(1<<ADSC)){} tmp=tmp+ADC; } return tmp/40; нужно for (int i=0;i<20;i++) { ADCSRA |=(1<<ADSC); while (ADCSRA &(1<<ADSC)){} tmp=tmp+ADC; } return tmp/20; но не понимаю почему такая зависимость от числа измерений
  5. можно ли сделать замены 2sc5570 на 2N3055,mcp602 на mcp6022,а также посоветуйте замены 2sc5171,mcp1541,КТ973(на буржуйский). Спасибо.
×
×
  • Создать...