Резистор на входе ацп. Частотой, желательно, килогерц 10 -15. Контроллер для того, что на скважность влияют несколько таких резистров/датчиков.
Код: Выделить всё
#include<avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
//инициализация портов
PORTB = 0;
DDRB = 0x01;
//инициализация таймера Т0
TIMSK = 0;
//реж. - fast pwm, вывод OC0 - неинверт. шим, clk/64
TCCR0 = (1<<WGM01)|(1<<WGM00)|(1<<COM01)|(0<<COM00)|(0<<CS02)|(1<<CS01)|(1<<CS00);
TCNT0 = 0;
OCR0 = 0;
//инициализируем АЦП
//ион - напряжение питания, выравнивание влево, нулевой канал
ADMUX = (0<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0);
//вкл. ацп, реж. непрерывн. преобр., разр. прерывания, частота преобр. = FCPU/128
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
//режим непрерывного преобразования
SFIOR = 0;
sei(); // __enable_interrupt(); - B AVRStudio 4.19 такое не компилица.
while(1);
return 0;
}
//********************************
//прерывание АЦП
ISR(ADC_vect) //#pragma vector=ADC_vect __interrupt void adc_my(void) - и это тоже.
{
//считываем старший регистр АЦП и
//записываем в регистр сравнения
OCR0 = ADCH;
}
