アフィリエイト広告を利用しています
Ad×Ad


Ad×Adは表示されるだけで報酬がもらえます。
以下から登録すると100ptもらえます。
 →  アドアド -あなたの街の無料広告サイト-
検索
最新記事

広告

posted by fanblog

2016年07月02日

デバッグ関数を改良しました

実際にデバッグ関数を使ってみて、やはりint型の変数の値を知りたくなったので、デバッグ関数を改良しました。
また受信側の割り込み処理関数もそれに合わせて変更となりました。

まず、送信側(こちらがデバッグするターゲットのソフトだと思ってください。)のソースコードです。

master_writer2


// Wire Master Writer
// by Nicholas Zambetti < http://www.zambetti.com >

// Demonstrates use of the Wire library
// Writes data to an I2C/TWI slave device
// Refer to the "Wire Slave Receiver" example for use with this

// Created 29 March 2006

// This example code is in the public domain.


#include < Wire . h >

byte x [ 2 ] ; //for a serial number
const int startButton = 7 ;

void setup ( ) {
Wire . begin ( ) ; // join i2c bus (address optional for master)
pinMode ( startButton , INPUT ) ;
Serial . print ( "startButton = " ) ;
Serial . println ( startButton ) ;
Serial . print ( "buttonState = " ) ;
Serial . println ( digitalRead ( startButton ) ) ;
x [ 0 ] = 0 ;
x [ 1 ] = 0 ;
}

void debugPrint ( char thisStr [ ] ) {
Wire . beginTransmission ( 8 ) ; // transmit to device #8
Wire . write ( thisStr ) ; // sends charcters
Wire . write ( x [ 0 ] ) ; // sends one byte
Wire . write ( x [ 1 ] ) ; // sends one byte
Wire . endTransmission ( ) ; // stop transmitting
if ( x [ 0 ] == 255 ) {
x [ 1 ] ++ ;
}
x [ 0 ] ++ ;
}

void debugRegPrint ( char thisStr [ ] , byte regValue ) {
Wire . beginTransmission ( 8 ) ; // transmit to device #8
Wire . write ( thisStr ) ; // sends charcters
Wire . write ( regValue ) ; // sends one byte
Wire . write ( 0 ) ; // dummy byte(debugPrintと揃える為)
Wire . endTransmission ( ) ; // stop transmitting
}

void debugIntPrint ( char thisStr [ ] , int variable ) {
Wire . beginTransmission ( 8 ) ; // transmit to device #8
Wire . write ( thisStr ) ; // sends charcters
Wire . write ( ( byte ) variable ) ; // sends low byte
Wire . write ( ( byte ) ( variable >> 8 ) ) ; // sends high byte
Wire . endTransmission ( ) ; // stop transmitting
}

void breakPoint ( void ) {
while ( 1 ) {
if ( digitalRead ( startButton ) == LOW ) {
delay ( 500 ) ; //wait a finger to take off
break ; //when the startButton got pushed
}
}
}

void loop ( ) {
debugPrint ( "You can write keywords" ) ; //ここは適当な文字列
debugRegPrint ( "TWBR*" , TWBR ) ; //read TWBR reg.  レジスター名には*をつける
debugRegPrint ( "TWSR*" , TWSR ) ; //read TWSR reg.
debugIntPrint ( "2byteReg*" , 3841 ) ; //ex. 0xF01
debugIntPrint ( "Integer" , 11000 ) ; //ex. 1100
breakPoint ( ) ;
}



今回、void debugIntPrint(char thisStr[], int variable)を追加しました。int型の変数の値を読みたかったからです。これで、2バイトのregisterの値も読めないかなあと思っています。実際にその場面になったら確認してみます。
この記事へのコメント
コメントを書く

お名前: 必須項目

メールアドレス: 必須項目


ホームページアドレス: 必須項目

コメント: 必須項目

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/5210039
※ブログオーナーが承認したトラックバックのみ表示されます。

※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は30日以上新しい記事の更新がないブログに表示されております。

Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: