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

 
 
> проблема с Timer/Counter, AT91SAM7X
Sergei_K
сообщение Oct 10 2007, 13:35
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 49
Регистрация: 14-02-07
Пользователь №: 25 346



Проблема в следующем: пытаюсь заставить работать примитивную программку со счетчиком: работаю в wave mode 10, то есть записываю некое значение в регистр RC, затем жду сравнения, после чего дергаю ногой.. На выходе имею ступеньку с определенной частотой, которая зависит от кидаемого в RC числа..

Так вот, в результате записи числа, скажем 0xCB, имею частоту, скажем 82,98кГц (для удобства цифры беру из результатов), далее при уменьшении данного числа на 1 вместо ожидаемого изменения частоты имею предыдущую частоту (с точностью до сотых, осциллографу верить можно..) Такая же картина наблюдается при изменении числа на 10 единиц, после чего (то есть на значении 0xС1) наблюдается резкий скачек частоты (84,59кГц) и снова это значение остается при уменьшении числа на 10 единиц.. и т.д.

Теоретические расчеты показавают, что 84,59кГц - адекватная величина, однако.. куда делись промежуточные значения?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Oct 12 2007, 09:55
Сообщение #2


Гуру
******

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



Я не о том. Вот этот фрагмент кода:
Код
while ((pTC_int->TC_SR & AT91C_TC_CPCS) == 0); // wait for TC RC compare

выполняется за время большее, чем нужно таймеру для инкремента.
То есть если, допустим, в RC записано значение 100, то на момент выхода из цикла while таймер будет иметь значение больше 100 (102 - 110, в зависимости от оптимизации, расположения звезд и т.п.), и это число будет плавать от цикла к циклу.
Go to the top of the page
 
+Quote Post
Sergei_K
сообщение Oct 12 2007, 10:59
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 49
Регистрация: 14-02-07
Пользователь №: 25 346



Цитата(aaarrr @ Oct 12 2007, 16:55) *
Я не о том. Вот этот фрагмент кода:
Код
while ((pTC_int->TC_SR & AT91C_TC_CPCS) == 0); // wait for TC RC compare

выполняется за время большее, чем нужно таймеру для инкремента.
То есть если, допустим, в RC записано значение 100, то на момент выхода из цикла while таймер будет иметь значение больше 100 (102 - 110, в зависимости от оптимизации, расположения звезд и т.п.), и это число будет плавать от цикла к циклу.



Так хорошо бы оно плавало, но, как я уже говорил, реально ничего не плавает.. идут 11 одинаковых значений, затем скачок.. Показания осциллографа проверены, полностью совпадают с показаниями частотомера.. (до сотых)

Попробовал использовать TIOA, результат полностью аналогичен предыдущему..
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 12 2007, 11:09
Сообщение #4


Гуру
******

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



Цитата(Sergei_K @ Oct 12 2007, 14:59) *
Так хорошо бы оно плавало, но, как я уже говорил, реально ничего не плавает.. идут 11 одинаковых значений, затем скачок.. Показания осциллографа проверены, полностью совпадают с показаниями частотомера.. (до сотых)

Оно может плавать, а может и не плавать - зависит, как я уже писал, от многих факторов.

Цитата(Sergei_K @ Oct 12 2007, 14:59) *
Попробовал использовать TIOA, результат полностью аналогичен предыдущему..

Как пробовали? Настройками таймера?
Go to the top of the page
 
+Quote Post
Sergei_K
сообщение Oct 16 2007, 13:17
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 49
Регистрация: 14-02-07
Пользователь №: 25 346



Цитата(aaarrr @ Oct 12 2007, 18:09) *
Как пробовали? Настройками таймера?


ну естественно.. а как же еще..
прописал бит ACPC (RC Compare Effect on TIOA) на переключение уровня.. Настроил PIO на работу с периферией A..

Результат: переключает уровни на TIOA при сравнении с RC.. в целом же картина с увеличением (уменьшением) значения в RC, как уже говорил, не изменилась..

Сообщение отредактировал Sergei_K - Oct 16 2007, 13:18
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Sergei_K   проблема с Timer/Counter   Oct 10 2007, 13:35
- - Dron_Gus   Цитата(Sergei_K @ Oct 10 2007, 17:35) зат...   Oct 10 2007, 13:42
- - aaarrr   Цитата(Sergei_K @ Oct 10 2007, 17:35) ......   Oct 10 2007, 13:54
- - Sergei_K   Ногой дергает PIO контроллер.. Насчет рассчетов: ...   Oct 11 2007, 06:45
|- - aaarrr   Цитата(Sergei_K @ Oct 11 2007, 10:45) Ног...   Oct 11 2007, 07:29
- - Dron_Gus   Если Вы ногой дергаете из прерывания - тогда ...   Oct 11 2007, 07:47
- - Sergei_K   ЦитатаГде такое написано? Максимальная частота тай...   Oct 11 2007, 09:56
|- - aaarrr   Цитата(Sergei_K @ Oct 11 2007, 13:56) whi...   Oct 11 2007, 10:34
|- - Sergei_K   Цитата(aaarrr @ Oct 11 2007, 17:34) На ча...   Oct 12 2007, 09:46
- - Dron_Gus   Я думаю Вам хотели сказать, что Ваша конструкция w...   Oct 12 2007, 11:53
- - Ivan_Petrov   Частоты переферийного блока и процессора могут отл...   Oct 13 2007, 19:23
- - aaarrr   Таймер и так сбрасывается по SWTRG, только вот на ...   Oct 13 2007, 19:52
|- - Ivan_Petrov   Цитата(aaarrr @ Oct 13 2007, 23:52) Тайме...   Oct 13 2007, 20:14
- - Dron_Gus   Выкладывайте код - будут советы...   Oct 16 2007, 19:20
|- - Sergei_K   Цитата(Dron_Gus @ Oct 17 2007, 02:20) Вык...   Oct 17 2007, 08:33
|- - aaarrr   Цитата(Sergei_K @ Oct 17 2007, 12:33) AT9...   Oct 17 2007, 08:46
|- - Sergei_K   Цитата(aaarrr @ Oct 17 2007, 15:46) Т.е. ...   Oct 22 2007, 09:14
- - aaarrr   Цитата(Sergei_K @ Oct 22 2007, 13:14) про...   Oct 22 2007, 11:37
- - Sergei_K   ЦитатаИ что Вы тогда пытались получить на RA.. чт...   Oct 23 2007, 11:44
- - aaarrr   Цитата(Sergei_K @ Oct 23 2007, 15:44) не ...   Oct 23 2007, 11:54


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

 


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


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