ew

Dependencies:   Nucleo_Hello_Encoder mbed

Committer:
sakanakuuun
Date:
Thu Sep 01 08:41:49 2016 +0000
Revision:
1:026846d05bb7
Parent:
0:1c8034b7f565
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 1:026846d05bb7 19 initmotor();
sakanakuuun 1:026846d05bb7 20
sakanakuuun 0:1c8034b7f565 21 right_v = 1;
sakanakuuun 0:1c8034b7f565 22
sakanakuuun 0:1c8034b7f565 23 TIM_Encoder_InitTypeDef encoder1, encoder2;
sakanakuuun 0:1c8034b7f565 24 TIM_HandleTypeDef timer1, timer2;
sakanakuuun 0:1c8034b7f565 25
sakanakuuun 0:1c8034b7f565 26
sakanakuuun 0:1c8034b7f565 27 //counting on A-input only, 2 ticks per cycle, rolls over at 100
sakanakuuun 0:1c8034b7f565 28 EncoderInit(&encoder1, &timer1, TIM1, 99, TIM_ENCODERMODE_TI1);
sakanakuuun 0:1c8034b7f565 29
sakanakuuun 0:1c8034b7f565 30 //counting on both A&B inputs, 4 ticks per cycle, full 32-bit count
sakanakuuun 0:1c8034b7f565 31 EncoderInit(&encoder2, &timer2, TIM2, 0xffffffff, TIM_ENCODERMODE_TI12);
sakanakuuun 0:1c8034b7f565 32
sakanakuuun 0:1c8034b7f565 33 pc.printf("STM HAL encoder demo\n\r");
sakanakuuun 0:1c8034b7f565 34
sakanakuuun 0:1c8034b7f565 35 while(1) {
sakanakuuun 0:1c8034b7f565 36 uint16_t count1=0;
sakanakuuun 0:1c8034b7f565 37 uint32_t count2=0;
sakanakuuun 0:1c8034b7f565 38 int8_t dir1, dir2;
sakanakuuun 0:1c8034b7f565 39
sakanakuuun 0:1c8034b7f565 40
sakanakuuun 0:1c8034b7f565 41 //OK 401 411 446 TICKER 030
sakanakuuun 0:1c8034b7f565 42 //count1=TIM1->CNT;
sakanakuuun 0:1c8034b7f565 43 //dir1=TIM1->CR1&TIM_CR1_DIR;
sakanakuuun 0:1c8034b7f565 44 count1=__HAL_TIM_GET_COUNTER(&timer1);
sakanakuuun 0:1c8034b7f565 45 dir1 = __HAL_TIM_IS_TIM_COUNTING_DOWN(&timer1);
sakanakuuun 0:1c8034b7f565 46
sakanakuuun 0:1c8034b7f565 47 //OK 401 411 446 NOK 030
sakanakuuun 0:1c8034b7f565 48 //count2=TIM2->CNT;
sakanakuuun 0:1c8034b7f565 49 //dir2=TIM2->CR1&TIM_CR1_DIR;
sakanakuuun 0:1c8034b7f565 50 count2=__HAL_TIM_GET_COUNTER(&timer2);
sakanakuuun 0:1c8034b7f565 51 dir2 = __HAL_TIM_IS_TIM_COUNTING_DOWN(&timer2);
sakanakuuun 0:1c8034b7f565 52
sakanakuuun 1:026846d05bb7 53 move(15,15);
sakanakuuun 0:1c8034b7f565 54 pc.printf("%d%s %d%s %d%s %d%s\r\n", count1, dir1==0 ? "+":"-",
sakanakuuun 0:1c8034b7f565 55 count2, dir2==0 ? "+":"-");
sakanakuuun 0:1c8034b7f565 56 wait(0.5);
sakanakuuun 0:1c8034b7f565 57 }
sakanakuuun 0:1c8034b7f565 58 }