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.