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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Частотомер на Atmega8 (CVAVR)
=GM=
сообщение Jun 15 2010, 12:03
Сообщение #16


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Разница М2-М1 всё время где-то 1033-1034, это приемлемо, по крайней мере согласуется с количеством импульсов входной частоты за 1 сек.
А вот разница N2-N1=0, как это может быть? И как можно получить конечную частоту, деля на 0?

Скорее всего, неверный формат вывода. N1, N2, М1, М2 - целые числа формата long, значит формат вывода должен быть %li, а не %i.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ps1x
сообщение Jun 15 2010, 12:50
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Код
reset
aN1=65536 M1=98 ntick1=0 ntick2=1
N2=12582912 M2=1158 ntick1=0 ntick2=192
F=1016.187438Hz

N1=0 M1=205 ntick1=0 ntick2=0
N2=12451840 M2=1262 ntick1=0 ntick2=190
F=1018.644653Hz

N1=0 M1=52 ntick1=0 ntick2=0
N2=12451840 M2=1109 ntick1=0 ntick2=190
F=1018.644653Hz

N1=0 M1=155 ntick1=0 ntick2=0
N2=12517376 M2=1213 ntick1=0 ntick2=191
F=1014.270141Hz

N1=0 M1=3 ntick1=0 ntick2=0
N2=12451840 M2=1058 ntick1=0 ntick2=190
F=1016.717163Hz

N1=0 M1=105 ntick1=0 ntick2=0
N2=12517376 M2=1162 ntick1=0 ntick2=191
F=1013.311462Hz

N1=0 M1=208 ntick1=0 ntick2=0
N2=12451840 M2=1266 ntick1=0 ntick2=190
F=1019.608398Hz

N1=0 M1=56 ntick1=0 ntick2=0
N2=12451840 M2=1113 ntick1=0 ntick2=190
F=1018.644653Hz

N1=0 M1=159 ntick1=0 ntick2=0
N2=12451840 M2=1216 ntick1=0 ntick2=190
F=1018.644653Hz

Действительно, только %li smile.gif
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 15 2010, 14:05
Сообщение #18


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Теперь мне не нравится, что ntick1 всё время равен 0, так не должно быть. Хотя N2=ntick2<<16.

И почему такая разница во времени между циклами измерения? Для 12 МГц клока составит 65536*83нс=5,461 мс.

Признавайтесь, куда у вас подключена нога захвата :-)?

И ещё, попробуйте поставить все операторы sprintf после вычисления Fx, возможно они вносят неоднородную задержку в цикл измерения. Не забудьте ввести доп.переменные ntick3, 4... чтобы не затирать начало

А потом перейдём к решению "нюанса".


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ps1x
сообщение Jun 15 2010, 14:58
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(=GM= @ Jun 15 2010, 18:05) *
Признавайтесь, куда у вас подключена нога захвата :-)?

Входной меандр подключен к Т0. ICP висит в воздухе...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 15 2010, 15:35
Сообщение #20


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(ps1x @ Jun 15 2010, 13:58) *
Входной меандр подключен к Т0. ICP висит в воздухе...

Ну вот, приплыли :-). Не обижайтесь, шутю я, у всех бывает. У вас в ICR1 стоял 0х0000 по умолчанию, вот вы его и считывали.

Нога должна быть физически подключена к генератору и Т0. Иначе захват не будет работать. Далее, таймер0 и захват должны быть настроены на срабатывание от одного фронта, скажем 1-0.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ps1x
сообщение Jun 15 2010, 16:02
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



А DDR соответствующих ножек влияет? Подтяжка? Сейчас вывод тини26 подключен напрямую к T0 меге и все. Надо добавить соединение с ICP? (пока что делаю на т.н. Breadboard пластиковая макетка с дырочками).
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 15 2010, 16:23
Сообщение #22


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Да, надо соединить Т0 и ICP с генератором меандра. ICP настроить на ввод, подтяжка не нужна.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ps1x
сообщение Jun 15 2010, 19:22
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Появилась стабильность smile.gif Значения 1018.8184 - 1018.8183 около того. Наверное, можно списать на погрешность кварца генератора и частотомера, хотя один из вариантов прошлого (smile.gif) периодически показывал значения очень близкие к расчетному +0.00030 или около того.
Однако периодически происходят выбросы 1024.125... К сожалению перешел на другое рабочее место, где самодельный переходник USB-USART не определяется, посему не могу предоставить никакой отладочной информации, сам считываю с дисплейчика.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 15 2010, 19:36
Сообщение #24


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Ну, я рад за вас. Выбросы происходят из-за того самого "нюанса", который теперь стоит обсудить. Дело в том, что между считыванием ICR1 и считыванием nover есть временной зазор, если прерывание TOV1 попадёт на него, то nover изменится на 1, хотя не должно. Вот такой нюанс. Подумайте сами, как его можно разрешить, завтра обсудим. Кстати, нельзя ли взглянуть на схему генератора струны?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ps1x
сообщение Jun 15 2010, 20:21
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Автогенератор в институте, и схемы от него нет, даже боюсь его развинчивать, но постараюсь что нибудь добыть когда там буду.

Может быть запретить прерывания перед считыванием ICR1? smile.gif

up: выбросы бывают и в меньшую сторону, около 1013 Гц.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 16 2010, 10:10
Сообщение #26


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(ps1x @ Jun 15 2010, 19:21) *
Может быть запретить прерывания перед считыванием ICR1? smile.gif

Всё равно между захватом и запретом можем пропустить переполнение tov1 или tov0, хотя и реже.
Расскажу, как работает код
Код
1  TIFR=(1<<ICF1);               //сбросим флаг захвата
2  while((TIFR&0x20)==0x20);     //ждём начала измерения
3  ntick1=ICR1;                  //запомним ICR1 и TCNT0
4  mtick1=TCNT0;                 //в начале измерения
5  ntick2=nover;
6  mtick2=mover&0x00FF;

1. Сбросили флаг захвата, это понятно, чтобы будущее содержимое ICR1 и TCNT0 было синхронизировано.
2. Ждём захвата, чтобы текущее содержимое системного времени в TCNT1 защёлкнулось в ICR1 и чтобы содержимое TCNT0 соответствовало защёлкнутому времени.
3-4. Сохраняем содержимое ICR1 и TCNT0 в памяти для дальнейшего использования.
5. Сохраняем старшую часть 32-битного счётчика nover в памяти для дальнейшего использования. Заметьте, я специально оттянул время запоминания nover подальше от захвата п.2, чтобы дать время сработать возможному прерыванию и скорректировать nover.
6. Сохраняем старшую часть 32-битного счётчика mover в памяти для дальнейшего использования. Тут статика, никаких особенностей.

Тут можно посмотреть варианты решения http://electronix.ru/forum/index.php?showtopic=16900


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ps1x
сообщение Jun 16 2010, 13:31
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(=GM= @ Jun 16 2010, 14:10) *
4) Проверить наличие переноса из таймера1. При наличии переноса добавить единицу к Т6.

5) Проверить наличие второго захвата, если нет захвата перейти к п.4.

Вот так видимо? smile.gif
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 16 2010, 14:33
Сообщение #28


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Не понял, по-подробнее можно?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ps1x
сообщение Jun 16 2010, 14:51
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Ваш пост из того топика.

Сообщение отредактировал rezident - Jun 16 2010, 20:48
Причина редактирования: Нарушение п.3.4 Правил форума.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 21 2010, 15:31
Сообщение #30


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Ну что, ps1x, есть подвижки? В принципе, я нашёл решение для си, надо проверить...


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 03:01
Рейтинг@Mail.ru


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