LoginSignup
0
0

More than 1 year has passed since last update.

STM32F767でPWMの測定を作てみた。

Last updated at Posted at 2021-07-17

目的
シェフの気まぐれ
内部タイマーを使いusでオン時間を測る

工夫点 1000の割り算
1000/15=66
66*1.5=100

100,000/1024=97.65625
97.65625*1.024=100

97.65625*0.024=2.234375

97.65625+2.234375=100

97*32/1024=3.03125

97+3=100

結果
The time taken was 84 seconds
The time taken was 84546 seconds
The time taken was 84589 seconds
The time taken was 84590 seconds
The time taken was 84566 seconds
The time taken was 84623 seconds
The time taken was 84557 seconds
The time taken was 84592 seconds
The time taken was 84583 seconds
The time taken was 84580 seconds
The time taken was 84586 seconds
The time taken was 84583 seconds
The time taken was 84598 seconds
The time taken was 84578 seconds
The time taken was 84557 seconds
The time taken was 84 seconds
The time taken was 84577 seconds
The time taken The time taken was 84587 seconds
The time taken was 84 seconds
The time taken was 84576 seconds
The time taken was 84 seconds
The time taken was 84616 seconds
The time taken was 84 seconds

参考

Timer - タイマー時間


#include "mbed.h"

//10の割り算 0から1028までは、正しい。主に0から999
#define DVI10(n) ((n*205)>>11)

//1000の割り算 だいたい正しい
#define DVI1000(n) ((n>>10)+(((n>>10)*32)>>10))

#define HIGH 1
DigitalIn in1(A0);

//タイマーの設定
Timer t;

//in1のオン時間をusで測る 今のところ引数は、無効
int pulseIn(int pin1,int pu1,int timeout1)
{

    while(in1 == 0) {}

    t.start();
    while(in1 != 0) {}
    t.stop();

    return(t.read_us());

}//pulseIn

int main() {
    int pwmco2;

    //PWMでデータ取得
    pwmco2=pulseIn(7 ,HIGH,2000000);
    printf("The time taken was %d seconds\r\n", pwmco2  );
    printf("The time taken was %d seconds\r\n", DVI1000(pwmco2)  );


}//main


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0