LPC812-MAXを使ってみた(4th: PWMとSerial I/O)
さて、ここで重大なお知らせです! 現在のところ、mbed開発環境でLPC812-MAXのPwmOutは使えません(;・∀・)
そんな代わりに、Dutyを変化させながらDutyをPCにUSBシリアルで通信する プログラムを書いてみました。
include the mbed library with this snippet
#include "mbed.h"
DigitalOut myled(LED1);
float PWMduty=0.01;
float StdTime=0.02;
Serial pc(USBTX, USBRX); // tx, rx
int main() {
pc.printf("Let's start\n");
wait(1);
while(1)
{
PWMduty=0.01;
do{
myled=0;
wait(StdTime*PWMduty);
myled=1;
wait(StdTime*(1.0-PWMduty));
PWMduty=PWMduty+0.01;
pc.printf("case 1: PWMduty=%f\n",PWMduty);
}while(PWMduty<=1.0);
PWMduty=1.0;
do{
myled=0;
wait(StdTime*PWMduty);
myled=1;
wait(StdTime*(1.0-PWMduty));
pc.printf("case 2: PWMduty=%f\n",PWMduty);
PWMduty=PWMduty-0.01;
}while(PWMduty>=0.000001);
}
}
動かしている様子は、デスクトップはこんな感じです。
LPC812-MAXのHandbook
https://mbed.org/handbook/mbed-NXP-LPC800-MAX-Getting-Started
にもあるように、ジャンパのSJ1とSJ4を半田しなおす必要があります。
また、ほかのmbedと同じシリアルドライバをインストールしておきましょう https://mbed.org/handbook/SerialPC
PwmOutはまぁ、あんまり使わないのでいいんですけど、 せっかくライブラリとか出力端子にPWMってあるんで、 実装してもらいたいですねぇ(もしかして、自分でライブラリ書けってこと?)
P.S. 質問してみたら、LPC800はTimerを1個しか持ってなくて、それを つかっちゃってるから、PWM無理だってぇー(´・ω・`)
Please log in to post comments.
