Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
A3921_2p.cpp@2:918eefae7a4e, 2021-07-15 (annotated)
- Committer:
- Ryu_25_MIC_512
- Date:
- Thu Jul 15 14:33:02 2021 +0000
- Revision:
- 2:918eefae7a4e
- Parent:
- 1:3ea68f4a0556
- Child:
- 3:e40b9af046b8
add SetPeriod_ms()
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Ryu_25_MIC_512 | 0:99d974f5780a | 1 | //********************** |
Ryu_25_MIC_512 | 0:99d974f5780a | 2 | // A3921_2p.cpp for mbed |
Ryu_25_MIC_512 | 0:99d974f5780a | 3 | // |
Ryu_25_MIC_512 | 0:99d974f5780a | 4 | // (C)Copyright 2021 All rights reserved by R.Ihashi |
Ryu_25_MIC_512 | 0:99d974f5780a | 5 | //********************** |
Ryu_25_MIC_512 | 0:99d974f5780a | 6 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 7 | #include "A3921_2p.h" |
Ryu_25_MIC_512 | 0:99d974f5780a | 8 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 9 | A3921_2p::A3921_2p(PinName pwm_l, PinName phase): |
Ryu_25_MIC_512 | 0:99d974f5780a | 10 | PWM_L(pwm_l), |
Ryu_25_MIC_512 | 0:99d974f5780a | 11 | PHASE(phase) |
Ryu_25_MIC_512 | 0:99d974f5780a | 12 | { |
Ryu_25_MIC_512 | 0:99d974f5780a | 13 | reverse = false; |
Ryu_25_MIC_512 | 0:99d974f5780a | 14 | duty = 0; |
Ryu_25_MIC_512 | 0:99d974f5780a | 15 | period = 0.001; |
Ryu_25_MIC_512 | 0:99d974f5780a | 16 | PWM_L.period(period); |
Ryu_25_MIC_512 | 0:99d974f5780a | 17 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 18 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 19 | A3921_2p::~A3921_2p(){ |
Ryu_25_MIC_512 | 0:99d974f5780a | 20 | PWM_L.pulsewidth_us(0); |
Ryu_25_MIC_512 | 0:99d974f5780a | 21 | PHASE = 1; |
Ryu_25_MIC_512 | 0:99d974f5780a | 22 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 23 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 24 | |
Ryu_25_MIC_512 | 2:918eefae7a4e | 25 | void A3921_2p::SetPeriod(float val){ |
Ryu_25_MIC_512 | 2:918eefae7a4e | 26 | period = val; |
Ryu_25_MIC_512 | 2:918eefae7a4e | 27 | PWM_L.period(period); |
Ryu_25_MIC_512 | 2:918eefae7a4e | 28 | } |
Ryu_25_MIC_512 | 2:918eefae7a4e | 29 | |
Ryu_25_MIC_512 | 2:918eefae7a4e | 30 | void A3921_2p::SetPeriod_ms(int val){ |
Ryu_25_MIC_512 | 2:918eefae7a4e | 31 | period = (float)val/1000; |
Ryu_25_MIC_512 | 2:918eefae7a4e | 32 | PWM_L.period(period); |
Ryu_25_MIC_512 | 2:918eefae7a4e | 33 | } |
Ryu_25_MIC_512 | 2:918eefae7a4e | 34 | |
Ryu_25_MIC_512 | 2:918eefae7a4e | 35 | void A3921_2p::SetPeriod_ms(float val){ |
Ryu_25_MIC_512 | 2:918eefae7a4e | 36 | period = val/1000.0f; |
Ryu_25_MIC_512 | 0:99d974f5780a | 37 | PWM_L.period(period); |
Ryu_25_MIC_512 | 0:99d974f5780a | 38 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 39 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 40 | void A3921_2p::SetEnable(bool mode){ |
Ryu_25_MIC_512 | 0:99d974f5780a | 41 | enable = mode; |
Ryu_25_MIC_512 | 0:99d974f5780a | 42 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 43 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 44 | void A3921_2p::SetReverse(bool mode){ |
Ryu_25_MIC_512 | 0:99d974f5780a | 45 | reverse = mode; |
Ryu_25_MIC_512 | 0:99d974f5780a | 46 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 47 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 48 | void A3921_2p::SetPulseWidth(float t){// -period <= t <= period |
Ryu_25_MIC_512 | 0:99d974f5780a | 49 | bool sign = true; |
Ryu_25_MIC_512 | 0:99d974f5780a | 50 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 51 | if(t > period)t = period; //周期を超えないように制限 |
Ryu_25_MIC_512 | 0:99d974f5780a | 52 | else if(t < -period)t = -period;//周期を超えないように制限 |
Ryu_25_MIC_512 | 0:99d974f5780a | 53 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 54 | duty = int(1000.0 * (t/period));//Duty比を計算 |
Ryu_25_MIC_512 | 0:99d974f5780a | 55 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 56 | if(t < 0.0f){ //マイナスだったらfalse |
Ryu_25_MIC_512 | 0:99d974f5780a | 57 | sign = false; |
Ryu_25_MIC_512 | 0:99d974f5780a | 58 | t=-t; |
Ryu_25_MIC_512 | 0:99d974f5780a | 59 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 60 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 61 | PHASE = reverse ^ sign; //回転方向を指定 |
Ryu_25_MIC_512 | 0:99d974f5780a | 62 | PWM_L.pulsewidth((float)enable*t);//パルスを出力 |
Ryu_25_MIC_512 | 0:99d974f5780a | 63 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 64 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 65 | void A3921_2p::SetPulseWidth_us(int t){ |
Ryu_25_MIC_512 | 0:99d974f5780a | 66 | SetPulseWidth((float)t/1000000); |
Ryu_25_MIC_512 | 0:99d974f5780a | 67 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 68 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 69 | void A3921_2p::SetDuty(int x){ |
Ryu_25_MIC_512 | 0:99d974f5780a | 70 | SetPulseWidth((float)x * period / 1000.0f); |
Ryu_25_MIC_512 | 0:99d974f5780a | 71 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 72 | |
Ryu_25_MIC_512 | 1:3ea68f4a0556 | 73 | void A3921_2p::SetDuty(float x){ |
Ryu_25_MIC_512 | 1:3ea68f4a0556 | 74 | SetPulseWidth(x * period / 1000.0f); |
Ryu_25_MIC_512 | 1:3ea68f4a0556 | 75 | } |
Ryu_25_MIC_512 | 1:3ea68f4a0556 | 76 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 77 | int A3921_2p::GetDuty(){ |
Ryu_25_MIC_512 | 0:99d974f5780a | 78 | return duty; |
Ryu_25_MIC_512 | 0:99d974f5780a | 79 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 80 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 81 | int A3921_2p::GetPulseWidth_us(){ |
Ryu_25_MIC_512 | 0:99d974f5780a | 82 | return GetPulseWidth() * 1000000; |
Ryu_25_MIC_512 | 0:99d974f5780a | 83 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 84 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 85 | float A3921_2p::GetPulseWidth(){ |
Ryu_25_MIC_512 | 0:99d974f5780a | 86 | float pluse; |
Ryu_25_MIC_512 | 0:99d974f5780a | 87 | pluse = (float)duty/1000.0f * period; |
Ryu_25_MIC_512 | 0:99d974f5780a | 88 | return fabs(pluse); |
Ryu_25_MIC_512 | 0:99d974f5780a | 89 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 90 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 91 | float A3921_2p::GetPeriod(){ |
Ryu_25_MIC_512 | 0:99d974f5780a | 92 | return period; |
Ryu_25_MIC_512 | 0:99d974f5780a | 93 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 94 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 95 | bool A3921_2p::GetEnable(){ |
Ryu_25_MIC_512 | 0:99d974f5780a | 96 | return enable; |
Ryu_25_MIC_512 | 0:99d974f5780a | 97 | } |
Ryu_25_MIC_512 | 0:99d974f5780a | 98 | |
Ryu_25_MIC_512 | 0:99d974f5780a | 99 | bool A3921_2p::GetReverse(){ |
Ryu_25_MIC_512 | 0:99d974f5780a | 100 | return reverse; |
Ryu_25_MIC_512 | 0:99d974f5780a | 101 | } |