作業日誌
目次
メニュー†
テンプレへのコメント†
- LED点灯は、けっこう奥が深いですね。ぜひ次週にもチャレンジしてみましょう。 -- akita
- グローバル配線でORをとるとだめですかね?>和音 -- akita
- 基板を基盤とかくと秋田先生におこられるので、なおしましょう。 -- まつむら
- 修正しました!注意ありがとうございます。 -- 大垣
- ORを取ってみたら和音というよりもノイズが入っている感じになりました。 -- 大垣
- →11/28:UARTの通信速度は、ハマることが多いので、要注意ですね。 -- akita
- おや?見逃していた>基盤 -- akita
- ふむ。そうか、和音っぽくならないんだ・・・なんでだろう。 -- akita
- もう一息ですね -- akita
過去の日記†
日付1月16日(金)†
結構書いていなかったな・・・。昨日までに進んだ分の話。
RTCから読み出した値を蛍光表示管に表示するためにタイマーを使う。
タイマー割り込みではI2Cでの通信が使えないということなので
メイン関数内の蛍光表示管への表示プログラムに条件を付けてタイマー割り込みで条件を真にすることにする。
モジュールはTimer16を使いClockはCPU_32_KHz、Periodは16000で0.5秒に一回割り込みするようにした。
タイマーの動作というのはPeriodに指定した値からカウントダウンしてCompareValueの値と等しくなると割り込みが発生するそうだ。
なぜか表示されない・・・。
→PCとの通信で鸚鵡返しのプログラムが書いてあってそこでプログラムがPCの入力待ちになり止まっていた。
鸚鵡返しをなくすことで表示されるように。
→結果今までPCから'w'を入力したら時刻設定だったが電源を入れた時に時刻設定するのみで変えるときは一度電源を切ることになる。
年月日曜日を表示できるようにする。
これは時刻表示ができるようになっていれば楽なものだった。
蛍光表示管の表示がチカチカしていたのは一回一回画面をクリアしていたからでした。
表示する場所はずれないのでクリアするコマンドを「カーソルを画面の左上に移動する」というものに変えて
上書きしていくようにしたらチカチカしなくなりました!
表示がチカチカしないでちゃんと綺麗に表示された。普通の時計に見える!
表示のレイアウトをいろいろいじって決定。
スイッチを押したらLED点灯。という動作をさせようとする。
チュートリアルにあるスイッチの入力からLEDモジュールを使って点灯させようとしてみるがうまくいかない。
PWMを使ってみたがそれもうまくいかない。
ifの中にPCのほうに文字が表示されるようにすると表示はされていたのでスイッチが押されているのは感知しているよう
→LEDを点灯させる動作のほうに問題あり?
時間と頭が足りず、これは未解決。
とりあえず自主課題発表には現在の状態で持っていくことになる。
電源をつないでPCから年(下二桁)月(2桁:1月→01)日(2桁:1日→01)曜日(2桁)時間(2桁)分(2桁)をPCから入力したら
表示動作動作開始。
表示内容は年、月、日、曜日、時間(時・分・秒)
追加でやるべきこと。(仮案)
・時計で独立して時刻設定できるようにすること。
おそらくスイッチの入力を感知して時刻設定のプログラムに入るようにする
→スイッチが4つ必要?(時刻設定スイッチ、数値を進めるスイッチ、戻すスイッチ、決定スイッチ)
どんなスイッチがあるのかいろいろ調査必要。今度箱をあさらせていただこう。
・ライト機能。これにもスイッチが必要と思われる。
→完全にスイッチでオンオフを切り替えるか、スイッチを押したら一定時間光るようにするか。
個人的にはオンオフ切り替えの方が便利だと思う。
光り方はパッとついたり消えたりするよりフワッと付いたり消えたりの方がいいと思う。
・アラーム機能。
これはスイッチ自体は時刻設定のスイッチを共有できるので設定動作は時刻設定と同時にできそう。
アラーム設定スイッチを用意。アラームオンオフスイッチも必要。
あとは画面表示にアラームオンオフ表示とアラーム時間を表示する必要ありなので画面レイアウトをいじる必要あり。
RTCの仕様書だとアラームは曜日なども指定できるようにできそうだが時間だけでいいだろう。
余裕があったら曜日も指定できると面白いかも。
→スイッチが5つ必要、ただ3つは時刻設定と共有可能だろう。
それと忘れてはいけないのがスピーカー。時刻表示と同時に音を鳴らすというのはどうやるんだろう・・・?
プログラムが止まらないようにしなければならない。アラームが鳴っている間時刻表示が止まるのは時計としてまずい。
そういえば蛍光表示管と基板の接続線を触ると表示が消えたり変になったりします。
接触不良でしょうか?その場合は線を作り直さなければいけませんね。
日付12月12日(金)†
RTCの続き†
RTCとの通信はサンプルプログラムに間違いがあったことが判明。
まさかサンプルプログラムに間違いがあるとは・・・。
メモ
RTCから送られてくる信号は不定な部分があるのでそこを読まないようにしないと正しい値が得られない。
読まないビットが0それ以外が1な値とANDを取る。
最終的に使う蛍光表示管に手を付ける。
蛍光表示管側に7本のL字ピンを半田付けした。通信に必要なのは電源用2本とデータ送信用の1本のみなのでマイコン側で3本のピンを立てる。
前回の蛍光表示管のプログラムをコピーして手直しして書き込み。
どうも表示がおかしい。
この蛍光表示管の通信では1,0の表現が+3Vと-3Vなので信号を変換するICを入れる必要があるそうなので半田付けをして配線しなおす。
これで表示ができた!
来週には何とか時計機能実装までこぎつけたい。
通信自体はもうやってるので何とかなる!と思いたい。
筆箱を忘れた・・・orz
取りに行かなければ。
日付12月5日(金)†
RTC†
うっかりうっかり作業日誌が次の日になってしまった。
RTCを使うための配線をするポートにLEDを繋いでいたためLEDの配線を変えるところから始める。
P1.5とP1.7の組にRTCの配線する。
使うモジュールはDigital Comm→I2CHW→Single Master Operation
これでRTCとの通信を行う。
設定---------------------------------------------
Read_Buffer_Types RAM ONLY
CPU_Clk_speed_(CY8C27xA) NOT CY8C27xA
I2C Clock 100Kstandard
I2C Pin P[1]5-P[1]7
UARTでPCとの通信を行う。(9600bps)
プログラムについてややこしいからメモメモ。
データシートのサンプルプログラムをベースにいじっていく。
スレーブアドレスはRTCで決まっている1010001→0x51
最初の方にある#define SLAVE_ADDRESSのところだけ変えれば良かった事に全部書き換えた後で気づく・・・。次はそうしよう。
whileループの中の最初の塊が書き込み、後の塊が読み出しらしい。
I2CHW_bWriteBytes(SLAVE_ADDRESS, txBuffer, 32, I2CHW_CompleteXfer);
↑書き込みの命令。
『SLAVE_ADDRESSに配列txBufferのtxBuffer[0]からtxBuffer[31](つまり32個)のデータを送る。』という命令で
最後の引数は、終了する・終了しない・前回の続きからみたいな感じ(これは良くわからない・・・)の3種類らしい。これも値じゃなくてI2CHW_○○の形のままでいい。
RTCはアドレス→データと送る決まりがあるらしくtxBuffer[0]=アドレス、txBuffer[1]=データ、個数は2として1個のデータを書き込むようにする。
I2CHW_2_bWriteBytes(0x51, txBuffer, 2, 0x00);
読み出しはサンプルプログラムのままだと何処にアクセスするかわからないのでアドレスを指定するために『アドレスだけを送り終了しない』という書き込み命令をする。
その後で読み出し。読み出し命令の引数の意味は読み出しと一緒。
ただ最後の引数を変えないといけないらしい。これはまだどうしたらいいのか判明していない。
I2CHW_2_fReadBytes(0x51, rxBuffer, 1, 0x01);
とりあえずwと打ったら書き込み、rと打ったら読み出しとして、書き込みはその後アドレス、データを打ち込み、読み出しはアドレスを打ち込むということにしてPSoCに書き込み。
PCから書き込みはちゃんとできているらしいけど、読み出しがどうにもうまくいかない。
オシロで見ても読み出しのときの信号がおかしい。PCで表示されている値とも違う信号が送られている。
なかなかうまくいかないものですね。
覚えることが沢山だ〜。でもこれさえできれば時計機能を実装できそうなのでがんばります。
残りはそんな多くないけど時計の基本機能意外をいろいろ付けられたらいいなぁと思います。
日付11月28日(金)†
蛍光表示管†
まず準備として蛍光表示管を使うためのピンを立てて基板を接続する線を作った。
ピンを繋ぐ線を作るのがちょっと楽しかった。
準備ができたので早速デザイナーを起動。
モジュールはUARTを二つ設置。パソコンとの通信用のUART_2、蛍光表示管と通信するUART_1を用意。
プログラムを作って書き込んだがうまく動かない・・・。
何故かオウム返しさえもうまくいかない。
よくよく見るとVC3のソースにVC1が入ってなかった!
VC3のソースにVC1を入れて改めて書き込み&実行。
蛍光表示管にキーボードで打った文字を表示しようとする。
キーボードで打ち込むと表示はされるが、なぜか見たことも無い文字(?)が表示される。せめて知っている記号が出て欲しい・・・。
約1時間ほど詰まってどうしようもなくなったので去年の作業日誌を参考にすると、どうやら蛍光表示管に接続しているUARTのクロックがマズイよう・・・。
仕様書を確認すると蛍光表示管のデフォルトは38400bpsでした。PCとの通信と同じクロック(9600bps用)を入れてたのが間違いでした。
UART_1のクロックを修正したらちゃんと表示されました。
辿り着くまで長かった・・・。
SBISY→P0.0 (マイコンに入力)
SIN →P0.2(マイコンから出力)
蛍光表示管のデフォルトは38400bps(307200Hz)
日付11月21日(金)†
PCとの遭遇†
電源コードの作成。
USBに接続できる電源コードを作成。市販のコードを切断して半田付け。
チュートリアルのPCとの遭遇項目をやりました。
オウム返し、パソコンからLEDの点灯の操作、LEDの明るさを変える(5段階)ができました。
◆要調査!
型番(GU112X16G-700303I16L)
http://www.itron-ise.co.jp/
日付11月14日(金)†
基板作成†
基板の半田付けをしました。
ちゃんとLEDを光らせることができてよかったです。
ものづくり実践プロジェクトの企画書を提出しました。
結局何チーム出たのか気になるところです。
日付11月07日(金)†
半田付け†
半田付けをしました。
いい道具を使っても遅かったです…。
PSOCのブザーで和音を鳴らすことができないです。
日付10月24日(金)†
アイデア†
時計を作ることに決まりました。
ブザー †
ブザーで音階を鳴らすことができました。
とりあえずの目標はかえるの歌フルコーラスです。
日付10月17日(金)†
チュートリアル†
チュートリアルをとりあえず一通り終了!
LEDを滑らかに点滅させることはできなかった。