den2life Опубликовано 24 апреля, 2012 Поделиться Опубликовано 24 апреля, 2012 Вообщем я решил использовать компаратор управляющий схемой захват. Это ж возможно? Только вот что я ни как не пойму на счет результата регистра(буфера) ICR1, в каком формате он сохраняется от $00 до $FF или любом числом в виде? Вот прикинь такую ситуацию, допустим данная RC - цепочка(R= 10k,C=295пФ - 357пФ) подключена к выводу OC1A которая в свою очередь генерирует ШИМ с периодом ~50мксек, выход RC-цепи подана на AIN0, а AIN0 подключена к схеме захвата таймер/счетчика Т1 (1<<ACIC), при лог.1 регистр захвата будет подсчитывать тактовые импульсы которые "влезут" в один период лог.1 с выхода компаратора. Но что то у меня не всё так гладко. Почему то не хочет работать ШИМы генерируються но вот результат схемы захвата регистра ICR1 почему то равен 0. Проверял так: #include <mega8.h> #include <delay.h> volatile unsigned int buffer = 0; interrupt [TIM1_CAPT] void timer1_capt_isr(void) { if ((ACSR&(1<<ACO))!= 0) buffer = (ICR1L|ICR1H); } void main (void) { PORTC = 0; DDRC = (1<<3)|(1<<2)|(1<<1)|(1<<0); //for led PORTD = (0<<7)|(0<<6); //disable resistors DDRD = (0<<7)|(0<<6); //ENTER for comparator PORTB = (0<<3); //отключаем подтягивающий резистор DDRB = (1<<3)|(1<<1); //выход регистра OC2 TCCR2 = (0<<WGM21)|(1<<WGM20)|(1<<COM21)|(1<<COM20)|(1<<CS22)|(0<<CS21)|(1<<CS20); //режим работы Phase correct PWM, //подключен к выводу OC2, предделитель clk(i/o)/1024 TCCR1A = (0<<COM1A1)|(1<<COM1A0)|(0<<COM1B1)|(0<<COM1B0)|(1<<WGM11)|(1<<WGM10); TCCR1B = (0<<ICNC1)|(1<<ICES1)|(1<<WGM13)|(0<<WGM12)|(0<<CS12)|(1<<CS11)|(0<<CS10); ACSR = (0<<ACD)|(1<<ACBG)|(0<<ACIE)|(1<<ACIC)|(0<<ACIS1)|(0<<ACIS0); //настройка компаратора вкл, ИОН не подключен OCR2 = 170; //регистр сравнения равен 100 при сравнении регистра счета сбрасывается в $00 OCR1A = 6; TIMSK = (1<<TICIE1); #asm ("sei") while(1) { if ((ACSR&(1<<ACO))!= 0) { if (buffer == 0) PORTC =(1<<1); if (buffer > 1) PORTC = (0 << 1); } else { if (buffer == 0) PORTC = (0<<1); } //else if ((ACSR&(1<<ACO))!= 1) //PORTC = (1<<1); } } 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
fuckir Опубликовано 25 апреля, 2012 Поделиться Опубликовано 25 апреля, 2012 (изменено) ..только не "мерить", а "измерять" а если так: С одного цифрового выхода подавать одиночный импульс заряжающий конденсатор. Включать таймер и отслеживать на другом входе логический ноль и уходить в прерывание, где извлекать накопленное значение таймера. Останется только отколибровать\проградуировать значение таймера в величину емкости. Изменено 25 апреля, 2012 пользователем fuckir 0 В поисках работы.. Looking for job Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.