|
проблема с Timer/Counter, AT91SAM7X |
|
|
|
Oct 10 2007, 13:35
|
Участник

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

|
Проблема в следующем: пытаюсь заставить работать примитивную программку со счетчиком: работаю в wave mode 10, то есть записываю некое значение в регистр RC, затем жду сравнения, после чего дергаю ногой.. На выходе имею ступеньку с определенной частотой, которая зависит от кидаемого в RC числа..
Так вот, в результате записи числа, скажем 0xCB, имею частоту, скажем 82,98кГц (для удобства цифры беру из результатов), далее при уменьшении данного числа на 1 вместо ожидаемого изменения частоты имею предыдущую частоту (с точностью до сотых, осциллографу верить можно..) Такая же картина наблюдается при изменении числа на 10 единиц, после чего (то есть на значении 0xС1) наблюдается резкий скачек частоты (84,59кГц) и снова это значение остается при уменьшении числа на 10 единиц.. и т.д.
Теоретические расчеты показавают, что 84,59кГц - адекватная величина, однако.. куда делись промежуточные значения?
|
|
|
|
|
 |
Ответов
|
Oct 12 2007, 09:55
|
Гуру
     
Группа: Свой
Сообщений: 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, в зависимости от оптимизации, расположения звезд и т.п.), и это число будет плавать от цикла к циклу.
|
|
|
|
|
Oct 12 2007, 10:59
|
Участник

Группа: Новичок
Сообщений: 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, результат полностью аналогичен предыдущему..
|
|
|
|
|
Oct 12 2007, 11:09
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Sergei_K @ Oct 12 2007, 14:59)  Так хорошо бы оно плавало, но, как я уже говорил, реально ничего не плавает.. идут 11 одинаковых значений, затем скачок.. Показания осциллографа проверены, полностью совпадают с показаниями частотомера.. (до сотых) Оно может плавать, а может и не плавать - зависит, как я уже писал, от многих факторов. Цитата(Sergei_K @ Oct 12 2007, 14:59)  Попробовал использовать TIOA, результат полностью аналогичен предыдущему.. Как пробовали? Настройками таймера?
|
|
|
|
|
Oct 16 2007, 13:17
|
Участник

Группа: Новичок
Сообщений: 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
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|