ew

Dependencies:   Nucleo_Hello_Encoder mbed

Committer:
sakanakuuun
Date:
Thu Sep 01 06:38:13 2016 +0000
Revision:
0:1c8034b7f565
Child:
1:026846d05bb7
f

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakanakuuun 0:1c8034b7f565 1 #include "mbed.h"
sakanakuuun 0:1c8034b7f565 2 #include "Encoder.h"
sakanakuuun 0:1c8034b7f565 3 #include "prime.h"
sakanakuuun 0:1c8034b7f565 4
sakanakuuun 0:1c8034b7f565 5
sakanakuuun 0:1c8034b7f565 6 //STM mbed bug: these macros are MISSING from stm32f3xx_hal_tim.h
sakanakuuun 0:1c8034b7f565 7 #ifdef TARGET_STM32F3
sakanakuuun 0:1c8034b7f565 8 #define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT)
sakanakuuun 0:1c8034b7f565 9 #define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__) (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR))
sakanakuuun 0:1c8034b7f565 10 #endif
sakanakuuun 0:1c8034b7f565 11
sakanakuuun 0:1c8034b7f565 12
sakanakuuun 0:1c8034b7f565 13 Serial pc(SERIAL_TX, SERIAL_RX);
sakanakuuun 0:1c8034b7f565 14
sakanakuuun 0:1c8034b7f565 15 DigitalOut right_v(PC_7);
sakanakuuun 0:1c8034b7f565 16
sakanakuuun 0:1c8034b7f565 17 int main()
sakanakuuun 0:1c8034b7f565 18 {
sakanakuuun 0:1c8034b7f565 19 right_v = 1;
sakanakuuun 0:1c8034b7f565 20
sakanakuuun 0:1c8034b7f565 21 TIM_Encoder_InitTypeDef encoder1, encoder2;
sakanakuuun 0:1c8034b7f565 22 TIM_HandleTypeDef timer1, timer2;
sakanakuuun 0:1c8034b7f565 23
sakanakuuun 0:1c8034b7f565 24
sakanakuuun 0:1c8034b7f565 25 //counting on A-input only, 2 ticks per cycle, rolls over at 100
sakanakuuun 0:1c8034b7f565 26 EncoderInit(&encoder1, &timer1, TIM1, 99, TIM_ENCODERMODE_TI1);
sakanakuuun 0:1c8034b7f565 27
sakanakuuun 0:1c8034b7f565 28 //counting on both A&B inputs, 4 ticks per cycle, full 32-bit count
sakanakuuun 0:1c8034b7f565 29 EncoderInit(&encoder2, &timer2, TIM2, 0xffffffff, TIM_ENCODERMODE_TI12);
sakanakuuun 0:1c8034b7f565 30
sakanakuuun 0:1c8034b7f565 31 pc.printf("STM HAL encoder demo\n\r");
sakanakuuun 0:1c8034b7f565 32
sakanakuuun 0:1c8034b7f565 33 while(1) {
sakanakuuun 0:1c8034b7f565 34 uint16_t count1=0;
sakanakuuun 0:1c8034b7f565 35 uint32_t count2=0;
sakanakuuun 0:1c8034b7f565 36 int8_t dir1, dir2;
sakanakuuun 0:1c8034b7f565 37
sakanakuuun 0:1c8034b7f565 38
sakanakuuun 0:1c8034b7f565 39 //OK 401 411 446 TICKER 030
sakanakuuun 0:1c8034b7f565 40 //count1=TIM1->CNT;
sakanakuuun 0:1c8034b7f565 41 //dir1=TIM1->CR1&TIM_CR1_DIR;
sakanakuuun 0:1c8034b7f565 42 count1=__HAL_TIM_GET_COUNTER(&timer1);
sakanakuuun 0:1c8034b7f565 43 dir1 = __HAL_TIM_IS_TIM_COUNTING_DOWN(&timer1);
sakanakuuun 0:1c8034b7f565 44
sakanakuuun 0:1c8034b7f565 45 //OK 401 411 446 NOK 030
sakanakuuun 0:1c8034b7f565 46 //count2=TIM2->CNT;
sakanakuuun 0:1c8034b7f565 47 //dir2=TIM2->CR1&TIM_CR1_DIR;
sakanakuuun 0:1c8034b7f565 48 count2=__HAL_TIM_GET_COUNTER(&timer2);
sakanakuuun 0:1c8034b7f565 49 dir2 = __HAL_TIM_IS_TIM_COUNTING_DOWN(&timer2);
sakanakuuun 0:1c8034b7f565 50
sakanakuuun 0:1c8034b7f565 51 move(10,10);
sakanakuuun 0:1c8034b7f565 52 pc.printf("%d%s %d%s %d%s %d%s\r\n", count1, dir1==0 ? "+":"-",
sakanakuuun 0:1c8034b7f565 53 count2, dir2==0 ? "+":"-");
sakanakuuun 0:1c8034b7f565 54 wait(0.5);
sakanakuuun 0:1c8034b7f565 55 }
sakanakuuun 0:1c8034b7f565 56 }