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

 
 
> Эмуляция энкодера.
Jenya7
сообщение Jul 24 2017, 05:45
Сообщение #1


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Что бы проверить работу таймера в режиме энкодера я решил эмулировать на двух ножках AB сигналы.
Код
void TIM7_IRQHandler(void)
{
   switch (enc_state)
   {
       case 0:
           GPIOF->BSRR = GPIO_Pin_9;   //1
           GPIOF->BRR = GPIO_Pin_10;   //0
       break;
       case 1:
           GPIOF->BSRR = GPIO_Pin_9;   //1
           GPIOF->BSRR = GPIO_Pin_10;  //1
       break;
       case 2:
           GPIOF->BRR = GPIO_Pin_9;   //0
           GPIOF->BSRR = GPIO_Pin_10; //1
       break;
       case 3:
           GPIOF->BRR = GPIO_Pin_9;   //0
           GPIOF->BRR = GPIO_Pin_10; //0
       break;
   }
  
   if(enc_state == 3)
     enc_state = 0;
   else
     enc_state++;
  
   TIM7->SR = 0;
}

По идее должно работать как на картинке, сигналы сдвинуты на 90 градусов, но на скопе я вижу сигналы в одной фазе. Это скоп так показывает или у меня ошибка?

Сообщение отредактировал Jenya7 - Jul 24 2017, 05:46
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
esaulenka
сообщение Jul 24 2017, 07:57
Сообщение #2


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Тут прерывание срабатывает два раза.
После команды сброса флажка прерывания надо что-то типа __DSB(); или просто несколько nop'ов.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 24 2017, 08:23
Сообщение #3


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(esaulenka @ Jul 24 2017, 12:57) *
Тут прерывание срабатывает два раза.
После команды сброса флажка прерывания надо что-то типа __DSB(); или просто несколько nop'ов.

О! __DSB(); помогло, спасибо. а что эта инструкция делает?

описание такое
Цитата
The Data Synchronization Barrier (DSB) acts as a special kind of memory barrier. The DSB operation will complete when all explicit memory accesses before this instruction have completed. No instructions after the DSB will be executed until the DSB instruction has completed, that is, when all of the pending accesses have completed.


но как это влияет на обработку прерывания?

Сообщение отредактировал Jenya7 - Jul 24 2017, 08:37
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Эмуляция энкодера.   Jul 24 2017, 05:45
- - k155la3   Задайте состояния выходов для энкодера таблицей. И...   Jul 24 2017, 06:03
|- - Jenya7   Цитата(k155la3 @ Jul 24 2017, 11:03) Зада...   Jul 24 2017, 06:10
- - k155la3   скорее всего глючек не в приведенном коде, а ...   Jul 24 2017, 07:13
|- - Jenya7   Цитата(k155la3 @ Jul 24 2017, 12:13) скор...   Jul 24 2017, 07:21
- - Эдди   А таймер случайно в ту же ногу не выдает импульсы?   Jul 24 2017, 07:38
|- - Jenya7   Цитата(Эдди @ Jul 24 2017, 12:38) А тайме...   Jul 24 2017, 07:43
- - esaulenka   Никогда _достаточно_ глубоко не разбирался, но сут...   Jul 24 2017, 08:47
|- - Jenya7   Цитата(esaulenka @ Jul 24 2017, 13:47) Ни...   Jul 24 2017, 09:17
- - Эдди   А частота какая? Странно, что такой небольшой кусо...   Jul 24 2017, 10:25
|- - Jenya7   Цитата(Эдди @ Jul 24 2017, 15:25) А часто...   Jul 24 2017, 10:53
|- - k155la3   Цитата(Jenya7 @ Jul 24 2017, 13:53) . . ....   Jul 24 2017, 11:46
|- - Jenya7   Цитата(k155la3 @ Jul 24 2017, 16:46) я по...   Jul 24 2017, 12:17
- - Эдди   Заведите отдельный счетчик, и в прерывании UE инкр...   Jul 24 2017, 13:33
|- - Jenya7   Цитата(Эдди @ Jul 24 2017, 18:33) Заведит...   Jul 24 2017, 15:03
- - Эдди   Можно почитать ST'шный RM по поводу связывания...   Jul 24 2017, 19:05
- - uriy   Для генерации такого сигнала не нужны никакие прер...   Jul 25 2017, 04:56
- - Александр1986   Всем привет. Ребята помогите разобраться с маркиро...   Aug 15 2017, 10:40
- - XVR   Цитата(Александр1986 @ Aug 15 2017, 13:40...   Aug 15 2017, 13:35


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:55
Рейтинг@Mail.ru


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