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

 
 
> проблема с 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
Ответов
Dron_Gus
сообщение Oct 16 2007, 19:20
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Выкладывайте код - будут советы...


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Sergei_K
сообщение Oct 17 2007, 08:33
Сообщение #3


Участник
*

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



Цитата(Dron_Gus @ Oct 17 2007, 02:20) *
Выкладывайте код - будут советы...


инициализация..
.................................
pTC->TC_CMR = AT91C_TC_CLKS_TIMER_DIV1_CLOCK | // TIMER_CLOCK1 selected
AT91C_TC_WAVE | // waveform mode
AT91C_TC_WAVESEL_UP_AUTO | // WAVSEL=10
AT91C_TC_CPCSTOP | // stop clock
AT91C_TC_CPCDIS | // disable clock
AT91C_TC_ACPC_TOGGLE; // RC Compare Effect on TIOA

*AT91C_PMC_PCER = (1<<AT91C_ID_TC1); // enable TC1
pPMC->PMC_MCKR = AT91C_PMC_CSS_PLL_CLK | // select PLL clock
AT91C_PMC_PRES_CLK; // selected clock divided by 1

pPIOB->PIO_PDR = ((unsigned int) 0x1 << 25); // disable PB25
pPIOB->PIO_ODR = ((unsigned int) 0x1 << 25); // disable PB25 to be driven
pPIOB->PIO_ASR = ((unsigned int) 0x1 << 25); // enable Peripheral A
.................................

программа..
.................................

pTC_int->TC_RC = Fr_int; // write value to RC
pTC_int->TC_CCR = AT91C_TC_CLKEN | // enable clock
AT91C_TC_SWTRG; // start clock

while ((pTC_int->TC_SR & AT91C_TC_CPCS) == 0); // wait for TC RC compare
..................................

собственно, все..

Сообщение отредактировал Sergei_K - Oct 17 2007, 08:37
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 17 2007, 08:46
Сообщение #4


Гуру
******

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



Цитата(Sergei_K @ Oct 17 2007, 12:33) *
AT91C_TC_CPCSTOP | // stop clock
AT91C_TC_CPCDIS | // disable clock

Т.е. запукается таймер один раз - откуда тогда частота берется? И в RA ничего не пишется.
Вопросов меньше не стало.
Go to the top of the page
 
+Quote Post
Sergei_K
сообщение Oct 22 2007, 09:14
Сообщение #5


Участник
*

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



Цитата(aaarrr @ Oct 17 2007, 15:46) *
Т.е. запукается таймер один раз - откуда тогда частота берется? И в RA ничего не пишется.
Вопросов меньше не стало.


то, что инициализация, выполняется один раз..
то, что программа, естественно, зацикленно.. просто мне казалось, что это очевидно..
таким образом, таймер запускается каждый раз при выполнении:
Цитата
pTC_int->TC_CCR = AT91C_TC_CLKEN | // enable clock
AT91C_TC_SWTRG; // start clock


RA не используется.. используется только RC.. Как видно, уровень на ноге переключается при RC сравнении..
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
- - aaarrr   Я не о том. Вот этот фрагмент кода: Кодwhile ...   Oct 12 2007, 09:55
|- - Sergei_K   Цитата(aaarrr @ Oct 12 2007, 16:55) Я не ...   Oct 12 2007, 10:59
|- - aaarrr   Цитата(Sergei_K @ Oct 12 2007, 14:59) Так...   Oct 12 2007, 11:09
|- - Sergei_K   Цитата(aaarrr @ Oct 12 2007, 18:09) Как п...   Oct 16 2007, 13:17
- - 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
- - 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 Текстовая версия Сейчас: 23rd July 2025 - 11:18
Рейтинг@Mail.ru


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