Аналоговая часть собрана на рисунке ниже, она вроде рабочая. Напряжение изменяем с помощью подстроичного резистора. Но возникли проблемы при обработке сигнала на МК: фиксируются только часть значений и то с погрешностью. Код ниже. В чем может быть дело?
Код:
#include <avr/io.h>
#include "hd44780.h"
#include "hd44780.c"
#include "lcd_cfg.h"
#define PORT_COMP PORTC
#define DDR_COMP DDRC
#define PIN_COMP PINC
#define A_PIN 0
#define B_PIN 1
double i=0;
uint32_t count=0;
float Voltage=0;
void display()
{
lcd_goto(1,0);
lcd_puts("V=");
lcd_goto(1,2);
lcd_ftos(Voltage, 2);
}
int main(void)
{
lcd_init();
lcd_clrscr();
DDR_COMP = 0b00000010;
while(1)
{
display();
if (PIN_COMP & (1 << A_PIN) == 1)
{
i++;
PORT_COMP |= (1<<B_PIN);
}
else
PORT_COMP &= (0<<B_PIN);
if (count >= 16)
{
Voltage = (i/16)*4;
count = 0;
i = 0;
}
count++;
}
}