月別アーカイブ: 2012年7月

PIC16F678 I2C通信(スレーブ)


スレーブ(受信)側のプログラムです。マスターが悪いのか、スレーブが悪いのかその判定が出来ずに苦しみましたがなんとか動きました。CCS-Cコンパイラを使っています。

ヘッダファイル

Cファイル

3つの8バイトのデータを受信して6個の7セグLEDに表示をするプログラムです。前の記事で紹介したCポートを全ピン出力モードにする部分も含まれています。0〜99までのデータを受信するとの前提の設計です。書籍やサイトでは次の様にpollを使った例が出ていたのですがこれだと最初のデータとしてアドレスを受信してその後のデータを受信してくれませんでした。mainの中のループで以下の様に書いてみました。

これでは受信ができずに割り込み処理を使って動くプログラムが書けました。i2c_pollを使った書き方は古いスタイルなのでしょうか?

以下のサイトを参考にさせて頂きました。
http://www.freeml.com/picfun/6468/
http://homepage1.nifty.com/rikiya/software/316PICI2C.htm 

PIC16F678のI2C通信(マスター)


PIC16F678同士をI2C通信で接続するテストです。ちょっとはまった部分もありましたので記事にします。CCSのCコンパイラを使っています。

ヘッダファイル

クロックは4MHz。なぜか20MHzに上げると動作しませんでした。
B4とB6を使ってクロックとデータを送信しています。プルアップの抵抗(5kΩ)をつけた回路。PIN_A0には動作確認のためLEDを付けています。

Cファイル

output_float(PIN_B4)が必要と書いてある記事や本がほとんどでしたが書かなくても動いてます。ストップウォッチのように3つの数字(秒、分、時)を出力します。delayで動いているので正確な時間では当然ありません。

PIC16F687のCポート


PIC16F687に7セグLEDをつないで回路をつくりました。


C3とC4が制御出来ずにはまりました。C3に出力しようとしても無反応。C4に出力するとC3とC4がhighになってしまいました。

しばらくはまりましたが、データシートにこんな記述を発見。

Note : The ANSEL (11Eh) and ANSELH (11Fh) registers must be initialized to configure an analog channel as a digital input. Pins configured as analog inputs will read ‘0’.

inputについては書いてありますがoutputについては特に書いてありませんが、ANSELとANSELHをセットしなければいけないようです。さらにCM2CON0とCM2CON1もセットしないと出力できませんでした。結果次のようなコードで無事に動きました。

CCS-Cコンパイラを使っています。
プログラムの冒頭部分で

main関数の中で

とりあえずこれでいけるようです。

参考にさせていただいたサイトは
http://www.robotsfx.com/robot/robohow/RoboHow43/RoboHow43.html
でした。

軽井沢ニューアートミュージアム


軽井沢ニューアートミュージアムに作品を展示しています。
新作を含む8作品を展示しています。

 

軽井沢ニューアートミュージアムはこんな建物。駅からまっすぐの通りに面しています。

 

C-DEPOT selection展

青山健一 天野由美子 大竹美佳

金丸悠児 末宗美香子 杉山治
野口都 真壁友 安川啓太


会期:2012年6月27日(水) – 7月16日(月)
会場:軽井沢ニューアートミュージアム 1Fギャラリー
〒389-0102 長野県北佐久郡軽井沢町軽井沢1151-5
tel:0267-46-8691

 

luminous Clock


YouTubeに新作の動画をアップしました。

蓄光材を使った時計です。紫外線LEDを使い回転する蓄光部分に紫外線を照射します。数字の形が光り時を知らせます。数字の形はドットのタイプと7セグLED(デジタル表示)の2つのタイプがあります。

時の輪列


YouTubeに新作の動画をアップしました。

ステッピングモータをクオーツで制御して歯車を回しています。歯車に付けられた目盛で時間が分かります。下から秒、分、時間の歯車が並んでいます。
クオーツ制御なので実用時計としての精度を持った作品です。