softdev:mbed
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
softdev:mbed [2013/02/17 22:04] – [Digitalポート] king | softdev:mbed [2013/07/15 20:25] (現在) – 外部編集 127.0.0.1 | ||
---|---|---|---|
行 5: | 行 5: | ||
{{: | {{: | ||
+ | 最初はここを見た。http:// | ||
+ | |||
+ | ====== freescale Kinetis ====== | ||
+ | Freedomという開発基板をmbed化できるらしい。[[.: | ||
===== LPC11U24リソース ===== | ===== LPC11U24リソース ===== | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
+ | ===== USB ===== | ||
+ | [[softdev: | ||
+ | |||
+ | ===== 機能 ===== | ||
==== RTC ==== | ==== RTC ==== | ||
- | どうも、RTC機能は無いらしい。mbed情報ページなどでは、普通に書かれているのだが、LPC11U24とLPC1768のどちらもで対応するのかどうかが書かれておらず、よくわからない。LPC1768を使っている分にはどっちでも良い話だが、安い方を買ったんで、これもしょうがないか。 | + | どうも、RTC機能は無いらしい。mbed情報ページなどでは、普通に書かれているのだが、LPC11U24とLPC1768のどちらもで対応するのかどうかが書かれておらず、よくわからない。LPC1768を使っている分にはどっちでも良い話だが、安い方を買ったんで、これもしょうがないか。。。。 |
+ | |||
+ | 設定しても、12: | ||
+ | |||
==== Digitalポート ==== | ==== Digitalポート ==== | ||
行 29: | 行 41: | ||
こんなのすぐ出来ると思ってたから、ここから長かった。LEDが点かないのよ。プログラムのせいか、ポートのせいか、オシロで見たら、DigitalInになっているポートだけ1Vぐらいの中間電位、押すと0Vにはなるという挙動だ。\\ | こんなのすぐ出来ると思ってたから、ここから長かった。LEDが点かないのよ。プログラムのせいか、ポートのせいか、オシロで見たら、DigitalInになっているポートだけ1Vぐらいの中間電位、押すと0Vにはなるという挙動だ。\\ | ||
あれ?Pulldownしてるの?だれが?。。。ポート変えてみたり、DigitalInのHandbook見ても書いてないから、そういう設定があると言う所まで行き着けなかった。結局、DigitalInのページのAPI Summeryの中にmbed - DigitalIn Class Referenceというのがリンクになっていて、そこにmodeというpropertyが存るように書いてあった。 | あれ?Pulldownしてるの?だれが?。。。ポート変えてみたり、DigitalInのHandbook見ても書いてないから、そういう設定があると言う所まで行き着けなかった。結局、DigitalInのページのAPI Summeryの中にmbed - DigitalIn Class Referenceというのがリンクになっていて、そこにmodeというpropertyが存るように書いてあった。 | ||
- | < | + | < |
- | void mode(PinMode pull ) | + | DigitalIn sw1(p11); |
- | Set the input pin mode. | + | DigitalIn sw2(p12); |
+ | DigitalIn sw3(p13); | ||
+ | DigitalIn sw4(p14); | ||
- | Parameters: | + | int main() { |
- | mode PullUp, | + | sw1.mode(PullUp); |
- | Definition at line 78 of file DigitalIn.h. | + | sw2.mode(PullUp); |
+ | sw3.mode(PullUp); | ||
+ | sw4.mode(PullUp); | ||
+ | |||
+ | </ | ||
+ | こんなの、普通にやってたら、わからないと思う。それとも何?おれがアホなだけなのか?\\ | ||
+ | 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, | ||
+ | spi.frequency(100000);// | ||
+ | ・・・・・ | ||
+ | ・・・・・ | ||
+ | ・・・・・ | ||
+ | } | ||
+ | |||
+ | 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); | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | ところで、 | ||
+ | < | ||
+ | |||
+ | ==== アナログ入力 ==== | ||
+ | ちょっとよくわかってないのだが、どうも入力を0~1.0Vに正規化して返すらしい。\\ | ||
+ | 普通、Vref-Vss(Vin-GNDと共用する事が多い)の分解能(この場合10bit)の値を返すから、電圧=値×3.3/ | ||
+ | |||
+ | 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; | ||
</ | </ | ||
- | こんなの、普通にやってたら、わからないと思う。それとも何?おれがアホなだけなのか。 | + | p15をアナログ入力にして、LM61を増幅せずに繋いだ例。 |
softdev/mbed.1361106241.txt.gz · 最終更新: 2013/07/15 20:27 (外部編集)