2017-05-16 8 views
0

모터 엔코더 판독 값 (tim3) 및 홀 센서 센서 입력 (tim4)을 계산하기위한 두 개의 타이머 tim3 및 tim4를 사용합니다. 홀 인터페이스 모드에서 실행중인 TIM4의 TI1에 X1 입력 된 ch1, ch2 및 ch3 입력). 지금 내가하고 싶은 것은 두 개의 타이머를 동기화하여 홀 전환시 엔코더 타이머가 재설정되도록하는 것입니다. 그러나 리셋 모드와 인코더 모드 (SMS 레지스터에서)를 결합하여 tim4 TRGO가 전환 될 때 카운터 tim3이 재설정되는 것처럼 보이지 않습니다. 하나의 모드 만 선택할 수 있지만 둘 중 하나만 선택할 수있는 것 같습니다.STM32 홀 + 엔코더 타이머 동기화

아마도 두 개의 타이머를 어떻게 로터 위치 추정에 결합 할 수 있는지 오해하고 있습니까? 카운터를 수동으로 재설정하기 위해 ISR을 사용하지 않고 stm32에서 홀 센서 판독 값과 엔코더 판독 값을 결합하고 동기화하는 가장 좋은 방법은 무엇입니까? (가능한 한 하드웨어에서 자동으로이 작업을 수행하려고합니다. 수동 솔루션이 작동하지만 100 % 만족하지는 않습니다.)

칩은 stm32f103입니다.

+0

칩을 지정하지 않았습니다. – Jeroen3

답변

0

CR2에서 각 타이머에는 출력 신호 (MMS)가 있습니다. SMCR에서 각 타이머에는 입력 신호 모드 (SMS)가 있습니다. 나는 인코더 타이머가 홀 타이머의 CH1에 때마다 입력 캡처를 다시 생각,

당신이 에 홀 타이머를 설정

펄스 비교 에 인코더 타이머 모드 재설정합니다.

칩에서 가능한 경우 타이머 간의 상호 연결에 따라 다릅니다. TIMx 내부 트리거 연결 (ITR)을 참조하십시오.
SMS 비트는 이미 인코더 모드에 있습니다. 재설정 모드와 인코더 모드를 동시에 사용할 수는 없습니다.

메모리에서 TIMx-> EGR : UG로 DMA 작업을 트리거 할 수 있습니다.
TIM3_CH1은 DMA1 채널 6에서 TIM4-> EGR까지 0x0001 데이터로 주변 장치 연산을 트리거 할 수 있습니다.
이렇게하면 TIM4가 카운터를 다시 초기화하게됩니다.

+0

칩은 f103입니다. – Martin

+0

문제는 재설정 모드 (100)가 인코더 모드 1 (001)과 동일한 SMS 비트를 사용하기 때문에 재설정 모드로 인코더 타이머를 구성하는 방법을 이해하지 못합니다. 따라서 인코더 모드와 리셋 모드를 동시에 가질 수는 없습니다. 설명서에있는 세부 사항을 놓치지 않았다면 ... – Martin

+0

@ Martin 당신 말이 맞습니다. 그것은 불가능합니다. 나는 내 대답을 바꾸었다. – Jeroen3