また受信側の割り込み処理関数もそれに合わせて変更となりました。
まず、送信側(こちらがデバッグするターゲットのソフトだと思ってください。)のソースコードです。
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の値も読めないかなあと思っています。実際にその場面になったら確認してみます。
【このカテゴリーの最新記事】
- no image
- no image
- no image