From fc1d150637ff6ee12de23fea4ea29ba27fe3c574 Mon Sep 17 00:00:00 2001 From: nyatla Date: Fri, 11 Nov 2011 09:42:34 +0000 Subject: [PATCH] git-svn-id: http://svn.osdn.jp/svnroot/mimic/trunk@96 47198e57-cb75-475f-84c4-a814cd6f29e0 --- misc/MiMicVM/api.js/LPCXPresso1769.All-mini.js | 1 + misc/MiMicVM/api.js/LPCXPresso1769.All.js | 490 ++++++++++++++++++++--- misc/MiMicVM/api.js/LPCXPresso1769.Gpio.js | 137 ++++++- misc/MiMicVM/api.js/LPCXPresso1769.Pin.js | 45 ++- misc/MiMicVM/api.js/LPCXpresso1769.Adc.js | 103 ++++- misc/MiMicVM/api.js/LPCXpresso1769.Mcu.js | 3 + misc/MiMicVM/api.js/LPCXpresso1769.Memory.js | 9 +- misc/MiMicVM/api.js/LPCXpresso1769.Peripheral.js | 62 ++- misc/MiMicVM/api.js/LPCXpresso1769.Pwm.js | 123 +++++- misc/MiMicVM/api.js/LPCXpresso1769.js | 4 + misc/MiMicVM/api.js/MiMicCore.js | 4 +- 11 files changed, 852 insertions(+), 129 deletions(-) create mode 100644 misc/MiMicVM/api.js/LPCXPresso1769.All-mini.js diff --git a/misc/MiMicVM/api.js/LPCXPresso1769.All-mini.js b/misc/MiMicVM/api.js/LPCXPresso1769.All-mini.js new file mode 100644 index 0000000..36e73c2 --- /dev/null +++ b/misc/MiMicVM/api.js/LPCXPresso1769.All-mini.js @@ -0,0 +1 @@ +var LPCXpresso1769;(function(){var g=MiMicLib.isUndef;var a={_EE:function(n){return{NG:[n|0,"Unknown exception in LPCXpresso1769"],INVALID_ARG:[n|1,"Invalid argument"],INVALID_PIN:[n|2,"Invalid pin"],INVALID_CFG:[n|3,"Invalid configulation"],VM_RUNTIME:[n|4,"MVM runtime error"],}}(MiMicError.NG[0]|MiMicError.MID_MiMic|MiMicError.CAID_LPCXPresso1769),_BCF:{setBit:function m(p,r,o,q,n){try{n.push(p);n.push(~(r<=0}};a.I2c=function c(){throw new MiMicException("Not imprement.")};a.Dma=function k(){throw new MiMicException("Not imprement.")};a.Uart=function f(){throw new MiMicException("Not imprement.")};a.Usb=function e(){throw new MiMicException("Not imprement.")};LPCXpresso1769=a}());(function(){var f=LPCXpresso1769;var p=f._BCF;var a=f._EE;var e=MiMicLib.isUndef;function b(w){try{var y=["0000000","000000","00000","0000","000","00","0",""];var A="";for(var u=0;u>>0);var x=t.toString(16).toLowerCase();if(x.length<1||x.length>8){throw new MiMicException(a.NG)}A+=y[x.length-1]+x}return A}catch(z){throw new MiMicException(z)}}function h(w){try{function x(A,z){for(var y=0;y>4)&4095}catch(o){throw new MiMicException(o)}},setOpt:function f(p){try{var o="";var m=new Array();if(!c(p.pin)){o+=this._pin.BCF_setOpt(p.pin,m)}if(!c(p.sel)){o+=this._adc.BCF_setSel(this._adinfo.ch,p.sel,m)}this._adc._mcu.callMiMicWithCheck(o+k.END,m);return}catch(n){throw new MiMicException(n)}}}}());(function(){var a=LPCXpresso1769;var n=a._BCF;var o=a._EE;var c=MiMicLib.isUndef;var h=MiMicLib.cloneAssoc;a.Gpio=function i(p,r){try{this._mcu=p;p.registerPhl(this,"GPIO")}catch(q){throw new MiMicException(q)}};a.Gpio.prototype={_FIO_DIR:[537509888,537509920,537509952,537509984,537510016],_FIO_PIN:[537509908,537509940,537509972,537510004,537510036],_FIO_SET:[537509912,537509944,537509976,537510008,537510040],_FIO_CLR:[537509916,537509948,537509980,537510012,537510044],_FIO_MASK:[537509904,537509936,537509968,537510000,537510032],_mcu:null,BCF_setDir:function k(r,q,s,p){try{return n.setBit(this._FIO_DIR[r],1,s,q,p)}catch(t){throw new MiMicException(t)}},BCF_setValue:function b(s,r,q,p){try{if(q){p.push(this._FIO_SET[s],this._FIO_MASK[s],~(1<>this._gpioinfo.bit)&1}catch(r){throw new MiMicException(r)}},outPatt:function m(q){try{var t="";var p=new Array();for(var r=0;r{power:int,clock:int} + *
    + *
  • power:int - + * 1bitのint値。 PCONP? レジスタに指定する値。Chapter 4: LPC17xx Clocking and power controlを参照。 + *
  • + *
  • clock:int - + * 2bitのint値。PCLKSEL? レジスタに指定する値。Chapter 4: LPC17xx Clocking and power controlを参照。 + *
  • + * @example + * //set DAC power on + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var phl=new LPCXpresso1769.Peripheral(mcu,LPCXpresso.PHL.ADC); + * phl.setOpt({power:1}); */ setOpt:function setOpt(i_opt) { @@ -1147,9 +1197,17 @@ DEV.Peripheral.prototype= return; }, /** - * ペリフェラルのクロックを返す。 - Table 42. Peripheral Clock Selection register bit valuesの変換テーブルです。 - クロックは、最後のキャッシュ値から計算します。 + * ペリフェラルのクロックを[Hz]単位で返す。 + * クロックは、Table 42. Peripheral Clock Selection register bit valuesと、MCUのクロック(LPCXpresso1769.Mcuの提供する値)から計算する。 + * 動作中のPLL0の変更には対応していない。注意すること。 + * @name LPCXpresso1769.Peripheral#getPCLK + * @function + * @return {int} + * Hz単位のペリフェラルクロック + * @example + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var phl=new LPCXpresso1769.Peripheral(mcu,LPCXpresso.PHL.PWM); + * alert(phl.getPCLK()); */ getPCLK:function getPCLK() { @@ -1174,14 +1232,36 @@ DEV.Peripheral.prototype= } } -}());(function(){ +}());/** + * @fileOverview LPCXpresso1769の物理ピンを制御するクラスを定義する。 + */ + +(function(){ var DEV=LPCXpresso1769; var BCF=DEV._BCF; var EE=DEV._EE; var isUndef=MiMicLib.isUndef; /** - * @see API manual. + * LPCXPresso1769.Pin (Pin)クラスのコンストラクタ。 + * ピン識別子を元に、MCUに関連付けらしたPinインスタンスを生成する。 + * Pinクラスは、MCUの物理ピン単位に、操作インタフェイスを定義する。 + * PINSEL,PINMODE,PINMODE_ODレジスタを管理する。 + * @name LPCXpresso1769.Pin + * @constructor + * @param {object as LPCXpresso1769.Mcu} i_mcu + * インスタンスを結びつけるMcuオブジェクト。 + * @param {object as ピン識別子} i_pin + * 生成するピンのピン識別子。 + * @param {object as associative array} i_opt + * インスタンス生成と同時にsetOpt関数で設定する値。省略時は無視する。 + * 詳細はsetOpt関数を参照。 + * このクラスは、上位クラスへピンの基本的な操作機能を提供する為のものであり、ユーザが直接使用することは(あまり)ない。 + * この関数は、MiMicの管理しているピン(ENET_?)も操作することが出来るが、操作してしまうとMiMicRemoteMcuとのコネクションが破壊されるので、注意すること。 + * @example + * //create pin instance at P0[0] + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var pin=new LPCXpresso1769.Pin(mcu,LPCXpresso.P0[0]); */ DEV.Pin=function Pin(i_mcu,i_pin,i_opt) { @@ -1210,6 +1290,7 @@ DEV.Pin.prototype= /** * setPinのBCを生成します。 + @private @param i_opt setOptBcを参照してください。 @return @@ -1246,7 +1327,25 @@ DEV.Pin.prototype= } }, /** - * @see API manual + * ピンにオプションパラメータをセットする。 + * 関数は、物理ピンのレジスタに、i_optで与えられる値を設定する。 + * 関数は、レジスタの位置に合わせてパラメータ値を自動的にシフトする。 + * @name LPCXpresso1769.Pin#setOpt + * @function + * @param {object as associative array} i_opt + * ピンコンフィグレーションのパラメタである。必要な値を格納した連想配列で指定する。 + * 全ての値を省略することは出来ない。連想配列のメンバは以下の通り。 + *
    {sel,mode,od}
    + *
      + *
    • sel:int - 2bitのint値。 PINSEL? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。
    • + *
    • mode:int - 1bitのint値。PINMODE? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。
    • + *
    • od:int - 1bitのbit値 PINMODE_OD? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。
    • + *
    + * @example + * //set GPIO,mode=1,open drain=0 + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var pin=new LPCXpresso1769.Pin(mcu,LPCXpresso.P2[3]); + * pin.setOpt({sel:0,mode:1,od:0}); */ setOpt:function setOpt(i_opt) { @@ -1266,11 +1365,7 @@ DEV.Pin.prototype= } }());/** - * LPCXPresso1769のADCクラスを定義します。 - class Adc - ADCペリフェラルを操作するクラス - class AdcPin - ADCピンを操作するクラス + * @fileOverview LPCXpresso1769の、ADコンバータペリフェラル、ピンの制御クラスを定義する。 */ (function(){ var DEV=LPCXpresso1769; @@ -1281,7 +1376,22 @@ var isUndef=MiMicLib.isUndef; /** - * see API manual. + * LPCXPresso1769.Adc (Adc)クラスのコンストラクタ。 + * MCUに関連付けしたADペリフェラルを生成する。 + * ADペリフェラルは、MCUのADCペリフェラル全体を管理する。 + * 関数は、ADCRレジスタのPDN,BURSTを1にセットする。 + * ADCペリフェラルはバーストモードで動作し、サンプリングレートは200KHz固定である。取得タイミングの制御はハードウェア依存である。 + * @constructor + * @name LPCXpresso1769.Adc + * @param {object as LPCXpresso1769.Mcu} i_mcu + * インスタンスを結びつけるMcuオブジェクト。 + * @param {object} i_opt + * インスタンス生成と同時にsetOpt関数で設定する値。省略時は、{phl:{power:1}}とみなす。 + * 詳細はsetOpt関数を参照。 + * @example + * //create AD (logical)pheripheral + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var ad=new LPCXpresso1769.Adc(mcu); */ DEV.Adc=function Adc(i_mcu,i_opt) { @@ -1335,6 +1445,7 @@ DEV.Adc.prototype= }, /** * AD0CRのSELフィールドの値を更新するBC + @private */ BCF_setSel:function BCF_setSel(i_bit,i_val,i_db) { @@ -1346,6 +1457,7 @@ DEV.Adc.prototype= }, /** * n番のAD0DRの値を得るBC + @private */ BCF_getAD0DR:function BCF_getAD0DR(i_ch,i_db) { @@ -1356,7 +1468,22 @@ DEV.Adc.prototype= } }, /** - * See API manual. + * ADCペリフェラルに、i_optのオプション値を設定する。 + * @name LPCXpresso1769.Adc#setOpt + * @function + * @param {object as associative array} i_opt + * ADCペリフェラルのコンフィグレーションパラメタである。必要な値を格納した連想配列で指定する。 + * 全ての値を省略することは出来ない。連想配列のメンバは以下の通り。 + *
    {phl:object as associative array}
    + *
      + *
    • phl - LPCXpresso1769.Peripheral#setOpt関数のi_optに渡すパラメタである。
    • + *
    + * @example + * //AD power on/off + * //create AD (logical)pheripheral + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var ad=new LPCXpresso1769.Adc(mcu); + * ad.setOpt(phl:{power:0}); */ setOpt:function setOpt(i_opt) { @@ -1369,7 +1496,23 @@ DEV.Adc.prototype= } }, /** - * see + * AD機能を持つピンを取得する。 + * ピン識別子で指定されるピンをADペリフェラルと結合して、AdcPinを生成する。 + * 関数は、AdcPinオブジェクトのコンストラクタをコールして、AdcPinを生成する。失敗すると、例外をスローする。 + * 生成ルールについての詳細は、AdcPinを参照。 + * @name LPCXpresso1769.Adc#getPin + * @function + * @param {object as ピン識別子} i_pin + * AD機能を割り当てるPINの識別子である。値は、LPCXpresso1769.Pn[m]のメンバ変数である。 + * @param {object as associative array} i_opt + * AdcPinのコンストラクタに渡すオプション値。省略時はundefinedである。詳細はLPCXpresso1769.AdcPinのコンストラクタを参照。 + * @return {object as LPCXpresso1769.AdcPin} + * LPCXpresso1769.AdcPinクラスのオブジェクトである。 + * @example + * //create AdcPin + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var adc=new LPCXpresso1769.Adc(mcu); + * var adpin=adc.getPin(LPCXpresso1769.P0[23]); */ getPin:function getPin(i_pin,i_opt) { @@ -1382,7 +1525,24 @@ DEV.Adc.prototype= } /** - * see API manual. + * LPCXPresso1769.AdcPin (AdcPin)クラスのコンストラクタ。 + * Adcペリフェラルオブジェクトにピン識別子で指定されたピンを関連付けて、AD機能を持つピンを生成する。 + * 関数は、ピン識別子を元に、そのピンがAD機能に接続できるかを調べる。ピンにAD機能を割り当てられない場合、例外が発生する。どのピンにAD機能が割り当てられるかは、MCUのスペックシートを参照すること。 + * ピンがAD機能を持たない場合、例外が発生する。 + * @constructor + * @name LPCXpresso1769.AdcPin + * @param {object as LPCXpresso1769.Adc} i_adc + * インスタンスを結びつけるAdcオブジェクト。 + * @param {object as pin識別子} i_pin + * ピン識別子。指定できるのは、LPCXpresso1796.P?[?]である。 + * @param {object as associative array} i_opt + * setOpt関数のi_optに渡すパラメタである。省略可能。省略時は{pin:{sel:auto}}を設定する。 + * autoは、関数が自動的に決定するPINSELの値である。詳細はsetOpt関数を参照。 + * @example + * /create AD0.0 + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var adc=new LPCXpresso1769.Adc(mcu); + * var adcpin=new LPCXpresso1769.AdcPin(adc,P0[23]); */ DEV.AdcPin=function AdcPin(i_adc,i_pin,i_opt) { @@ -1424,8 +1584,15 @@ DEV.AdcPin.prototype= _adinfo:null, /** * ピンからAD変換した値を得る。 - @return - 12bitのAD変換値 + * @name LPCXpresso1769.AdcPin#getValue + * @function + * @return {int} + * 12bitのAD変換値を返す。値の意味は、UM10360 Chapter 29: LPC17xx Analog-to-Digital Converter (ADC)を参照。 + * @example + * //show value of AD0.0 pin + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var pin=mcu.getPin("AD0.0"); + * alert(pin.getValue()); */ getValue:function getValue() { @@ -1440,8 +1607,17 @@ DEV.AdcPin.prototype= } }, /** - * see API manual - */ + * ADピンにオプション値を設定する。 + * @name LPCXpresso1769.AdcPin#setOpt + * @function + * @param {object as associative array} i_opt + * ADピンのコンフィグレーションパラメタである。必要な値を格納した連想配列で指定する。 + * 全ての値を省略することは出来ない。連想配列のメンバは以下の通り。 + *
    {pin:object as associative array}
    + *
      + *
    • pin - LPCXpresso1769.Pin#setOpt関数のi_optに渡すパラメタである。
    • + *
    + */ setOpt:function setOpt(i_opt) { try{ @@ -1465,6 +1641,10 @@ DEV.AdcPin.prototype= }()); +/** + * @fileOverview LPCXpresso1769の、GPIOペリフェラル、ピンの制御クラスを定義する。 + */ + (function(){ var DEV=LPCXpresso1769; var BCF=DEV._BCF; @@ -1473,7 +1653,19 @@ var isUndef=MiMicLib.isUndef; var cloneAssoc=MiMicLib.cloneAssoc; /** - * このクラスは、GPIOペリフェラルを管理します。 + * LPCXPresso1769.Gpio (Gpio)クラスのコンストラクタ。 + * MCUに関連付けしたGpioペリフェラルを生成する。 + * GPIOペリフェラルは、物理的には存在しない仮想ペリフェラルである。GPIOを集中管理するために定義している。 + * @name LPCXpresso1769.Gpio + * @constructor + * @param {object as LPCXpresso1769.Mcu} i_mcu + * インスタンスを結びつけるMcuオブジェクト。 + * @param {oject as associative array} i_opt + * 常に無視する。省略すること。 + * @example + * //create GPIO (logical)pheripheral + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var gpio=new LPCXpresso1769.Gpio(mcu); */ DEV.Gpio=function Gpio(i_mcu,i_opt) { @@ -1492,7 +1684,8 @@ DEV.Gpio.prototype={ _FIO_MASK:[0x2009C010,0x2009C030,0x2009C050,0x2009C070,0x2009C090], _mcu:null, /** - * ピン用のBCF生成関数 + * ピン用のBCF生成関数 + * @private */ BCF_setDir:function BCF_setDir(i_ch,i_bit,i_dir,i_db) { @@ -1504,14 +1697,16 @@ DEV.Gpio.prototype={ }, BCF_setValue:function BCF_setValue(i_ch,i_bit,i_val,i_db) { - /*GPIOレジスタにセットするBC + /** + * GPIOレジスタにセットするBC SGET #0;//GPIOの値レジスタアドレス SGET #1;//GPIOのMASKレジスタアドレス SGET #2;//MASKレジスタの値 MPUT #2,#1;//MASK設定 LD #2,0xffffffff MPUT #2,#0;//値セット - */ + * @private + */ try{ if(i_val){ i_db.push(this._FIO_SET[i_ch],this._FIO_MASK[i_ch],~(0x00000001<{dir:int,pin:object as associative array} + *
      + *
    • dir - ピンのIN/OUTを指定する1bitの値。1=out,0=in
    • + *
    • pin - LPCXpresso1769.Pin#setOpt関数のi_optに渡すパラメタである。
    • + *
    + * @example + * //set P0[0] to output GPIO and mode=repeter and open drain=1 + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var gpiopin=mcu.getPin(LPCXpresso1769.P0[0],"GPIO"); + * gpiopin.setOpt({dir:1,pin:{mode:1,od:0}}); + * gpiopin.setValue(1); + */ setOpt:function setOpt(i_opt) { try{ @@ -1619,7 +1867,18 @@ DEV.GpioPin.prototype= } }, /** - * @see API manual. + * ピンの出力状態を設定する。 + * この関数は、directionを1(output)に設定したピンで使用できる。inputに設定したピンには使用できない。 + * @name LPCXpresso1769.GpioPin#setValue + * @function + * @param {int} i_val + * 1ビットの出力値。 + * @example + * //set P0[0] pin to “on”. If LED was connected pin it will turn on. + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var gpiopin=mcu.getPin(LPCXpresso1769.P0[0],"GPIO"); + * gpiopin.setOpt({dir:1,pin:{mode:1,od:0}}); + * gpiopin.setValue(1); */ setValue:function setValue(i_val) { @@ -1633,7 +1892,18 @@ DEV.GpioPin.prototype= } }, /** - * @see API manual. + * ピンの入力状態を1/0で返す。 + * この関数は、directionを0(input)に設定したピンで使用できる。outputに設定したピンには使用できない。 + * @function + * @return {int} + * 1,又は0 + * @name LPCXpresso1769.GpioPin#getValue + * @example + * //show P0[0] value + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var gpiopin=mcu.getPin(LPCXpresso1769.P0[0],"GPIO"); + * gpiopin.setOpt({dir:0,pin:{mode:0,od:0}}); + * alert(gpiopin.getValue()); */ getValue:function getValue() { @@ -1649,12 +1919,21 @@ DEV.GpioPin.prototype= } }, /** - * ビットパターンを出力します。 - @param i_val_array - Array[int]:ビットパターンです。[0,1,0,1]の場合、0,1,0,1の順に、パターンを出力します。 - 最大数は20です。 - @remark - 最適化対象 + * 直列化されたビットパターンを出力する。 + * 単純なビットパターンをピンに出力するときに使用する。 + * 出力速度はMCU依存であり、コントロールできない。 + * この関数は、directionを1(output)に設定したピンで使用できる。inputに設定したピンには使用できない。 + * @name LPCXpresso1769.GpioPin#outPatt + * @function + * @param {array[int]} i_val_array + * ビットパターンの配列。1ビットの値(0 or 1)の配列を指定する。最大数は20である。 + * [0,1,0,1]の場合、0,1,0,1の順に、パターンを出力します。 + * @example + * //output 0101010100001010 to P0[0] + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var gpiopin=mcu.getPin(LPCXpresso1769.P0[0],"GPIO"); + * gpiopin.setOpt({dir:1,pin:{mode:1,od:0}}); + * gpiopin.outPatt([0,1,0,1,0,1,0,1,0,0,0,0,1,0,1,0]); */ outPatt:function outPatt(i_val_array) { @@ -1674,11 +1953,7 @@ DEV.GpioPin.prototype= }()); /** - * LPCXPresso1769のPWMクラスを定義します。 - class Pwm - PWMペリフェラルを操作するクラス - class PwmPin - PWMピンを操作するクラス + * @fileOverview LPCXpresso1769のPwmペリフェラル、ピンを制御するクラスを定義する。 */ (function(){ var DEV=LPCXpresso1769; @@ -1690,7 +1965,21 @@ var cloneAssoc=MiMicLib.cloneAssoc; /** - * see API manual + * LPCXPresso1769.Pwm (Pwm)クラスのコンストラクタ。 + * MCUに関連付けしたPwmペリフェラルを生成する。 + * Pwmクラスは、PWM1ペリフェラルを管理して、PWMペリフェラル全体の設定を管理する。 + * Pwmの分解能は、無指定の場合25MHz(1/4クロック)設定である。関数は、PWMのマッチレジスタ以外に、PCR,CTCR,TCRを同時に初期化する。 + * @name LPCXpresso1769.Pwm + * @constructor + * @param {object as LPCXpresso1769.Mcu} i_mcu + * インスタンスを結びつけるMcuオブジェクト。 + * @param {aobject as associative array} i_opt + * インスタンス生成と同時にsetOpt関数でセットする値を指定する。省略時は、{freq:100,phl:{power:1,clock:0}}である。 + * 詳細は、setOpt関数を参照。 + * @example + * //create PWM pheripheral + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var pwm=new LPCXpresso1769.Pwm(mcu,""); */ DEV.Pwm=function Pwm(i_mcu,i_opt) { @@ -1750,7 +2039,7 @@ DEV.Pwm.prototype= _mcu:null, /** - * {phl:{object},(freq:int)} + * @private */ BCF_setOpt:function BCF_setOpt(i_opt,i_db) { @@ -1788,6 +2077,7 @@ DEV.Pwm.prototype= /** * MRnに値を設定するBC + @private */ BCF_setMRn:function BCF_setMRn(i_ch,i_val,i_db) { @@ -1808,6 +2098,7 @@ DEV.Pwm.prototype= /** * PCRに値を設定するBC i_ch=1の場合、エッジモードは無視します。 + @private @param i_ch 1-6 @param i_edge @@ -1835,7 +2126,23 @@ DEV.Pwm.prototype= } }, /** - * See API manual. + * Pwmペリフェラルに値を設定する。 + * 設定する値は、全てのPWMチャンネル(PIN)に共通な項目である。 + * @name LPCXpresso1769.Pwm#setOpt + * @function + * @param {object as associative array} i_opt + * GPIOピンのコンフィグレーションパラメタである。必要な値を格納した連想配列で指定する。 + * 全ての値を省略することは出来ない。連想配列のメンバは以下の通り。 + *
    {freq:int,phl:object as associative array}
    + *
      + *
    • freq - PWMの基本周波数(Hz)である。この値は、全てのPWMチャンネルで共通である。
    • + *
    • phl - ペリフェラルの共通パラメタである。LPCXpresso1769.Peripheral.setOpt関数のi_optに渡すパラメタである。詳細はLPCXpresso1769.Peripheral.setOptを参照。
    • + *
    + * @example + * //create PWM (logical)peripheral + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var pwm=new LPCXpresso1769.Pwm(mcu); + * pwm.setOpt({freq:1000}); */ setOpt:function setOpt(i_opt) { @@ -1848,7 +2155,23 @@ DEV.Pwm.prototype= } }, /** - * see API manual + * PWM機能を持つピンを取得する。 + * ピン識別子で指定されるピンをPWMペリフェラルと結合して、PwmPinを生成する。 + * 関数は、PwmPinオブジェクトのコンストラクタをコールして、PwmPinを生成する。失敗すると、例外をスローする。 + * 生成ルールについての詳細は、PwmPinを参照。 + * @name LPCXpresso1769.Pwm#getPin + * @function + * @param {object as ピン識別子} i_pin + * PWM機能を割り当てるPINの識別子である。 + * @param {object as associative array} i_opt + * PemPinのコンストラクタに渡すオプション値。省略時は{duty:0,enable:1,pin:{sel:auto}}である。 + * @return {object as LPCXpresso1769.PwmPin} + * LPCXpresso1769.PwmPinクラスのオブジェクトである。 + * @example + * //create 100hz d=0.5 pwm + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var pwm=new LPCXpresso1769.Pwm(mcu); + * var pwmpin=pwm.getPin(LPCXpresso1769.P2[0],{duty:0.5}); */ getPin:function getPin(i_pin,i_opt) { @@ -1861,14 +2184,24 @@ DEV.Pwm.prototype= } /** - * このクラスは、PwmペリフェラルとPwm識別子から、シングルエッジPwmピンを構成します。 - @param i_PWM - Pwmペリフェラル - @param i_pwm - PWMを構成するピン番号 - @param i_opt - ピンオプション。各値は省略できます。 -{duty:100,enable:1,pin{sel:auto,mode:undefined,od:undefined}} + * PwmペリフェラルとPin識別子から、シングルエッジPwmピンを構成する。 + * Pwmペリフェラルオブジェクトにピン識別子で指定されたピンを関連付けて、PWM機能を持つピンを生成する。 + * 関数は、ピン識別子を元に、そのピンがPWM機能に接続できるかを調べる。ピンにPWM機能を割り当てられない場合、例外が発生する。どのピンにPWM機能が割り当てられるかは、MCUのスペックシートを参照すること。 + * ピンがPWM機能を持たない場合、例外が発生する。 + * @constructor + * @name LPCXpresso1769.PwmPin + * @param {object as LPCXpresso1769.Pwm} i_pwm + * インスタンスを結びつけるAdcオブジェクト。 + * @param {object as pin識別子} i_pin + * ピン識別子。指定できるのは、LPCXpresso1796.P?[?]である。 + * @param {object as associative array} i_opt + * setOpt関数のi_optに渡すパラメタである。省略可能。省略時は{duty:100,enable:1,pin{sel:auto}}を設定する。 + * autoは、関数が自動的に決定するPINSELの値である。詳細はsetOpt関数を参照。 + * @example + * //create PWM1.0 + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var pwm=new LPCXpresso1769.Pwm(mcu,{freq:100}); + * var pwmpin=new LPCXpresso1769.PwmPin(pwm,P2[0]); */ DEV.PwmPin=function PwmPin(i_pwm,i_pin,i_opt) { @@ -1913,7 +2246,9 @@ DEV.PwmPin.prototype= _pin:null, _pwminfo:null, /** - * @param i_opt + * + @private + @param i_opt シングルエッジPWMのオプション値を設定する。 {pin:{ピン初期化パラメタ},enable:有効値,duty:デューティ比}} */ @@ -1940,6 +2275,24 @@ DEV.PwmPin.prototype= throw new MiMicException(e); } }, + /** + * PWMピンにオプション値を設定する。 + * @name LPCXpresso1769.PwmPin#setOpt + * @function + * @param {object as associative array} i_opt + * PWMピンのコンフィグレーションパラメタである。必要な値を格納した連想配列で指定する。 + * 全ての値を省略することは出来ない。連想配列のメンバは以下の通り。 + *
    {pin:{associative array},enable:int,duty:double}
    + *
      + *
    • pin - LPCXpresso1769.Pin#setOpt関数のi_optに渡すパラメタである。
    • + *
    • enable - PWMの有効/無効を切り替える。1で有効。
    • + *
    • duty - デューティ比である。0.0<=n<=1.0のdouble値を指定する。
    • + *
    + * @example + * var mcu=new LPCXpresso1769.Mcu("192.168.128.39",true); + * var pwm=mcu.getPeripheral("PWM",{freq:100}); + * pwmpin=pwm.getPin(LPCXpresso1769.P2[0]); + */ setOpt:function setOpt(i_opt) { try{ @@ -1950,10 +2303,17 @@ DEV.PwmPin.prototype= throw new MiMicException(e); } }, - /** - * デューティ比を設定する。 - @return + * PWMのデューティ比を変更する。 + * @name LPCXpresso1769.PwmPin#setDuty + * @function + * @param {double} i_duty + * デューティ比である。0.0<=n<=1.0のdouble値を指定する。 + * @example + * varmcu=new LPCXpresso1769.Mcu("192.168.128.39",true); + * var pwm=mcu.getPeripheral("PWM",{freq:100}); + * pwmpin=pwm.getPin(LPCXpresso1769.P2[0]); + * pwmpin.setDuty(0.5); */ setDuty:function setDuty(i_duty) { diff --git a/misc/MiMicVM/api.js/LPCXPresso1769.Gpio.js b/misc/MiMicVM/api.js/LPCXPresso1769.Gpio.js index 5f46e5c..a699220 100644 --- a/misc/MiMicVM/api.js/LPCXPresso1769.Gpio.js +++ b/misc/MiMicVM/api.js/LPCXPresso1769.Gpio.js @@ -1,3 +1,7 @@ +/** + * @fileOverview LPCXpresso1769の、GPIOペリフェラル、ピンの制御クラスを定義する。 + */ + (function(){ var DEV=LPCXpresso1769; var BCF=DEV._BCF; @@ -6,7 +10,19 @@ var isUndef=MiMicLib.isUndef; var cloneAssoc=MiMicLib.cloneAssoc; /** - * このクラスは、GPIOペリフェラルを管理します。 + * LPCXPresso1769.Gpio (Gpio)クラスのコンストラクタ。 + * MCUに関連付けしたGpioペリフェラルを生成する。 + * GPIOペリフェラルは、物理的には存在しない仮想ペリフェラルである。GPIOを集中管理するために定義している。 + * @name LPCXpresso1769.Gpio + * @constructor + * @param {object as LPCXpresso1769.Mcu} i_mcu + * インスタンスを結びつけるMcuオブジェクト。 + * @param {oject as associative array} i_opt + * 常に無視する。省略すること。 + * @example + * //create GPIO (logical)pheripheral + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var gpio=new LPCXpresso1769.Gpio(mcu); */ DEV.Gpio=function Gpio(i_mcu,i_opt) { @@ -25,7 +41,8 @@ DEV.Gpio.prototype={ _FIO_MASK:[0x2009C010,0x2009C030,0x2009C050,0x2009C070,0x2009C090], _mcu:null, /** - * ピン用のBCF生成関数 + * ピン用のBCF生成関数 + * @private */ BCF_setDir:function BCF_setDir(i_ch,i_bit,i_dir,i_db) { @@ -37,14 +54,16 @@ DEV.Gpio.prototype={ }, BCF_setValue:function BCF_setValue(i_ch,i_bit,i_val,i_db) { - /*GPIOレジスタにセットするBC + /** + * GPIOレジスタにセットするBC SGET #0;//GPIOの値レジスタアドレス SGET #1;//GPIOのMASKレジスタアドレス SGET #2;//MASKレジスタの値 MPUT #2,#1;//MASK設定 LD #2,0xffffffff MPUT #2,#0;//値セット - */ + * @private + */ try{ if(i_val){ i_db.push(this._FIO_SET[i_ch],this._FIO_MASK[i_ch],~(0x00000001<{dir:int,pin:object as associative array} + *
      + *
    • dir - ピンのIN/OUTを指定する1bitの値。1=out,0=in
    • + *
    • pin - LPCXpresso1769.Pin#setOpt関数のi_optに渡すパラメタである。
    • + *
    + * @example + * //set P0[0] to output GPIO and mode=repeter and open drain=1 + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var gpiopin=mcu.getPin(LPCXpresso1769.P0[0],"GPIO"); + * gpiopin.setOpt({dir:1,pin:{mode:1,od:0}}); + * gpiopin.setValue(1); + */ setOpt:function setOpt(i_opt) { try{ @@ -152,7 +224,18 @@ DEV.GpioPin.prototype= } }, /** - * @see API manual. + * ピンの出力状態を設定する。 + * この関数は、directionを1(output)に設定したピンで使用できる。inputに設定したピンには使用できない。 + * @name LPCXpresso1769.GpioPin#setValue + * @function + * @param {int} i_val + * 1ビットの出力値。 + * @example + * //set P0[0] pin to “on”. If LED was connected pin it will turn on. + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var gpiopin=mcu.getPin(LPCXpresso1769.P0[0],"GPIO"); + * gpiopin.setOpt({dir:1,pin:{mode:1,od:0}}); + * gpiopin.setValue(1); */ setValue:function setValue(i_val) { @@ -166,7 +249,18 @@ DEV.GpioPin.prototype= } }, /** - * @see API manual. + * ピンの入力状態を1/0で返す。 + * この関数は、directionを0(input)に設定したピンで使用できる。outputに設定したピンには使用できない。 + * @function + * @return {int} + * 1,又は0 + * @name LPCXpresso1769.GpioPin#getValue + * @example + * //show P0[0] value + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var gpiopin=mcu.getPin(LPCXpresso1769.P0[0],"GPIO"); + * gpiopin.setOpt({dir:0,pin:{mode:0,od:0}}); + * alert(gpiopin.getValue()); */ getValue:function getValue() { @@ -182,12 +276,21 @@ DEV.GpioPin.prototype= } }, /** - * ビットパターンを出力します。 - @param i_val_array - Array[int]:ビットパターンです。[0,1,0,1]の場合、0,1,0,1の順に、パターンを出力します。 - 最大数は20です。 - @remark - 最適化対象 + * 直列化されたビットパターンを出力する。 + * 単純なビットパターンをピンに出力するときに使用する。 + * 出力速度はMCU依存であり、コントロールできない。 + * この関数は、directionを1(output)に設定したピンで使用できる。inputに設定したピンには使用できない。 + * @name LPCXpresso1769.GpioPin#outPatt + * @function + * @param {array[int]} i_val_array + * ビットパターンの配列。1ビットの値(0 or 1)の配列を指定する。最大数は20である。 + * [0,1,0,1]の場合、0,1,0,1の順に、パターンを出力します。 + * @example + * //output 0101010100001010 to P0[0] + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var gpiopin=mcu.getPin(LPCXpresso1769.P0[0],"GPIO"); + * gpiopin.setOpt({dir:1,pin:{mode:1,od:0}}); + * gpiopin.outPatt([0,1,0,1,0,1,0,1,0,0,0,0,1,0,1,0]); */ outPatt:function outPatt(i_val_array) { diff --git a/misc/MiMicVM/api.js/LPCXPresso1769.Pin.js b/misc/MiMicVM/api.js/LPCXPresso1769.Pin.js index 2641dec..75673c2 100644 --- a/misc/MiMicVM/api.js/LPCXPresso1769.Pin.js +++ b/misc/MiMicVM/api.js/LPCXPresso1769.Pin.js @@ -1,3 +1,7 @@ +/** + * @fileOverview LPCXpresso1769の物理ピンを制御するクラスを定義する。 + */ + (function(){ var DEV=LPCXpresso1769; var BCF=DEV._BCF; @@ -5,7 +9,25 @@ var EE=DEV._EE; var isUndef=MiMicLib.isUndef; /** - * @see API manual. + * LPCXPresso1769.Pin (Pin)クラスのコンストラクタ。 + * ピン識別子を元に、MCUに関連付けらしたPinインスタンスを生成する。 + * Pinクラスは、MCUの物理ピン単位に、操作インタフェイスを定義する。 + * PINSEL,PINMODE,PINMODE_ODレジスタを管理する。 + * @name LPCXpresso1769.Pin + * @constructor + * @param {object as LPCXpresso1769.Mcu} i_mcu + * インスタンスを結びつけるMcuオブジェクト。 + * @param {object as ピン識別子} i_pin + * 生成するピンのピン識別子。 + * @param {object as associative array} i_opt + * インスタンス生成と同時にsetOpt関数で設定する値。省略時は無視する。 + * 詳細はsetOpt関数を参照。 + * このクラスは、上位クラスへピンの基本的な操作機能を提供する為のものであり、ユーザが直接使用することは(あまり)ない。 + * この関数は、MiMicの管理しているピン(ENET_?)も操作することが出来るが、操作してしまうとMiMicRemoteMcuとのコネクションが破壊されるので、注意すること。 + * @example + * //create pin instance at P0[0] + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var pin=new LPCXpresso1769.Pin(mcu,LPCXpresso.P0[0]); */ DEV.Pin=function Pin(i_mcu,i_pin,i_opt) { @@ -34,6 +56,7 @@ DEV.Pin.prototype= /** * setPinのBCを生成します。 + @private @param i_opt setOptBcを参照してください。 @return @@ -70,7 +93,25 @@ DEV.Pin.prototype= } }, /** - * @see API manual + * ピンにオプションパラメータをセットする。 + * 関数は、物理ピンのレジスタに、i_optで与えられる値を設定する。 + * 関数は、レジスタの位置に合わせてパラメータ値を自動的にシフトする。 + * @name LPCXpresso1769.Pin#setOpt + * @function + * @param {object as associative array} i_opt + * ピンコンフィグレーションのパラメタである。必要な値を格納した連想配列で指定する。 + * 全ての値を省略することは出来ない。連想配列のメンバは以下の通り。 + *
    {sel,mode,od}
    + *
      + *
    • sel:int - 2bitのint値。 PINSEL? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。
    • + *
    • mode:int - 1bitのint値。PINMODE? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。
    • + *
    • od:int - 1bitのbit値 PINMODE_OD? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。
    • + *
    + * @example + * //set GPIO,mode=1,open drain=0 + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var pin=new LPCXpresso1769.Pin(mcu,LPCXpresso.P2[3]); + * pin.setOpt({sel:0,mode:1,od:0}); */ setOpt:function setOpt(i_opt) { diff --git a/misc/MiMicVM/api.js/LPCXpresso1769.Adc.js b/misc/MiMicVM/api.js/LPCXpresso1769.Adc.js index dafbf26..20b41b2 100644 --- a/misc/MiMicVM/api.js/LPCXpresso1769.Adc.js +++ b/misc/MiMicVM/api.js/LPCXpresso1769.Adc.js @@ -1,9 +1,5 @@ /** - * LPCXPresso1769のADCクラスを定義します。 - class Adc - ADCペリフェラルを操作するクラス - class AdcPin - ADCピンを操作するクラス + * @fileOverview LPCXpresso1769の、ADコンバータペリフェラル、ピンの制御クラスを定義する。 */ (function(){ var DEV=LPCXpresso1769; @@ -14,7 +10,22 @@ var isUndef=MiMicLib.isUndef; /** - * see API manual. + * LPCXPresso1769.Adc (Adc)クラスのコンストラクタ。 + * MCUに関連付けしたADペリフェラルを生成する。 + * ADペリフェラルは、MCUのADCペリフェラル全体を管理する。 + * 関数は、ADCRレジスタのPDN,BURSTを1にセットする。 + * ADCペリフェラルはバーストモードで動作し、サンプリングレートは200KHz固定である。取得タイミングの制御はハードウェア依存である。 + * @constructor + * @name LPCXpresso1769.Adc + * @param {object as LPCXpresso1769.Mcu} i_mcu + * インスタンスを結びつけるMcuオブジェクト。 + * @param {object} i_opt + * インスタンス生成と同時にsetOpt関数で設定する値。省略時は、{phl:{power:1}}とみなす。 + * 詳細はsetOpt関数を参照。 + * @example + * //create AD (logical)pheripheral + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var ad=new LPCXpresso1769.Adc(mcu); */ DEV.Adc=function Adc(i_mcu,i_opt) { @@ -68,6 +79,7 @@ DEV.Adc.prototype= }, /** * AD0CRのSELフィールドの値を更新するBC + @private */ BCF_setSel:function BCF_setSel(i_bit,i_val,i_db) { @@ -79,6 +91,7 @@ DEV.Adc.prototype= }, /** * n番のAD0DRの値を得るBC + @private */ BCF_getAD0DR:function BCF_getAD0DR(i_ch,i_db) { @@ -89,7 +102,22 @@ DEV.Adc.prototype= } }, /** - * See API manual. + * ADCペリフェラルに、i_optのオプション値を設定する。 + * @name LPCXpresso1769.Adc#setOpt + * @function + * @param {object as associative array} i_opt + * ADCペリフェラルのコンフィグレーションパラメタである。必要な値を格納した連想配列で指定する。 + * 全ての値を省略することは出来ない。連想配列のメンバは以下の通り。 + *
    {phl:object as associative array}
    + *
      + *
    • phl - LPCXpresso1769.Peripheral#setOpt関数のi_optに渡すパラメタである。
    • + *
    + * @example + * //AD power on/off + * //create AD (logical)pheripheral + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var ad=new LPCXpresso1769.Adc(mcu); + * ad.setOpt(phl:{power:0}); */ setOpt:function setOpt(i_opt) { @@ -102,7 +130,23 @@ DEV.Adc.prototype= } }, /** - * see + * AD機能を持つピンを取得する。 + * ピン識別子で指定されるピンをADペリフェラルと結合して、AdcPinを生成する。 + * 関数は、AdcPinオブジェクトのコンストラクタをコールして、AdcPinを生成する。失敗すると、例外をスローする。 + * 生成ルールについての詳細は、AdcPinを参照。 + * @name LPCXpresso1769.Adc#getPin + * @function + * @param {object as ピン識別子} i_pin + * AD機能を割り当てるPINの識別子である。値は、LPCXpresso1769.Pn[m]のメンバ変数である。 + * @param {object as associative array} i_opt + * AdcPinのコンストラクタに渡すオプション値。省略時はundefinedである。詳細はLPCXpresso1769.AdcPinのコンストラクタを参照。 + * @return {object as LPCXpresso1769.AdcPin} + * LPCXpresso1769.AdcPinクラスのオブジェクトである。 + * @example + * //create AdcPin + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var adc=new LPCXpresso1769.Adc(mcu); + * var adpin=adc.getPin(LPCXpresso1769.P0[23]); */ getPin:function getPin(i_pin,i_opt) { @@ -115,7 +159,24 @@ DEV.Adc.prototype= } /** - * see API manual. + * LPCXPresso1769.AdcPin (AdcPin)クラスのコンストラクタ。 + * Adcペリフェラルオブジェクトにピン識別子で指定されたピンを関連付けて、AD機能を持つピンを生成する。 + * 関数は、ピン識別子を元に、そのピンがAD機能に接続できるかを調べる。ピンにAD機能を割り当てられない場合、例外が発生する。どのピンにAD機能が割り当てられるかは、MCUのスペックシートを参照すること。 + * ピンがAD機能を持たない場合、例外が発生する。 + * @constructor + * @name LPCXpresso1769.AdcPin + * @param {object as LPCXpresso1769.Adc} i_adc + * インスタンスを結びつけるAdcオブジェクト。 + * @param {object as pin識別子} i_pin + * ピン識別子。指定できるのは、LPCXpresso1796.P?[?]である。 + * @param {object as associative array} i_opt + * setOpt関数のi_optに渡すパラメタである。省略可能。省略時は{pin:{sel:auto}}を設定する。 + * autoは、関数が自動的に決定するPINSELの値である。詳細はsetOpt関数を参照。 + * @example + * /create AD0.0 + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var adc=new LPCXpresso1769.Adc(mcu); + * var adcpin=new LPCXpresso1769.AdcPin(adc,P0[23]); */ DEV.AdcPin=function AdcPin(i_adc,i_pin,i_opt) { @@ -157,8 +218,15 @@ DEV.AdcPin.prototype= _adinfo:null, /** * ピンからAD変換した値を得る。 - @return - 12bitのAD変換値 + * @name LPCXpresso1769.AdcPin#getValue + * @function + * @return {int} + * 12bitのAD変換値を返す。値の意味は、UM10360 Chapter 29: LPC17xx Analog-to-Digital Converter (ADC)を参照。 + * @example + * //show value of AD0.0 pin + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var pin=mcu.getPin("AD0.0"); + * alert(pin.getValue()); */ getValue:function getValue() { @@ -173,8 +241,17 @@ DEV.AdcPin.prototype= } }, /** - * see API manual - */ + * ADピンにオプション値を設定する。 + * @name LPCXpresso1769.AdcPin#setOpt + * @function + * @param {object as associative array} i_opt + * ADピンのコンフィグレーションパラメタである。必要な値を格納した連想配列で指定する。 + * 全ての値を省略することは出来ない。連想配列のメンバは以下の通り。 + *
    {pin:object as associative array}
    + *
      + *
    • pin - LPCXpresso1769.Pin#setOpt関数のi_optに渡すパラメタである。
    • + *
    + */ setOpt:function setOpt(i_opt) { try{ diff --git a/misc/MiMicVM/api.js/LPCXpresso1769.Mcu.js b/misc/MiMicVM/api.js/LPCXpresso1769.Mcu.js index 4551b83..25e2295 100644 --- a/misc/MiMicVM/api.js/LPCXpresso1769.Mcu.js +++ b/misc/MiMicVM/api.js/LPCXpresso1769.Mcu.js @@ -1,3 +1,6 @@ +/** + * @fileOverview LPCXpresso1769のMCU制御クラスを定義する。 + */ (function(){ /** @ignore */ var DEV=LPCXpresso1769; diff --git a/misc/MiMicVM/api.js/LPCXpresso1769.Memory.js b/misc/MiMicVM/api.js/LPCXpresso1769.Memory.js index 55acf78..b5cccbd 100644 --- a/misc/MiMicVM/api.js/LPCXpresso1769.Memory.js +++ b/misc/MiMicVM/api.js/LPCXpresso1769.Memory.js @@ -1,6 +1,7 @@ /** - * LPCXPressoのメモリアクセサを定義します。 + * @fileOverview LPCXpresso1769のメモリアクセスクラスを定義する。 */ + (function(){ var DEV=LPCXpresso1769; var BCF=DEV._BCF; @@ -53,7 +54,7 @@ DEV.Memory.prototype= * コンストラクタで指定したアドレスからのオフセット位置を指定する。4バイト境界でなければならない。 * @param {int} i_size * 取得するバイト数を指定する。4バイト単位でなければならない。 - * @return {int | Array[int]} + * @return {int or Array[int]} * 取得する値の個数は、i_size/4個である。個数により、戻り値の型が異なるので注意すること。 * @example * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); @@ -67,7 +68,7 @@ DEV.Memory.prototype= * @function * @param {array[int]} i_offsets * オフセットアドレスの配列。それぞれ4バイト境界でなければならない。 - * @return {int | Array[int]} + * @return {int or Array[int]} * 返却される値の個数は、i_offsetの長さと同じになる。個数により、戻り値の型が異なるので注意すること。 * @example * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); @@ -82,7 +83,7 @@ DEV.Memory.prototype= * @function * @param ... * 詳細は、read32^nを参照。 - * @return {int | Array[int]} + * @return {int or Array[int]} * 返却値の数により、型が異なる。1個の場合はint値、複数の場合はint型の配列である。 */ read32:function read32(/*arguments*/) diff --git a/misc/MiMicVM/api.js/LPCXpresso1769.Peripheral.js b/misc/MiMicVM/api.js/LPCXpresso1769.Peripheral.js index f5f94a2..a548702 100644 --- a/misc/MiMicVM/api.js/LPCXpresso1769.Peripheral.js +++ b/misc/MiMicVM/api.js/LPCXpresso1769.Peripheral.js @@ -1,10 +1,31 @@ +/** + * @fileOverview LPCXpresso1769の物理ペリフェラルを制御するクラスを定義する。 + */ (function(){ var DEV=LPCXpresso1769; var BCF=DEV._BCF; var EE=DEV._EE; var isUndef=MiMicLib.isUndef; /** - * @see API manual + * LPCXPresso1769.Peripheral (Peripheral)クラスのコンストラクタ。 + * ペリフェラル識別子を元に、MCUに関連付けしたPeripheral インスタンスを生成する。 + * Peripheralクラスは、物理Peripheral(主に電源/クロックブロック単位)単位に操作インタフェイスを定義する。 + * PCLKSEL,PCONPレジスタを管理する。 + * このクラスは、抽象ペリフェラルクラスへ物理ペリフェラルの基本的な操作機能を提供する為のものであり、ユーザが直接使用することは(あまり)ない。 + * 関数はMiMicの管理しているペリフェラル(ENET)も操作することが出来るが、操作してしまうとMiMicRemoteMcuとのコネクションが破壊されるので、注意すること。 + * @name LPCXpresso1769.Peripheral + * @constructor + * @param {object as LPCXpresso1769.Mcu} i_mcu + * インスタンスを結びつけるMcuオブジェクト。 + * @param {object as ペリフェラル識別子} i_phl + * 生成するペリフェラルのペリフェラル識別子。この値は、LPCXpresso1769.PHLの要素である。 + * @param {object as associative array} i_opt + * インスタンス生成と同時にsetOpt関数で設定する値。省略時は無視する。 + * 詳細はsetOpt関数を参照。 + * @example + * //create GPIO peripheral + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var phl=new LPCXpresso1769.Pheripheral(mcu,LPCXpresso.PHL.GPIO); */ DEV.Peripheral=function(i_mcu,i_phl,i_opt) { @@ -32,7 +53,8 @@ DEV.Peripheral.prototype= pclk:0 }, /** - * BCフラグメントを生成して、_cacheを更新します。 + * BCフラグメントを生成して、_cacheを更新します。 + * @private */ BCF_setOpt:function BCF_setOpt(i_opt,i_db) { @@ -61,7 +83,27 @@ DEV.Peripheral.prototype= } }, /** - * @see API manual + * ペリフェラルにオプションパラメータをセットする。 + * 関数は、物理ペリフェラルのレジスタに、i_optで与えられる値を設定する。 + * 関数は、レジスタの位置に合わせてパラメータ値を自動的にシフトする。 + * @name LPCXpresso1769.Peripheral#setOpt + * @function + * @param {object} i_opt + * ペリフェラルピンコンフィグレーションのパラメタである。必要な値を格納した連想配列で指定する。 + * 全ての値を省略することは出来ない。連想配列のメンバは以下の通り。 + *
    {power:int,clock:int}
    + *
      + *
    • power:int - + * 1bitのint値。 PCONP? レジスタに指定する値。Chapter 4: LPC17xx Clocking and power controlを参照。 + *
    • + *
    • clock:int - + * 2bitのint値。PCLKSEL? レジスタに指定する値。Chapter 4: LPC17xx Clocking and power controlを参照。 + *
    • + * @example + * //set DAC power on + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var phl=new LPCXpresso1769.Peripheral(mcu,LPCXpresso.PHL.ADC); + * phl.setOpt({power:1}); */ setOpt:function setOpt(i_opt) { @@ -80,9 +122,17 @@ DEV.Peripheral.prototype= return; }, /** - * ペリフェラルのクロックを返す。 - Table 42. Peripheral Clock Selection register bit valuesの変換テーブルです。 - クロックは、最後のキャッシュ値から計算します。 + * ペリフェラルのクロックを[Hz]単位で返す。 + * クロックは、Table 42. Peripheral Clock Selection register bit valuesと、MCUのクロック(LPCXpresso1769.Mcuの提供する値)から計算する。 + * 動作中のPLL0の変更には対応していない。注意すること。 + * @name LPCXpresso1769.Peripheral#getPCLK + * @function + * @return {int} + * Hz単位のペリフェラルクロック + * @example + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var phl=new LPCXpresso1769.Peripheral(mcu,LPCXpresso.PHL.PWM); + * alert(phl.getPCLK()); */ getPCLK:function getPCLK() { diff --git a/misc/MiMicVM/api.js/LPCXpresso1769.Pwm.js b/misc/MiMicVM/api.js/LPCXpresso1769.Pwm.js index aff5feb..da5a04b 100644 --- a/misc/MiMicVM/api.js/LPCXpresso1769.Pwm.js +++ b/misc/MiMicVM/api.js/LPCXpresso1769.Pwm.js @@ -1,9 +1,5 @@ /** - * LPCXPresso1769のPWMクラスを定義します。 - class Pwm - PWMペリフェラルを操作するクラス - class PwmPin - PWMピンを操作するクラス + * @fileOverview LPCXpresso1769のPwmペリフェラル、ピンを制御するクラスを定義する。 */ (function(){ var DEV=LPCXpresso1769; @@ -15,7 +11,21 @@ var cloneAssoc=MiMicLib.cloneAssoc; /** - * see API manual + * LPCXPresso1769.Pwm (Pwm)クラスのコンストラクタ。 + * MCUに関連付けしたPwmペリフェラルを生成する。 + * Pwmクラスは、PWM1ペリフェラルを管理して、PWMペリフェラル全体の設定を管理する。 + * Pwmの分解能は、無指定の場合25MHz(1/4クロック)設定である。関数は、PWMのマッチレジスタ以外に、PCR,CTCR,TCRを同時に初期化する。 + * @name LPCXpresso1769.Pwm + * @constructor + * @param {object as LPCXpresso1769.Mcu} i_mcu + * インスタンスを結びつけるMcuオブジェクト。 + * @param {aobject as associative array} i_opt + * インスタンス生成と同時にsetOpt関数でセットする値を指定する。省略時は、{freq:100,phl:{power:1,clock:0}}である。 + * 詳細は、setOpt関数を参照。 + * @example + * //create PWM pheripheral + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var pwm=new LPCXpresso1769.Pwm(mcu,""); */ DEV.Pwm=function Pwm(i_mcu,i_opt) { @@ -75,7 +85,7 @@ DEV.Pwm.prototype= _mcu:null, /** - * {phl:{object},(freq:int)} + * @private */ BCF_setOpt:function BCF_setOpt(i_opt,i_db) { @@ -113,6 +123,7 @@ DEV.Pwm.prototype= /** * MRnに値を設定するBC + @private */ BCF_setMRn:function BCF_setMRn(i_ch,i_val,i_db) { @@ -133,6 +144,7 @@ DEV.Pwm.prototype= /** * PCRに値を設定するBC i_ch=1の場合、エッジモードは無視します。 + @private @param i_ch 1-6 @param i_edge @@ -160,7 +172,23 @@ DEV.Pwm.prototype= } }, /** - * See API manual. + * Pwmペリフェラルに値を設定する。 + * 設定する値は、全てのPWMチャンネル(PIN)に共通な項目である。 + * @name LPCXpresso1769.Pwm#setOpt + * @function + * @param {object as associative array} i_opt + * GPIOピンのコンフィグレーションパラメタである。必要な値を格納した連想配列で指定する。 + * 全ての値を省略することは出来ない。連想配列のメンバは以下の通り。 + *
      {freq:int,phl:object as associative array}
      + *
        + *
      • freq - PWMの基本周波数(Hz)である。この値は、全てのPWMチャンネルで共通である。
      • + *
      • phl - ペリフェラルの共通パラメタである。LPCXpresso1769.Peripheral.setOpt関数のi_optに渡すパラメタである。詳細はLPCXpresso1769.Peripheral.setOptを参照。
      • + *
      + * @example + * //create PWM (logical)peripheral + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var pwm=new LPCXpresso1769.Pwm(mcu); + * pwm.setOpt({freq:1000}); */ setOpt:function setOpt(i_opt) { @@ -173,7 +201,23 @@ DEV.Pwm.prototype= } }, /** - * see API manual + * PWM機能を持つピンを取得する。 + * ピン識別子で指定されるピンをPWMペリフェラルと結合して、PwmPinを生成する。 + * 関数は、PwmPinオブジェクトのコンストラクタをコールして、PwmPinを生成する。失敗すると、例外をスローする。 + * 生成ルールについての詳細は、PwmPinを参照。 + * @name LPCXpresso1769.Pwm#getPin + * @function + * @param {object as ピン識別子} i_pin + * PWM機能を割り当てるPINの識別子である。 + * @param {object as associative array} i_opt + * PemPinのコンストラクタに渡すオプション値。省略時は{duty:0,enable:1,pin:{sel:auto}}である。 + * @return {object as LPCXpresso1769.PwmPin} + * LPCXpresso1769.PwmPinクラスのオブジェクトである。 + * @example + * //create 100hz d=0.5 pwm + * var mcu=new LPCXpresso1769.Mcu("192.168.0.39"); + * var pwm=new LPCXpresso1769.Pwm(mcu); + * var pwmpin=pwm.getPin(LPCXpresso1769.P2[0],{duty:0.5}); */ getPin:function getPin(i_pin,i_opt) { @@ -186,14 +230,24 @@ DEV.Pwm.prototype= } /** - * このクラスは、PwmペリフェラルとPwm識別子から、シングルエッジPwmピンを構成します。 - @param i_PWM - Pwmペリフェラル - @param i_pwm - PWMを構成するピン番号 - @param i_opt - ピンオプション。各値は省略できます。 -{duty:100,enable:1,pin{sel:auto,mode:undefined,od:undefined}} + * PwmペリフェラルとPin識別子から、シングルエッジPwmピンを構成する。 + * Pwmペリフェラルオブジェクトにピン識別子で指定されたピンを関連付けて、PWM機能を持つピンを生成する。 + * 関数は、ピン識別子を元に、そのピンがPWM機能に接続できるかを調べる。ピンにPWM機能を割り当てられない場合、例外が発生する。どのピンにPWM機能が割り当てられるかは、MCUのスペックシートを参照すること。 + * ピンがPWM機能を持たない場合、例外が発生する。 + * @constructor + * @name LPCXpresso1769.PwmPin + * @param {object as LPCXpresso1769.Pwm} i_pwm + * インスタンスを結びつけるAdcオブジェクト。 + * @param {object as pin識別子} i_pin + * ピン識別子。指定できるのは、LPCXpresso1796.P?[?]である。 + * @param {object as associative array} i_opt + * setOpt関数のi_optに渡すパラメタである。省略可能。省略時は{duty:100,enable:1,pin{sel:auto}}を設定する。 + * autoは、関数が自動的に決定するPINSELの値である。詳細はsetOpt関数を参照。 + * @example + * //create PWM1.0 + * var mcu=new LPCXpresso1769.Mcu(“192.168.0.39”); + * var pwm=new LPCXpresso1769.Pwm(mcu,{freq:100}); + * var pwmpin=new LPCXpresso1769.PwmPin(pwm,P2[0]); */ DEV.PwmPin=function PwmPin(i_pwm,i_pin,i_opt) { @@ -238,7 +292,9 @@ DEV.PwmPin.prototype= _pin:null, _pwminfo:null, /** - * @param i_opt + * + @private + @param i_opt シングルエッジPWMのオプション値を設定する。 {pin:{ピン初期化パラメタ},enable:有効値,duty:デューティ比}} */ @@ -265,6 +321,24 @@ DEV.PwmPin.prototype= throw new MiMicException(e); } }, + /** + * PWMピンにオプション値を設定する。 + * @name LPCXpresso1769.PwmPin#setOpt + * @function + * @param {object as associative array} i_opt + * PWMピンのコンフィグレーションパラメタである。必要な値を格納した連想配列で指定する。 + * 全ての値を省略することは出来ない。連想配列のメンバは以下の通り。 + *
      {pin:{associative array},enable:int,duty:double}
      + *
        + *
      • pin - LPCXpresso1769.Pin#setOpt関数のi_optに渡すパラメタである。
      • + *
      • enable - PWMの有効/無効を切り替える。1で有効。
      • + *
      • duty - デューティ比である。0.0<=n<=1.0のdouble値を指定する。
      • + *
      + * @example + * var mcu=new LPCXpresso1769.Mcu("192.168.128.39",true); + * var pwm=mcu.getPeripheral("PWM",{freq:100}); + * pwmpin=pwm.getPin(LPCXpresso1769.P2[0]); + */ setOpt:function setOpt(i_opt) { try{ @@ -275,10 +349,17 @@ DEV.PwmPin.prototype= throw new MiMicException(e); } }, - /** - * デューティ比を設定する。 - @return + * PWMのデューティ比を変更する。 + * @name LPCXpresso1769.PwmPin#setDuty + * @function + * @param {double} i_duty + * デューティ比である。0.0<=n<=1.0のdouble値を指定する。 + * @example + * varmcu=new LPCXpresso1769.Mcu("192.168.128.39",true); + * var pwm=mcu.getPeripheral("PWM",{freq:100}); + * pwmpin=pwm.getPin(LPCXpresso1769.P2[0]); + * pwmpin.setDuty(0.5); */ setDuty:function setDuty(i_duty) { diff --git a/misc/MiMicVM/api.js/LPCXpresso1769.js b/misc/MiMicVM/api.js/LPCXpresso1769.js index db38fdb..72b0f1f 100644 --- a/misc/MiMicVM/api.js/LPCXpresso1769.js +++ b/misc/MiMicVM/api.js/LPCXpresso1769.js @@ -1,4 +1,8 @@ /** + * @fileOverview LPCXpresso1769ネームスペース、定数値を定義する。 + */ + +/** * LPCXPresso1769用の高レベルAPIのネームスペースである。 * MCU,Pin,peripheralのクラスと、識別子を定義する。 * このネームスペースのにある宣言は、LPC1769プロセッサに依存する。 diff --git a/misc/MiMicVM/api.js/MiMicCore.js b/misc/MiMicVM/api.js/MiMicCore.js index 5e785df..4f0c869 100644 --- a/misc/MiMicVM/api.js/MiMicCore.js +++ b/misc/MiMicVM/api.js/MiMicCore.js @@ -1,4 +1,6 @@ - +/** + * @fileOverview 低レベルAPIを定義する。低レベルAPIは、MiMicRemoteMcuをインストールしたMCUとの通信クラスを提供する。 + */ /** * MiMicが使用する関数、定数を定義する。 -- 2.11.0