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

 
 
> Счетчик частоты на SAM7S64
abit
сообщение Jul 26 2011, 13:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-07-11
Пользователь №: 66 426



Здравствуйте.
Мне нужно было собрать измеритель частоты (от 1 до 4МГц) на SAM7S64 и передавать по usb в компьютер эту частоту... программирую в IAR...
встретился с проблемой - хотя там пишут про частоты в 47МГц...
реально например написана такая программа:
Код
do {counter++;} while (dataready!=0)

и стоит счетчик c прерыванием ровно на 1 секунду, который выставляет dataready...
программа успевает насчитать в counter до порядка 2 800 000... а мне ведь еще частоту в 4 000 000 мерить, а не просто счетчик пускать...
это можно как-то ускорить? может я неправильно что-то тактирую...
я просто впервые столкнулся с подобного рода программированием, подскажите пожалуйста в чем проблема...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
abit
сообщение Jul 26 2011, 17:42
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-07-11
Пользователь №: 66 426



kovigor
Я на этой страничке уже все скачивал, сам на нее выходил раньше гуглом - от туда ничего не компилется под IAR 4, суть в том что у них от версий 5 и 6 отличается сильно структура инклудов и вообще библиотеки не те... и ничего из новых версий IAR - так и не удалось скомпилить под старой... мой путь создания CDC-устройства вообще удивителен и я не понимаю как мне это удалось до сих пор...

Я понимаю что задача проще sm.gif мне нужно было узнать хотя бы возможность ее решения ) а то уже начал плату под циклон разводить было... но кстати в конце книжки Редькина таки на 600-от какой-то странице нашел пример работы с таймером... ну даже не с этим МК, но ладно - уже рад, завтра буду пробовать...

Спасибо за советы!!! Вы вселили мне надежду...

aaarrr
ну там действительно не одна... я глянул в дебагерре:

ldr регистр1, память
add регистр1, 1
str регистр1, память
ldr регистр2, память
mov регистр3,0
сmp регистр2, регистр3
bnq в начало

И это при максимальной оптимизации по времени исполнения! ерунда вообще... к чему эти пустые ldr, str? если можно выгрузить регистр потом... в итоге занимает 17 тактов процессора судя по всему (48 против 2.8)
вот пример того же кода на обычном IA:

l1:
inc регистр1
mov регистр2, память
test регистр2
bnq l1
mov память, регистр1

собстна этот вариант (со стандартной оптимизацией IA) - занимает 7 тактов процессора... что более чем в 2 раза быстрее...

Если я все правильно понял из ваших ответов - вроде нужно T0 повесить на выдачу прерываний по времени, T1 и T2 объединить в один, чтобы был 32-битный счетчик... (мне таки надо до 8 млн. досчитать в пределе... т.к. таймер времени - секунда, а ловлю я оба препада 4МГц)

Цитата
Для захвата - на TIOA, для счета - на TCLK

в чем отличие? я так понял из даташита tioa формируются из tclk после мультиплексера...
поясните в чем я ошибаюсь?

Цитата
Если на вход подать 4MHz, то при 48MHz MCK между фронтами таймер успеет досчитать только до трех в лучшем случае. Устроит такая разрешающая способность?
Режим захвата можно использовать на низких частотах, если нужно измерить относительно высокую, то остается только считать число тактов за определенное время, то есть сигнал подать на тактовый вход таймера.


меня в данный момент интересует максимально возможная разрешающая способность от этой МК... соответственно все таки вешаю на TCLK) про режим захвата - значит я неверно понял его смысл... хотя скорее ту блок-схему что дана в книжке... ведь судя по ней TIOA/TIOB - формируются из TCLK и нужны либо для вывода наружу знака переполнения либо для подключения второго каскада счетчка
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 26 2011, 20:31
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(abit @ Jul 26 2011, 21:42) *
кстати в конце книжки Редькина таки на 600-от какой-то странице нашел пример работы с таймером... ну даже не с этим МК, но ладно - уже рад, завтра буду пробовать...

Не тратьте время зря. Трудно придумать что-то более убогое, нежели примеры из этой книжки.
Вам всего-то нужно прочитать описание таймера и спокойно сконфигурировать его в выбранном режиме.

Цитата(abit @ Jul 26 2011, 21:42) *
к чему эти пустые ldr, str? если можно выгрузить регистр потом...

Подозреваю, что как вы сами попросили, так компилятор и сделал. Ни один современный компилятор с включенной оптимизацией не станет зря гонять через память не-volatile переменную.

Цитата(abit @ Jul 26 2011, 21:42) *
Если я все правильно понял из ваших ответов - вроде нужно T0 повесить на выдачу прерываний по времени, T1 и T2 объединить в один, чтобы был 32-битный счетчик... (мне таки надо до 8 млн. досчитать в пределе... т.к. таймер времени - секунда, а ловлю я оба препада 4МГц)

Нельзя так ловить оба фронта, таймер работает только по одному. Да и зачем это нужно?

Цитата(abit @ Jul 26 2011, 21:42) *
меня в данный момент интересует максимально возможная разрешающая способность от этой МК... соответственно все таки вешаю на TCLK) про режим захвата - значит я неверно понял его смысл... хотя скорее ту блок-схему что дана в книжке... ведь судя по ней TIOA/TIOB - формируются из TCLK и нужны либо для вывода наружу знака переполнения либо для подключения второго каскада счетчка

Для чего нужны совершенно правильно поняли, только это waveform mode. В режиме захвата (capture) TIOA - это входной сигнал, по которому можно загрузить текущее значение таймера в RA/RB.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- abit   Счетчик частоты на SAM7S64   Jul 26 2011, 13:01
- - kovigor   Цитата(abit @ Jul 26 2011, 16:01) подскаж...   Jul 26 2011, 13:23
- - aaarrr   Так таймером считать надо. На тактовый вход ему по...   Jul 26 2011, 13:23
- - abit   kovigor, aaarrr Спасибо за ответы. И оптимизм что ...   Jul 26 2011, 14:29
|- - kovigor   Цитата(abit @ Jul 26 2011, 17:29) kovigor...   Jul 26 2011, 15:03
|- - aaarrr   Цитата(abit @ Jul 26 2011, 18:29) Я подоз...   Jul 26 2011, 15:22
- - prottoss   Если поможет - вот полное описание по микроконтрол...   Jul 26 2011, 18:28
- - abit   aaarrr Компилятор IARа с оптимизацией почему-то та...   Jul 27 2011, 07:51
- - kovigor   Цитата(abit @ Jul 27 2011, 10:51) просто ...   Jul 27 2011, 08:06
- - aaarrr   Цитата(abit @ Jul 27 2011, 11:51) работае...   Jul 27 2011, 09:21
- - abit   Цитата(aaarrr @ Jul 27 2011, 13:21) Не бы...   Jul 27 2011, 10:42
- - aaarrr   Цитата(abit @ Jul 27 2011, 14:42) почему ...   Jul 27 2011, 12:09
- - abit   Цитата(aaarrr @ Jul 27 2011, 16:09) Потом...   Jul 27 2011, 13:58
- - aaarrr   Цитата(abit @ Jul 27 2011, 17:58) хотя ес...   Jul 27 2011, 14:26
- - abit   Цитата(aaarrr @ Jul 27 2011, 18:26) А clo...   Jul 28 2011, 10:40
- - aaarrr   Цитата(abit @ Jul 28 2011, 14:40) Я прост...   Jul 28 2011, 10:51
- - abit   Цитата(aaarrr @ Jul 28 2011, 14:51) Это т...   Jul 28 2011, 19:59
- - aaarrr   Цитата(abit @ Jul 28 2011, 23:59) и я уже...   Jul 28 2011, 21:55
- - abit   Цитата(aaarrr @ Jul 29 2011, 01:55) Стоп....   Jul 29 2011, 20:37
- - aaarrr   Цитата(abit @ Jul 30 2011, 00:37) 1) Квар...   Jul 29 2011, 21:00


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

 


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


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