« poutdat &= LED1;ってどういうこと?(PSoCマイコン) | トップページ | PSoCでLEDチカチカ »

2010年10月28日 (木)

PSoCマイコン

やっとPSoC Designerを動かしてみました(まだパソコン上でしかやってない)。
ブロックでいろいろ設置できて感動しました。
学研の電子ブロックのブロック1つ1つを超高機能にしたみたいな感じです。

ちなみに「はじめてのPSoCマイコン」の
p.79 リスト3-2 下から8行目の「poutdat &= LED1;」はやはり誤植で
「poutdat &= ~LED1;」が正しいようです。

IOポートの入出力はANDとORでいちいち書くのが面倒なのでArduinoみたいな関数を自分で作ろうと思います。
自分で見やすいほうがいいので。

あと英語は大事ですね!
データーシートが分かりません!
いちおうゆっくり辞書を使いながら読めばわかりますが、日本語と同じようにわかるようになりたい・・

« poutdat &= LED1;ってどういうこと?(PSoCマイコン) | トップページ | PSoCでLEDチカチカ »

PSoCマイコン」カテゴリの記事

コメント

こんばんわ、ぽよこまだんなです

>IOポートの入出力はANDとORでいちいち書くのが面倒なので
>Arduinoみたいな関数を自分で作ろうと思います。
関数を別途作るのは良いですね
自分的にはI/Oポートの設定はビットフィールドを定義して
単純な代入で記述出来るようにした方がよいかと思います
(ほんのわずかですが速度ダウン&メモリ消費になりますが^^;)

ぽよこまだんなさんのブログに返信しました。
ビットフィールドの定義方法の公開、感謝ですshine

始めまして。マイコン初心者です。
遅レスなので、既に自前で関数の作成をされているかと思いますが…
サイプレスのアプリケーションノートAN2033に、ports.hを作って見やすくする方法がありました。
ビットフィールドを定義するのと、どちらが効率良いコードになるんでしょうか?

コメントして頂きましてありがとうございます。

はじめまして。
ぼくは今はビットフィールドを定義するのをやめて、
「橋本商会」さんの
http://shokai.org/blog/archives/5230


#define _BV(BIT) (1< #define sbi(BYTE,BIT) (BYTE |= _BV(BIT))
#define cbi(BYTE,BIT) (BYTE &= ~_BV(BIT))
#define LED_ON() sbi(PRT2DR, 0) // LED
#define LED_OFF() cbi(PRT2DR, 0)
#define BTN_PORT PRT2DR // push button
#define BTN_BIT _BV(2)

if(BTN_PORT & BTN_BIT){ // ボタンを押している時
//コード
}

を応用して使っています。

ports.hと基本的に方法は同じだと思います。

勉強不足でビットフィールド定義の仕組みが分かっていないので、すみませんが、どちらの方が時間を消費しないかは分かりません。
ただ、橋本商会さんの方法は、内蔵プルアップをしているときには、特に注意しなければなりません。1bit書いたつもりでも、毎回1byte分書いているのでプルアップは外れてしまいます。
実測していませんが、橋本商会の方法だとそれほど時間を消費しないと思います。命令数が少ないからです。
ちなみにArduinoのdigitalWriteとかと比べたら、格段に効率がよいのは確かです。ポートに直接読み書きするのは、効率がよいのです。

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1389908/37415181

この記事へのトラックバック一覧です: PSoCマイコン:

« poutdat &= LED1;ってどういうこと?(PSoCマイコン) | トップページ | PSoCでLEDチカチカ »