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);
    }
}

動かしている様子は、デスクトップはこんな感じです。 /media/uploads/y_notsu/pwmdutytest.jpg

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.