目次

メニュー†

↑

kondoへのコメント†


↑

過去の日記†

↑

2008年05月24日(土)†

↑

文字が正しくPutStringで表示されない→\0を忘れない†

どうやら\0、NULL文字を入れ忘れたせいらしい。
NULL文字まで出力してくれるというのが、PutStringらしい。

↑

SDカードの書き込み時の限界は256バイトらしい(CR含めて)†

100バイト同時もOKだったが、
1000バイト書き込むと、どうやらエコーも256バイトまでのようだ。

CRも含めて256バイト
なので、文字列は、最大255バイトまでなら送ってもいいようだ。

↑

RXバッファをクリアしたいが、できない†

UART_SDCARD_CmdReset();を入れただけでは、
解決しないようだ。

↑

2008年05月23日(金)†

↑

エコーオフの信号を送った時に、>が返ってきていたのが原因†

// Echo off.
UART_SDCARD_PutString(SDcmd[SD_E0]);
UART_SDCARD_PutChar(CR);
	while(1){
			//Menu Select
			SW = UART_PC_cGetChar();
			
			switch(SW){
					case 49: //1
						UART_SDCARD_PutString(SDcmd[SD_E0]);
						UART_SDCARD_PutChar(CR);
						Receive_func();
						break;
						

エコーオフの>がRXバッファに残る

��iを送信後、Receive_func();で読み取るが、エコーオフの>を読み取り終了
結局、iで返ってきた情報が読めず。。

��iのコマンドの最後だけ、>だけがまた残る(Rxバッファはおそらく1バイトなので)

�´△侶�り返し
おそらくこんなことが起こっていたのだろう。。(汗

↑

バッファオーバーランエラーのフラグを見ればいいとのこと。†

秋田先生に報告したら、
バッファオーバーランエラーのフラグを見てやればよかったね、とのこと。
たしかにそうだ。RxState()で状況を判断すれば、もう少し早く問題を
解決できたかもしれない。
今後の参考にしよう。

↑

解決策、SDCARDから受信しているところにピンを立て、PCであくのりっちで観察†

結局、今回の場合は、意外なところで>が返ってきていたので、
気づかなかったわけである。
だから、ピンを立てて、直接返ってきている信号を見てやれば、解決しそうだ。

↑

なぜかうまくいかない、あくのりっちが固まる†

あくのりっちが突然固まる。
次に再起動しても、2ポートにCP2102を使えないっぽい。

↑

2008年5月22日(木)†

↑

コメントが間に入ると受信する場所が変わってしまう†

UART_PC_CPutString("test3!!\r\n");
	
	//Receive Prompt
	while ( !( RxState =UART_SDCARD_bReadRxStatus() & UART_SDCARD_RX_COMPLETE )){}
	if( RxState == UART_SDCARD_RX_COMPLETE){
		//Start Receive 	
		Receive_Prompt = UART_SDCARD_cGetChar();
		if(Receive_Prompt == 0x3e){
			UART_PC_CPutString("Prompt >");
			
		

このプログラムの一行目をコメントアウトすると、
”>”が受け取れなくなった。どうやらCPutStringしているところをコメントアウトすると、
エコーをcGetCharで受信してしまうようだ。
エコーはオフにしておいた方がよさそうだ。

↑

CPutStringで100バイト分出力していたけど†

プロンプトまでか、100バイトまでを読み込んだ後にCPutStringで出力していたが、
これだと100バイト分出力されてしまうので、おかしくなる。
CWriteで指定バイト分だけ出力した方がよさそうだ。
char Receive_Data[100];
UART_PC_PutString(Receive_Data);

↑

cGetCharでの取り込み†

while ( !( UART_PC_bReadRxStatus() & UART_PC_RX_COMPLETE )){}
	while(1){
		if( (Receive_Data = UART_PC_cGetChar()) != 0x3e ){ // ">" de nainara
			UART_PC_PutChar(Receive_Data);
		}else{
			break;
		}
	}
	

while ( !( UART_PC_bReadRxStatus() & UART_PC_RX_COMPLETE )){}
は、cGetCharではいらないっぽい。
よく考えてみれば、cGetCharは、受信するまで待ってくれる

↑

割り込みの許可・不許可を関数毎に切替できる†

UART_PC_IntCntl(UART_PC_ENABLE_RX_INT); // Enable RX interrupts
UART_PC_IntCntl(UART_PC_DISABLE_RX_INT);
を明示してやれば、受信割り込みの許可・不許可の切替可能
こうすれば、前の受信割り込みの問題を解決できるかもしれない。

↑

2008年05月21日(水)†

↑

UART通信のサンプルプログラムを少し改良してみる†

↑

PSoCのUART通信を試す†

今更ながら、もう一度PSoCのUART通信について、試してみようと思う。
自分への備忘録。

↑

cGetCharで文字を取り込む†

3eである“>”を受信するまで、繰り返しcGetCharで取り込むというプログラム。

	char Receive_Data;
	while((Receive_Data = UART_PC_cGetChar()) != 0x3e ){ // ">" de nainara
		UART_PC_PutChar(Receive_Data);
	}

しばらく動かなかったが、どうやら原因は、
UART_PC_IntCntl(UART_PC_ENABLE_RX_INT); // Enable RX interrupts
が入っていたためらしい。

前に先生に聞いたことあったのに、忘れていた。。(汗
cGetChar自体はRXの割り込みを使っていないので、コメントアウトしないといけないみたい。
ということは、szGetParamとかと一緒に使う時には、
その都度切替が必要なのかな。

↑

UART通信のサンプルプログラムを少し改良してみる†

UART通信のサンプルプログラムは、
コマンドを入力して、コマンドとパラメータを分離するようなプログラム。

これを普通の文字列を取り込むプログラムにしておきたい。

	char *strPtr;
	UART_PC_CPutString("\r\nWelcome to PSoC UART test program. V1.1 \r\n");
	while(1){
		if(UART_PC_bCmdCheck()){
			while(strPtr = UART_PC_szGetParam()) { // loop on each parameter	
				UART_PC_CPutString("   <");
				UART_PC_PutString(strPtr);			// Print each parameter    
				UART_PC_CPutString(">\r\n");	
			 }
		}
	   UART_PC_CmdReset();							// Reset command buffer 	  
	}

これが何故かうまく動かない。。
ほとんどサンプルと同じなんだけどな、、

↑

大量にエラーが増えた場合→かっこの数を確認しよう。†

ちょっとプログラム変えたら、意味不明なエラーが大量に出てきた。

単純なミスだけど、すごく発見しづらい。。
PSoCのエディタは、見づらいので、他のエディタで作成するというのも
ありかもしれない。

↑

2008年05月15日(木)†

↑

MeRLマイコン部Wikiを作成しました。†

今年の情報共有方法は、Wikiにすることにしました。
MeRLWikiで使い慣れているということもあるし。
どこまで浸透するかな〜〜


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