Показать сообщение отдельно
Старый 04.12.2016, 20:40   #1 (permalink)
КислыйДядя
Новичок
 
Регистрация: 04.12.2016
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Цифровой фильтр для дельта-сигма АЦП

Аналоговая часть собрана на рисунке ниже, она вроде рабочая. Напряжение изменяем с помощью подстроичного резистора. Но возникли проблемы при обработке сигнала на МК: фиксируются только часть значений и то с погрешностью. Код ниже. В чем может быть дело?
Название: 06.gif.5cd3a94b645f076da03c45afa6c34eec.gif
Просмотров: 230

Размер: 14.3 Кб

Код:
#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++;
    }
}
КислыйДядя вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070