0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 7
1

Первое измерение с АЦП как эталон (ATmega8)

05.06.2015, 14:49. Показов 1552. Ответов 4
Метки нет (Все метки)

Я пишу программу на С++ в АВР студио, в которой идет опрос аналоговых сигналов на мультиплексор, а с него на МК, вот . Не могу реализовать, чтобы первое измерение всех сигналов с мультиплексора было идеалом, а остальные с ним сравнивались, программа,которую пишу, прилагаю.Если кто может помочь, буду на 7 небе от счастья. Может можно сделать отдельную линию, измерение которой будет расцениваться ,как идеал сигнала?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#define F_CPU 1000000UL
unsigned int ACP;
void init_vhodov () {
    DDRB=0x07;
    DDRC=0x00;
    PORTB=0x07;
                           }
 
 
void switch_channel() {
    PORTB |=0x00;
    PORTB &=0x00;
    _delay_ms(20);
    
    PORTB |=0x01;
    PORTB &=0x00;
    _delay_ms(20);
    
    PORTB |=0x02;
    PORTB &=0x00;
    _delay_ms(20);
    
    PORTB |=0x03;
    PORTB &=0x00;
    _delay_ms(20);
    
    PORTB |=0x04;
    PORTB &=0x00;
    _delay_ms(20);
    
    PORTB |=0x05;
    PORTB &=0x00;
    _delay_ms(20);
    
    PORTB |=0x06;
    PORTB &=0x00;
    _delay_ms(20);
    
    PORTB |=0x07;
    PORTB &=0x00;
    _delay_ms(20);
}
 
void adc_init(void)
{
    /*отключение компаратора*/
    ACSR = 0x80; 
    /*используем внутренний опорник(2.56V), результат выравниваем вправо,
    входной канал ацп - первый*/
    ADMUX = (1<<REFS1)|(1<<REFS0)|(1<<MUX0);  
 
    /*разрешим ацп, запустим преобразование (непрерывный режим)
    без прерывний, частота преобразования 76кГц*/
    ADCSRA = 0xE3;// 11100011  / Коэффициент деления частоты = 8 ,две последние цифры регулируют частоту
}
int main(void)
{
 
        
        while(1)
    {
    
        adc_init(); // вызов функции инициализации АЦП;
        switch_channel();//вызов функции переключения каналов;
    }
    
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2015, 14:49
Ответы с готовыми решениями:

как правильно работать с АЦП в atmega8
Добрый день! Подскажите как правильно работать с результатом АЦП. Например, у меня выравнивание...

Atmega8 АЦП
Подключены к портам PC0-PC5 шесть потенциометров. С портов PC0-PC2 приходит нормальная информация...

АЦП ATmega8
Доброго времени суток. Написал программу, в которой при выходе из обработчика прерывания по...

АЦП Atmega8
Код АЦП вывод на LCD чета не фурычит,не судите строго только изучаю АЦП. пишу только на ASM. В...

4
Модератор
Эксперт по электронике
8570 / 6386 / 859
Регистрация: 14.02.2011
Сообщений: 22,216
05.06.2015, 18:37 2
Цитата Сообщение от skibadeeeeeeee Посмотреть сообщение
adc_init(); // вызов функции инициализации АЦП;
зачем каждый раз инициализировать?
1
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,161
Записей в блоге: 1
05.06.2015, 20:45 3
Эталон? Ну поставьте флаг (глобальная переменная) в false, по первому измерению, if флаг == false { флаг в true и etalon = adc }.
1
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 7
12.06.2015, 12:46  [ТС] 4
Добрый день, на этом форме я уже спрашивал, как пользоваться АЦП, спасибо, помогли с литературой, реализовал . А на данном этапе моя программа, которая сравнивает эталонный сигнал с остальными 8-ми не хочет производить сравнение результатов в самом АЦП, может что-то с реализацией АЦП входов не так? ! Программа ниже в архиве. Кто видит ошибки , подскажите, пожалуйста. (программа должна сравнивать эталонный и 8 других сигналов по очереди в определенный момент времени в 20 точках, и , если среднеквадратичная ошибка больше k,то вызывать подпрограмму zvuk и посылать сигнал на дисплей.)
Вложения
Тип файла: rar Код С++.rar (1.8 Кб, 2 просмотров)
0
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,161
Записей в блоге: 1
12.06.2015, 16:06 5
...ничего не видно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2015, 16:06

Измерение длительности входного сигнала на ATmega8
Здравствуйте!Существует следующее задание для ОМК ATmega 8: Если длительность сигнала...

Atmega8 и внешний АЦП
Существует внешний программируемый 24 разрядный АЦП, который подключен к atmega8. Необходимо...

ШИМ и АЦП в Atmega8
Мне нужно управлять током полевого транзистора. Для этого я снимаю напряжение с резистора,...

АЦП и измерение сопротивления
Всем привет! Ранее в темке интересовался по поводу измерения температуры датчиком pt100. Пришло...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru