2016年07月02日
デバッグ関数を改良しました
実際にデバッグ関数を使ってみて、やはりint型の変数の値を知りたくなったので、デバッグ関数を改良しました。
また受信側の割り込み処理関数もそれに合わせて変更となりました。
まず、送信側(こちらがデバッグするターゲットのソフトだと思ってください。)のソースコードです。
master_writer2
今回、void debugIntPrint(char thisStr[], int variable)を追加しました。int型の変数の値を読みたかったからです。これで、2バイトのregisterの値も読めないかなあと思っています。実際にその場面になったら確認してみます。
また受信側の割り込み処理関数もそれに合わせて変更となりました。
まず、送信側(こちらがデバッグするターゲットのソフトだと思ってください。)のソースコードです。
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
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/5210039
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック