реклама на сайте
подробности

 
 
> Проблема при измерении периода синусоиды, ATmega8
straighter
сообщение Mar 4 2016, 23:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 29-06-12
Пользователь №: 72 555



Уважаемые форумчане, помогите разобраться... ATmega8 работает с кварцем 8 Мгц. На вход встроенного компаратора подаю синусоиду 4 кГц от стабильного генератора. По положительному перепаду на выходе компаратора происходит захват значения в Timer/Counter1. Возникает прерывание, вычисляется разность между последним захваченным значением и предыдущим захваченным значением. По идее, эта разность должна быть равна 2000, т.к. 8МГц/4кГц=2000.
Но на самом деле получается 1000. Почему?

Это значение (1000) я могу наблюдать в виде последовательного кода на выходе PORTC.1 с помощью осциллографа.

Фрагмент программы, прерывание по захвату Таймера1:

i
Код
nterrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
b=ICR1;
if (b>a) {
e=b-a;
};
a=b;
for(i=0; i < 16; i++)
{      
if(0x0001 & (e>>(15-i)))
        PORTC.1=1;                      //если бит-единица, то и выставляем единицу
        else PORTC.1=0;       //иначе - выставляем ноль        
     }
PORTC.1=0;
}


Сообщение отредактировал IgorKossak - Mar 5 2016, 10:40
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zombi
сообщение Mar 5 2016, 12:24
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



А если в прерывании просто инвертировать PORTC.1 какая частота на нём будет?
Go to the top of the page
 
+Quote Post
straighter
сообщение Mar 5 2016, 13:12
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 29-06-12
Пользователь №: 72 555



Цитата(zombi @ Mar 5 2016, 14:24) *
А если в прерывании просто инвертировать PORTC.1 какая частота на нём будет?


Это я тоже пробовал раньше. Тогда частота синусоиды была 25 кГц (период 40 мкс). А частота сигнала на выходе порта, который я инвертировал, была в два раза ниже, как и должно быть:

Прикрепленное изображение


А вот осциллограмма моего последнего эксперимента, о котором я писал в первом посте. Частота синусоиды 4 кГц. На осциллограмме показаны кодовая последовательность на выходе PORTC.1 и вспомогательные импульсы для облегчения разделения битов в кодовой последовательности. Если перевести кодовые пакеты в десятичную систему, то получается 1000 и 999:

Прикрепленное изображение


Вот в растянутом виде:

Прикрепленное изображение


Сообщение отредактировал straighter - Mar 5 2016, 13:19
Go to the top of the page
 
+Quote Post
zombi
сообщение Mar 5 2016, 14:52
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(straighter @ Mar 5 2016, 17:12) *
На осциллограмме показаны кодовая последовательность на выходе PORTC.1 и вспомогательные импульсы для облегчения разделения битов в кодовой последовательности.

А почему интервалы между "вспомогательные импульсы" разные?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- straighter   Проблема при измерении периода синусоиды   Mar 4 2016, 23:31
- - akl   Возможно, есть дребезг в моменты перехода полуволн...   Mar 5 2016, 02:59
|- - straighter   Цитата(zombi @ Mar 5 2016, 16:52) А почем...   Mar 5 2016, 18:14
|- - pilot1440   ACSR=0x04; а какое условие прерывания у компаратор...   Mar 13 2017, 12:45
- - zombi   Или clkcpu не 8MHz или на счетчик поступает не clk...   Mar 5 2016, 14:41
- - controller_m30   Приведите ещё настройки всех регистров компаратора...   Mar 5 2016, 14:52
- - zombi   Судя по осциллограммам на формирование одного бита...   Mar 5 2016, 19:37
- - straighter   Цитата(zombi @ Mar 5 2016, 21:37) Судя по...   Mar 5 2016, 20:39
- - zombi   Цитата(straighter @ Mar 5 2016, 23:39) Вр...   Mar 5 2016, 21:11
- - controller_m30   Цитата(straighter @ Mar 5 2016, 23:39) По...   Mar 5 2016, 21:53
|- - straighter   Цитата(controller_m30 @ Mar 5 2016, 23:53...   Mar 6 2016, 08:28
|- - zombi   Цитата(straighter @ Mar 6 2016, 00:39) Я ...   Mar 6 2016, 11:52
|- - straighter   Попробую так написать, поставить строб после бита.   Mar 6 2016, 15:02
|- - zombi   Цитата(straighter @ Mar 6 2016, 18:02) ст...   Mar 6 2016, 15:20
|- - straighter   Да, вроде бы понял. Попробую так и написать.   Mar 6 2016, 15:24
- - zombi   Цитата(controller_m30 @ Mar 6 2016, 00:53...   Mar 6 2016, 04:45


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 00:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016