目次

#contents();

*メニュー [#wf322d66]
//個人ページの下にページを作ることもできます。
-[[ファイル置き場>./upload]]
-[[コメントページ>./comments]]
-[[Rio Unite 130 分解>分解レポート#n13340d3]]
-過去の日誌
--[[./2008]]
--[[./2009]]

*komaへのコメント [#o41c145a]
#pcomment(./comments,reply);
#contents();

*2009年10月27日(火) [#uc493b29]
**PSoC DAC使用時の注意 [#r8630f5b]
***Analog Column Clock [#y1a4ddec]
Analog Column Clock((アナログブロックの左側にあるClockセレクタ、デフォルトはVC1))を使用するので、VC1の周波数をDACの動作周波数以下に分周しておく必要があるらしい。今回はVC1を8分周(3MHz)とした。
http://www.pastelmagic.com/psocbbs/index.cgi?m=look&bnum=930
*2010-04-28-A/D Converter [#m5974c0a]
アナログ入力は、P0[0]-P0[7]、P1[0]-P1[3]、P7[0]-P7[7]で、20ピンが使用できるようだ。
分解能は最大10bitで、ソフトウェアかタイマでトリガーできる。
サンプリング周波数は、分解能8bit、クロック10MHz使用時で350kspsくらい出るらしい。
かなり正確な数字が出てるので使いやすそうだ。

8bitの''A/D Control Register''が3つあり、これで初期設定を行う。
ソフトウェアでサンプリングトリガを与えるときは、''A/D conversion start bit(adst)''を"1"にするだけで良い。
 adst = 1;
変換終了すると''adst=0''に変化する。

***IO設定 [#a9a32cb5]
アナログ出力時は"High Z Analog"としなければならない。



*2009年10月23日(金) [#r3f62858]
**報告 [#e765fe0f]
***SRAMについて [#add92fa2]
プリチャージする必要がある。とくにWLの負荷容量が大きいと、その影響で読み出せず、SRAMの電圧が書き換わってしまう。
そのため、本来はVDD/2にプリチャージしておく。
*2010-04-25-UART通信 [#c07e8aea]
ありがたいことに、[[R8C/2Dマイコン開発セット:http://akizukidenshi.com/catalog/g/gK-03018/]]にはあらかじめシリアル通信用のインターフェースIC[[ADM3202ARN:http://akizukidenshi.com/catalog/g/gI-01279/]]が用意されていて、D-SUBコネクタとマイコンの間にかませてあるので、ユーザーは、特に気にせずにマイコンからデータを送受信できるようだ。至れり尽くせりだな。。

***コンパレータについて [#ade95d2e]
ばらつきに弱い原因のひとつとして、面積が小さいことが挙げられる。
構成そのものを見直すか、あるいは面積をかえて詳細なシミュレーションをするか。
まずはサンプルソースを使用してUART通信成功!

***IPプロジェクトについて [#nd3ec332]
もし面積が余っているようなら、そこに載せてもらうことはできないか?
あるいはIPとして登録することを条件に設計するか?

*2010-04-24-タイマ割り込みでLED点灯 [#g5723342]
前回のタイマを使用したPWM波形は、TimerRC専用の出力ピンを使用しているため、それを別のピンに割り当てることはできない。
なので、今度はタイマ割り込みを発生させてLEDに接続されているピンPWM波形を発生させたい。
TimerRCの割り込み制御レジスタはなぜか3つもあるorz
,レジスタ名,機能
,TRCSR0,タイマRC割り込みのインプットキャプチャ/アウトプットコンペアの機能切り替え
,TRCIER,タイマRC割り込みを許可するかどうかを決めるレジスタ
,TRCIC,タイマRC割り込みのレベルを決定するレジスタ

*2009年10月22日(木) [#mbf6bd2d]
**Comparatorシミュレーション [#r984f298]
***実はかなりばらつきに弱い。。 [#jb26a2cc]
どうやらばらつきに対してかなり弱い回路構成だったことが判明。
なんで作っている最中に気がつかなかったのだろうか。。
R8Cには割り込みレベル(Processor Interrupt Priority Level: IPL)という値がある。
タイマを含めた、あらゆる割り込み処理に対してレベルを決めるレジスタが用意されていて、
 割り込みのレベル>IPL
を満たさないものは割り込み処理が実行されない。
IPLは、例えば以下の処理を実行すると変更できる。
 //IPLを3に変更
 asm("LDIPL #3") ;

**SRAMシミュレーション [#odc2479e]
***PAD、DUTボードの寄生容量の影響大 [#f5e32d7a]
出力部分にバッファを入れるべきだったorz
割り込み時に実行される関数定義については、''#pragma interrupt'' によって定義する。関数名は任意。
(vect=○○)というのは、 ''割り込みベクタ番号'' を与えている。すべての割り込み処理に対して一意の値があり、これによって何の割り込み処理のための関数であるかを認識させるっぽい。
ちなみに、TimerRCのSoftware Interrupt Numberは ''7'' 。

*2009年10月21日(水) [#c623cdf9]
**Comparator測定 [#gd318617]
***なぜか出力電圧が3.3V。どう考えてもおかしい。。 [#c16cda55]
電位差も0.5Vくらいの差がないと動作しない。オワットルな。
どうやら、DIGITAL用IOバッファは3.3V出力をするらしい。あめちゃんの回路も同様だった。
回路が悪いのかIOが悪いのか分からない。IOを想定して回路シミュレーションをしてみる必要があるかも。
 #pragma interrupt _timer_rc(vect=7)
 void _timer_rc(void);


*2009年10月20日(火) [#r8f293f5]
6月22日設計のチップ動作検証をPSoCでやる。
▼ソース 
#ref(./upload/100423timer_rc.c)

**Comparator動作確認 [#uedcf36a]
正しく動作していることは確認できた。
次は、どれくらいの速度が出るかを知りたい。どうしよう?

**PSoCのDAC6が動作せず [#h523a7da]
正しいと思い込んでいる設定が、実は違うのかもしれない。確認する必要あり。
*2010-04-23-サンプルコード [#ke6b18f5]
とりあえずリンク
[[R8C/2Dシリーズのサンプルコード集:http://japan.renesas.com/products/mpumcu/r8c/r8c2x/r8c2d/Application_Notes.jsp?event=resetFunctions&logo=0&productName=R8C%2F2D+%C3%A3%C2%82%C2%B0%C3%A3%C2%83%C2%AB%C3%A3%C2%83%C2%BC%C3%A3%C2%83%C2%97&region=jp&hiddenFunctionsKey=41&hiddenProductsId=2125&sort=&pageNo=1&redirectEvent=resetFunctions&documentUrl=http%3A%2F%2Fjapan.renesas.com%2Fproducts%2Fmpumcu%2Fr8c%2Fr8c2x%2Fr8c2d%2FApplication_Notes.jsp&x=18&y=11]]

**SRAM動作せず [#nb5cd985]
理由はこれまた不明。検証不足。
*2010-04-23-感想とか [#a65ffe58]
とりあえず、R8Cのマニュアルはとっても分かりにくいと言うことが分かった!
網羅的に記述してあるけど、とりあえず動かすにはどうすればいいのかっていうのが全然理解できない。
このままではLEDをチカチカさせることもままならない!!

***検証1:PSoCプルダウンとつながっているため? [#i2140e8a]
ちゃんとジャンパピンを外してあるため、開放状態である。関係なし。
*2010-04-22-タイマを使用する_02 [#w297d5da]
PWM波形が出た!!っと言ってもほとんどサンプル通りですが。。
''msttrc''というレジスタがあることを完全に見落としていたため、
かなり足止めを食らいました。

***検証2:WL1を正しくONしていないのでは? [#vc4eb126]
できている。
▼ソース 
#ref(./upload/100421timer_rc.c)

***試しに"1"だけ書き込んでみるとどうなるか? [#a77911aa]
そもそも"1"を書き込めない。BL2とBL2_Nは同じような波形で、10mV程度。
▼PWM波形 
#ref(./upload/2010-04-23-pwmwave.jpg,,,50%)

***速度が速すぎるのではないか? [#d6e9057a]
1KHzでも動作していない。。
*2010-04-22-タイマを使用する_01 [#w297d5da]
R8Cでタイマをセットアップするまで、面倒な設定が多すぎるorz
タイマのカウント用CLKやPWMモードやら、柔軟な設計ができるのはいいけど、
いちいち設定すべきレジスタが代わるのがめんどくさい。
レジスタの名前も覚えにくい。。

**割り込み処理 [#w876c6bf]
アナログ入出力のあるピンの割り込み制御がうまくいかない。たとえばP0[1]
理由はよく分からないので、とりあえず別のピンに置き換えて使用することにした。

*2010-04-21-HEW新規ワークスペース生成 [#e87e6851]
HEW,High-performance Embedded Workshopは開発環境の名前。
プロジェクト生成後、マイコンのSFR(Special Function Resistor)を制御しやすくするため、ヘッダファイルを別途ディレクトリにコピーする必要がある。以下の中にある ''sfr_r82d.h'' というファイル。
 C:\Program Files\Renesas\Hew\System\Pg\Renesas\M16C\V5_42_0\Generate\sfr\R8C\R8C2C_2D

**PSoC タイマー割り込み + switch文 [#m3726fd8]
このヘッダファイルの一番上の行に、なぜか日付が書いてあり、これがあるとコンパイルできないので消す。

 switch(mode){
	case 0:
		PRT0DR = PRT0DR & 0x7F;  // BL1   = 1
		PRT0DR = PRT0DR | 0x02;  // BL1_N = 0
		break;
	case 1:
		PRT0DR = PRT0DR | 0x80;  // BL1   = 0
		PRT0DR = PRT0DR & 0xFE;  // BL1_N = 1
		break;
	case 2:
		PRT0DR = PRT0DR & 0x7F;  // BL1   = 1
		PRT0DR = PRT0DR | 0x02;  // BL1_N = 0
		break;
	case 3:
		PRT0DR = PRT0DR | 0x80;  // BL1   = 0
		PRT0DR = PRT0DR & 0xFE;  // BL1_N = 1
		break;
	case 4:
		PRT0DR = PRT0DR & 0x7F;  // BL1   = 1
		PRT0DR = PRT0DR | 0x02;  // BL1_N = 0
		break;
	default:
		PRT0DR = PRT0DR | 0x80;  // BL1   = 0
		PRT0DR = PRT0DR & 0xFE;  // BL1_N = 1
		break;	
	}
 // RW control
 mode++;
 if(mode>5)mode=0;

このような記述だと、mode=0〜5で6回実行されるらしい。なんでだろう。
*2010-04-21-R8C/2Dマイコン開発セット [#z683d27e]
[[kanou]]さんに相談して、これを買ってみました。
http://akizukidenshi.com/catalog/g/gK-03018/

早速LCDモジュールの半田付けをミスりましたorz

*2009年5月1日(金) [#de86a805]
**ADCのタイミング3 [#z671fc75]
タイミング良くADCからの情報を得られない原因が分かりました。
PSoCのADCは、指定されたサンプルレートでデータをPSoCの変数に格納します。
DELSIG11の場合は7.8Kspsなので、およそ0.13msごとにADCが完了します。
したがって、PSoCのプログラム内からは、すでにADCが完了し、変数に格納されている値を呼び出すことしか出来ないです。

#ref(./upload/2009-05-02-graph.png,,,50%)
▲ リセット信号、フォトダイオード、ADCのタイミング

イメージセンサの行リセット信号がOFFになってから、フォトダイオードからの出力電圧が0Vまで落ちるのは、室内蛍光灯の明るさでおよそ500μsなので、これが落ちきる前にすべての行のデータをADCするのは、さすがに不可能です。


*2009年2月12日(木) [#q454dab1]
**ADCのタイミング2 [#y502e5cf]
より高速に動作するADCとして、「DELSIG11」を使ってみました。最高で7.8Kspsであり、およそ100μsの間隔でADCを実行できるので、うまいことタイミングを合わせれば、イメージセンサの出力を意図したタイミングで変換できると思います。

そこで、緑色の信号線が立ち上がった瞬間にADCの結果を読み出す、というようにプログラムを書きましたが、どうも正しい結果が出力されません。
#ref(./upload/delsig.JPG,,,70%)
▲図の青色の信号線が0のときにリセットがかかっています。なぜかリセット時の電圧(1.2〜1.3V)をA/D変換した結果が出力されてしまいます。
そして、変換された結果がかなりばらついています。なんでだろう?

こんな感じのプログラムです。P1[1]が、図の緑色の信号線です。これが"1"になったらADCの結果を取り出すようにしています。

	while(1){
		if((PRT1DR & 0x02) && n==0){ //PRT4DR & 0x10
			//ADC
			while(!DELSIG11_1_fIsDataAvailable());
			isensor = DELSIG11_1_iGetData();
			if(isensor<0) isensor = -(isensor ^ 0xFFFF | 0x0001);
			
			//convert to voltage
			tmp=isensor;
			vol=( (tmp-1024)/1024 * 1.28 + 1.28*2 ) * 1000;			
			
			//UART number to strings
			str = num2str(vol);
			uart_1_putchars(str);
			UART_1_CPutString("\r\n");
			n=1;
		}
		else if((PRT1DR & 0x02)==0){
			n=0;
		}
	}


直流電圧源を使用して変換したときは、正しい結果が安定して出力されていたので、ADCは正しく動作していると思われます。あとは、意図したタイミングでADCの結果を出力することさえ出来ればよいのですが。。


*2009年2月9日(月) [#vbb2c614]
**ADCのタイミング [#f9484601]
ちゃんとデータシートを確認してみると、ADCに与えるべきクロック周波数が間違っていることに気がつきました。そこだけ修正したらちゃんと動作してくれました。

使用していたADCモジュールは「ADCINC14」という、高精度だけど動作が最速でも120spsというものだったのですが、これだと意図したタイミングでデータをとることができませんでした。イメージセンサのフレームレートが10fps程度だったので、これくらいで充分かな?と、深く考えずに使用していましたが、そもそも数msで電圧降下してしまうため、120spsだと(1/120=8.3ms)で動作が間に合わないみたいです。

というわけで、もう少し速いモジュールを使ってみたいと思います。

*2009年2月6日(金) [#fd55f423]
**UART通信成功 [#ze30c996]
2/4のときにはダメでしたが、改めて配線やプロパティ値を確認して見たところ、与えるべきクロックが間違っていました。やはり凡ミスでした。。そこを修正したらうまく動きました。
UARTのAPIに、数字を文字列として返す関数が無いので、自分で1桁ずつ文字に変換して、UART_1_PutCharを用いて出力することにしました。

**ADC [#c1a557fe]
今度はADCがうまく動いてくれません。もう少し詳しくデータシートを読むべきみたいです。。

*2009年2月4日(水) [#a290cf33]
**128×128イメージセンサの測定 [#c688ada9]
まずは(x,y)=(0,0)のイメージセンサを選択して、信号を出力できるかどうか試してみました。単体測定のときと同様の結果が得られました。

**URAT通信 [#a825388e]
イメージセンサからのアナログ信号をA/D変換し、その値をUARTでPCに送信し、画像として表示できるようにしたいと考えています。
まずは(x,y)=(0,0)におけるイメージセンサの信号を変換して、正しくUARTでPCに出力できるかどうか試しています。
#ref(./upload/imagesensor00.JPG,,,70%)
▲(x,y)=(0,0)におけるイメージセンサの信号
#ref(./upload/imagesensor00r.JPG,,,70%)
▲(x,y)=(0,0)におけるイメージセンサの信号(拡大図)
図の緑色の信号は、リセット信号(青)と同じ周波数で、デューティ比の異なる信号で、この緑色の信号が立ち上がるタイミングにおいてアナログ信号をA/D変換するつもりです。

ですが、どういう訳かUARTがうまくいきません。。どこかに凡ミスがあると思うのですが、、、


#ref(./upload/ack001.png,,,60%)
▲常に"0x00"が表示され続ける状態

*2009年2月2日(月) [#vfcc828c]
**イメージセンサ単体の測定2 [#se86d6c1]

確かに、たとえ明るいときであるとはいえ、非常に電圧降下が速いです。なのでもう少し拡大して見てみました。
#ref(./upload/bright_z.JPG,,,70%)
▲明るいとき(拡大図)
電圧は、わずか100μsで0Vに落ちてしまいます。ちなみにこれははんだ部屋の室内蛍光灯を点灯している際に測定したもので、卓上の蛍光灯スタンドを使うと、さらに速く電圧降下します


*2009年1月31日(土) [#ofb3cedc]
**イメージセンサ単体の測定 [#xf8b5815]
イメージセンサ単体の測定を行ってみました。回路構成はこんな感じになっています。
#ref(./upload/imagesensor.png,,,50%)
結果はこのような感じです。バイアス電圧は1.35Vくらいです。
#ref(./upload/dark.JPG,,,70%)
▲暗いとき

#ref(./upload/bright.JPG,,,70%)
▲明るいとき

明るいときの方が、イメージセンサに流れる電流が多く、したがって出力電圧が下がるのが速いことが確認できました。


*2009年1月19日(月) [#wa7e52d5]
**スパム対策 [#w8f34283]
[[質問箱]]にあるフィルタを適用してみましたが、ランダムな文字列のスパム書き込みが未だに消えません。というわけで、今度はUSER_AGENTで監視してみるしかないかも。。 

PukiWiki Plus!用のスパムフィルタ spam_filter.php - モーグルとカバとパウダーの日記
http://d.hatena.ne.jp/stealthinu/20070516/p2

*2009年1月16日(金) [#a7075000]
**Chip測定準備終わる [#ma9cd55e]
ようやく終わりました。。はんだ付けに慣れていなかったため、えらく時間がかかってしまいました。これから、9月試作のChip測定に移りたいと思います。まずは、すでに動作確認がされている、富山商船高専の新田君が作ったNAND回路から行きます。

*2008年12月23日(火) [#k8fe1b85]
**wikiページ整理 [#x67672f0]
過去の日記をアーカイブしたときに、ファイルのリンク切れを防ぐために、[[添付ファイル置き場>./upload]]を作成しました。あとコメント欄も#pcommentで別ページにして統一しました。以前より使いやすくなったかな。。
*2008年12月22日(月) [#b6e72c4b]
**PSoCの動作確認 [#j4c67d7c]
PSoC周辺のはんだ付けが終わったので、DUTソケットをつける前にPSoCの動作確認をしたいと思います。
どんなプログラムで確認しようか。。

*2008年12月18日(木) [#hd816b2c]
**はんだ付け開始 [#r131d944]
いよいよはんだ付けを始めたいと思います。QFPパッケージのはんだ付けは、やはり難しいです。。くっついているように見えてくっついていなかったり、隣どうしのピンが導通してしまったりorz
結局ほとんど[[秋田先生>akita]]にやってもらっちゃいました(;'∀`)

*2008年12月2日(火) [#v7da8eac]
**基盤完成 [#wffc6df9]
ようやく完成しました!
基板製作会社から手直しの依頼がこなければ完成です。
基板をつくるために、注意しなければいけないことがけっこうあるので、まとめていきたいと思っています。。

**基板作成での失敗 [#c9adb1c2]
昨日、ついにPSoCが届きました!
紙に印刷した、原寸大のPCBデータの上にPSoCをおいて、実際にはんだ付けできそうかを確認してみたところ、ランドが狭すぎてはんだ付けできそうにないので、もう少し広げた方がいい、というアドバイスを秋田先生にいただきました。
手直しして1mm程度のばそうとしましたが、これが意外と大変な作業でしたorz
#ref(./upload/base.png)
▲PSoCのQFPパッケージによって、ランドが隠れてしまい、はんだ付けが難しい状態

すでに場所を決めてしまったパッドを動かそうとすると、ランドとくっついてしまったりします。。
また、なぜか部品として呼び出したPSoCのフットプリントのグリッドがうまくあわず、ひとつひとつのパターンを座標を指定しながら移動しないといけなくなり、かなり面倒な作業に…。
QFPパッケージの部品のフットプリントを作る際は、ちゃんと確認しないとえらいことになりますorz

*2008年11月19日(水) [#gba08519]
**基板作成続き [#ca925be4]
PSoC周辺の配線を描いている最中なのですが、CY8C29866-24AXIはTQFPパッケージで、しかも配線間隔が0.5mmという設定なので、いちいちグリッドを2.54mmと切り替えなくてはいけないので、面倒くさいですorz
しかもピンが64ピンもあるので、これが案外やっかいです。うっかり配線をぎりぎりに配置してしまったので、ビアホールが置けなくなってしまったorz
#ref(./upload/pcbe.png)
▲完全にやり直しだorz

先にTQFPまわりの配線をすべてやるべきだったようです。。

#comment();

*2008年11月18日(火) [#c1eacac6]
**基板作成の下準備 [#f74a165b]
下準備するだけでずいぶんと時間がかかってしまいましたorz
下準備というのは
+回路の構成(PSOCとChipをどうつなぐか、など)を考える
+使用するパーツを一覧にまとめる
+DUT(VDECのChipを測定するのに使うソケットが乗っかっている基板)の寸法を調べる
+PSOC miniprog、DC電源ジャック、UARTモジュールについて知る(つなぎ方とか…)

などです。

**基板作成 [#d0b71b6b]
さっそくPCBEを使って描くことにします。
秋田先生、北川先生のマニュアルページがすごく参考になりました。
-PCBEによる基板設計の手引き
http://akita11.jp/plan/pcbeguide/
-PCBE Quick Start
http://jaco.ec.t.kanazawa-u.ac.jp/edu/vlsi/pcbe/index.html

どうしても、PCBEとVirtuosoの操作を混同してしまいます。。

#comment();

*2008年11月8日(土) [#wf8cdad8]
**PSoC CY8C29866-24AXI [#ne892e53]
Chip測定環境としてPSoC CY8C29866-24AXIを使うことになりました。PSoCのくせに100ピン(そのうち、I/Oピンは64個)もあります!!
しかし、性能はCY8C29466と同じようだ。ただピン数が増えただけかorz
- こまっちもマイコンブデビューだな -- [[kondo]] &new{2008-11-10 (月) 07:32:34};
- よく考えたらPCとの通信に2本(UARTなら)とられるので、2本たりなくなりますね>VDEC QFP80 まあこれぐらいはしょうがないか・・・PSoCを2個載せておいておけば、なんとかなるか。例の「必要に応じてジャンパ線で接続」メカニズムを使えば、PSoCどうしの配線もできますね。 -- [[akita]] &new{2008-11-12 (水) 15:04:25};

#comment();
*2008年5月15日(木) [#f66bfec8]
**MeRLマイコン部Wikiのロゴを作成しましたorz [#wb87da1f]
-「マイコンブ」…[[ドラえ文字:http://moonglow.moo.jp/]]((すでに公開されてないorz))
-「merl microcontroller team」…[[bn internet:http://www.showfont.net/]]
というフォントを使用しました。

あと、全体的には[[Inkscape:http://www.forest.impress.co.jp/lib/pic/piccam/paint/inkscape.html]]を使って編集しときました。

#ref(./upload/mykombu_logo.png,nolink);
~
#ref(./upload/logo_miconb.svg);
▲svg形式のファイル

#ref(./upload/logo_miconb_path.svg);
▲svg形式(フォントをパスに変換したもの)のファイル((フォントをインストールしなくてもファイルを開けますが、編集はしにくいです))


あと、faviconも作っちゃいましたorz
#ref(./upload/favicon.png,,,50%);
▲favicon用のPNGファイル

これを[[IrfanView:http://www8.plala.or.jp/kusutaku/iview/]]を使って縮小して、.icoで保存しました。
- 完全に今更ですが、ドラえ文字持ってるので、誰か欲しかったら言ってください。 -- [[ミシェル]] &new{2009-02-03 (火) 01:26:57};
- ドラえ文字フォントください。おねがいします。 -- [[あきぼう]] &new{2009-04-22 (水) 23:42:39};
- どら絵文字探してました、欲しいんですが、もらえますか?goto@deno.co.jp -- [[ゴッちャん]] &new{2010-01-03 (日) 10:39:45};
- どら絵文字探してました、欲しいんですが、もらえますか? -- [[ゴッちャん]] &new{2010-01-03 (日) 10:38:38};
- どら絵文字探してました、欲しいんですが、もらえますか?goto@deno.co.jp -- [[ゴッちャん]] &new{2010-01-03 (日) 10:39:35};

#comment();


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS