ユーザ用ツール

サイト用ツール


softdev:mbed

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
softdev:mbed [2013/02/17 21:51] – [LPC11U24リソース] kingsoftdev:mbed [2013/07/15 20:25] (現在) – 外部編集 127.0.0.1
行 5: 行 5:
 {{:softdev:img_0332.jpg?200|箱から開けたとこ}} {{:softdev:img_0332.jpg?200|箱から開けたとこ}}
  
 +最初はここを見た。http://mbed.org/users/yueee_yt/notebook/use_LED/
 +
 +====== freescale Kinetis ======
 +Freedomという開発基板をmbed化できるらしい。[[.:mbed:FRDM]]
 ===== LPC11U24リソース ===== ===== LPC11U24リソース =====
   * [[http://mbed.org/media/uploads/chris/mbed-010.2-schematic.pdf|回路図]] ハード屋なんでこれが無いと始まらん   * [[http://mbed.org/media/uploads/chris/mbed-010.2-schematic.pdf|回路図]] ハード屋なんでこれが無いと始まらん
   * [[http://www.nxp.com/documents/data_sheet/LPC11U2X.pdf|LPC11U24データシート]] これも必要   * [[http://www.nxp.com/documents/data_sheet/LPC11U2X.pdf|LPC11U24データシート]] これも必要
  
 +===== USB =====
 +[[softdev:mbed:usb]]
 +
 +===== 機能 =====
  
 ==== RTC ==== ==== RTC ====
- どうも、RTC機能は無いらしい。mbed情報ページなどでは、普通に書かれているのだが、LPC11U24とLPC1768のどちらもで対応するのかどうかが書かれておらず、よくわからない。LPC1768を使っている分にはどっちでも良い話だが、安い方を買ったんで、これもしょうがないか。+ どうも、RTC機能は無いらしい。mbed情報ページなどでは、普通に書かれているのだが、LPC11U24とLPC1768のどちらもで対応するのかどうかが書かれておらず、よくわからない。LPC1768を使っている分にはどっちでも良い話だが、安い方を買ったんで、これもしょうがないか。。。。 
 + 
 +設定しても、12:00AMしか帰ってこない。 
 + 
  
 ==== Digitalポート ==== ==== Digitalポート ====
行 27: 行 39:
 } }
 </code> </code>
 +こんなのすぐ出来ると思ってたから、ここから長かった。LEDが点かないのよ。プログラムのせいか、ポートのせいか、オシロで見たら、DigitalInになっているポートだけ1Vぐらいの中間電位、押すと0Vにはなるという挙動だ。\\
 +あれ?Pulldownしてるの?だれが?。。。ポート変えてみたり、DigitalInのHandbook見ても書いてないから、そういう設定があると言う所まで行き着けなかった。結局、DigitalInのページのAPI Summeryの中にmbed - DigitalIn Class Referenceというのがリンクになっていて、そこにmodeというpropertyが存るように書いてあった。
 +<code c++>
 +DigitalIn sw1(p11);
 +DigitalIn sw2(p12);
 +DigitalIn sw3(p13);
 +DigitalIn sw4(p14);
 +
 +int main() {
 +    sw1.mode(PullUp);
 +    sw2.mode(PullUp);
 +    sw3.mode(PullUp);
 +    sw4.mode(PullUp);
 +
 +</code>
 +こんなの、普通にやってたら、わからないと思う。それとも何?おれがアホなだけなのか?\\
 +BusInではpropertyが使えないようなので、DigitalInでも宣言し、.mode で設定する。
 +
 +==== SPI ====
 +SPIマスター機能、これは簡単にできた。下記はシフトレジスタ595で接続されたキャラクタLCDをspiで制御する例\\
 +LCDのDB0~7,E,RS、他を595を2個つないだ16bitシフトレジスタにデータを送って制御する。E信号もデータの中なのでデータを3回送る。
 +<code c++>
 +SPI spi(p5,p6,p7);
 +DigitalOut solat(p8);
 +int main() {
 +    spi.format(16,3);
 +    spi.frequency(100000);//100KHz
 +    ・・・・・
 +    ・・・・・
 +    ・・・・・    
 +}
 +
 +void send_word(int data){
 +  spi.write( data );
 +  wait_us(1);
 +  solat = 0;
 +  wait_us(1);
 +  solat = 1;
 +  wait_us(1);
 +}
 +
 +void send2cmd(char cmd){
 +  int data;
 +  data = 0x0100 + cmd;
 +  send_word( data );
 +    
 +  data = cmd;
 +  send_word( data );
 + 
 +  data = 0x0100 + cmd;
 +  send_word( data );
 +  wait_us(24);
 +}
 +
 +</code>
 +ところで、
 +<note>SPIにあって欲しい、LSB,MSBの切り替えが無いですが。。。SPIはMSB1stが普通ですが、それでもLSB1stでないと困る事もあります。。。。</note>
 +
 +==== アナログ入力 ====
 +ちょっとよくわかってないのだが、どうも入力を0~1.0Vに正規化して返すらしい。\\
 +普通、Vref-Vss(Vin-GNDと共用する事が多い)の分解能(この場合10bit)の値を返すから、電圧=値×3.3/1024 を算出する事になるが、あらかじめ値を1024で除算してfloatで返すらしい。CPUパワーがあるのでこういう使い方をするとのことだが、、、
 +
 +ARM使ってプログラムが肥大化するにはこういった処理が含まれるからなのかも知れないなぁ、と感じる。。。\\
 +あらかじめ、ハードで1.024倍しておくという使い方もあると思うが、、会社でもそうだが、何でもかんでもファーム。CPUはパフォーマンスを上げ続けるという構図ができあがっている。製品が作れないのはCPUパフォーマンスが足りないからだと、すぐ口にする。きにくわん。
 +
 +もちろん、0~1で正規化されたfloatのほうが直感的だし使いやすい事は理解する。
 +
 +<code c>
 +AnalogIn LM61(p15);
 +void main(){
 +    float tempC;
 +    tempC = ((LM61*3.3)-0.600)*100.0*10;
 +</code>
 +p15をアナログ入力にして、LM61を増幅せずに繋いだ例。
  
softdev/mbed.1361105486.txt.gz · 最終更新: 2013/07/15 20:27 (外部編集)