/**************************************/
/* SENSITEC Evaluationkit EBK7000 */
/* Version: 0.1 / 16.23.2016 */
/* Author: R.Buß */
/*------------------------------------*/
/* Description: */
/* PGA - Control */
/* Setting the iC-TW2 (Interpolator) */
/* Install the TW2 library first! */
/* Serial setting: 57600 baud */
/* */
/* software only for evaluation! */
/**************************************/
//INCLUDES
#include <TW2.h>
TW2 TW2(13,12); //Init TW2 SCL- and SDA-Port
//DEFINES
#define VERSION "v0.1"
#define LED_INFO 11
#define LED_PROG 12
#define PGA_ADDR3 10
#define PGA_ADDR2 9
#define PGA_ADDR1 8
//GLOBALS
char Button;
char Buffer[16];
unsigned char Adress = 0;
unsigned char Data = 0;
char Delimiter[] = ",;";
char *ptr;
int Value=0;
int PGA_Dip;
int PGA_Gain[]={1,2,4,8,16,32,64,128};
int TW2_Backup[]={130,16,64,0,1,127,11,1,0,0,18,8,0,0,0,0};
void setup() {
Serial.begin(57600);
pinMode(LED_INFO, OUTPUT);
Show_Menu();
}
void loop() {
int n=0;
if (Serial.available() > 0) { //check serial buffer
Button = Serial.read();
switch(Button)
{
case '?':
Show_Menu();
break;
case 'i':
Show_Info();
break;
case 'v': //show version
Serial.println(VERSION);
break;
case 'G': //read PGA-Setting
PGA_Show_Settings();
break;
case 'R': //read all TW2 settings
TW2_Read_all();
break;
case 'S': //Save settings to EEPROM
TW2_Save2EEPROM();
break;
case 'B': //Restore default iC-TW2 values
TW2_Restore_Backup();
break;
case 'r': //read single address of TW2
TW2_Read_Register();
break;
case 'w': //write single address of TW2
TW2_Write_register();
break;
case 'l': //switch on the info LED
digitalWrite(LED_INFO,HIGH);
break;
}
}
}
void Show_Menu(){
Serial.println("Sensitec Evaluationboard EBK7000");
Serial.println("--------------------------------");
Serial.println("?\t\t - this overview");
Serial.println("v\t\t - show firmware version");
Serial.println("a\t\t - show gain settings");
Serial.println("B\t\t - TW2 Restore EEPROM");
Serial.println("R\t\t - TW2 Read all registers");
Serial.println("r[addr]\t\t - TW2 Read single register");
Serial.println("w[addr];[data]\t - TW2 Write single register");
Serial.println("S\t\t - TW2 Save to EEPROM");
Serial.println(" ");
}
void Show_Info(void){
Serial.println("Informations");
Serial.println("------------");
PGA_Show_Settings();
Serial.print("TW2 Position: ");
if(TW2.read_TW2_Reg(0x0F)&&0x08)
Serial.println(TW2.read_TW2_Reg(0x0F));
else
Serial.println("Monitor disabled");
Serial.print("TW2 Resolution: ");
Serial.println(TW2.read_TW2_Reg(0x02));
Serial.print("TW2 Z-Position: ");
Serial.println(TW2.read_TW2_Reg(0x03));
Serial.print("TW2 Z-Width: ");
Serial.println(TW2.read_TW2_Reg(0x04));
Serial.print("TW2 Gain(coarse): ");
Serial.println(TW2.read_TW2_Reg(0x07)&0x07);
Serial.print("TW2 Gain(A): ");
Serial.println(TW2.read_TW2_Reg(0x07)&0x18);
Serial.print("TW2 Gain(B): ");
Serial.println(TW2.read_TW2_Reg(0x07)&0x50);
Serial.print("TW2 Offset(A): ");
Serial.println(TW2.read_TW2_Reg(0x08));
Serial.print("TW2 Offset(B): ");
Serial.println(TW2.read_TW2_Reg(0x09));
Serial.print("TW2 Offset(Z): ");
Serial.println(TW2.read_TW2_Reg(0x0B)&0xF0);
}
void PGA_Show_Settings(void){
int tempvalue;
pinMode(PGA_ADDR1, INPUT);
pinMode(PGA_ADDR2, INPUT);
pinMode(PGA_ADDR3, INPUT);
tempvalue = digitalRead(PGA_ADDR3);
PGA_Dip = tempvalue;
PGA_Dip <<= 1;
tempvalue = digitalRead(PGA_ADDR2);
PGA_Dip |= tempvalue;
PGA_Dip <<= 1;
tempvalue = digitalRead(PGA_ADDR1);
PGA_Dip |= tempvalue;
Serial.print("PGA Gain: ");
Serial.println(PGA_Gain[PGA_Dip]);
}
void TW2_Read_all(void){
Serial.println("Adress:\tData:");
for(int i=0;i<16;i++){
Serial.print(i);
Serial.print("\t");
Serial.println(TW2.read_TW2_Reg(i));
delay(1);
}
}
void TW2_Read_Register(void){
int n=Serial.readBytesUntil('\n',Buffer,10);
Buffer[n]='\0';
Serial.print("read Register: ");
Adress=atoi(Buffer);
Serial.print(Adress);
Serial.print("\tData: ");
Serial.println(TW2.read_TW2_Reg(Adress));
}
void TW2_Write_register(void){
int n=Serial.readBytesUntil('\n',Buffer,10);
Buffer[n]='\0';
ptr = strtok(Buffer, Delimiter);
if(ptr != NULL) {
Adress = atoi(ptr);
ptr = strtok(NULL, Delimiter); // next part
Data = atoi(ptr);
}
Serial.print("write Register: ");
Serial.print(Adress);
Serial.print("\tData: ");
Serial.println(Data);
TW2.write_TW2_Reg(Adress, Data);
delay(1);
}
void TW2_Restore_Backup(void){
for(int i=0;i<16;i++){
TW2.write_TW2_Reg(i, TW2_Backup[i]);
delay(1);
}
TW2.write_TW2_Reg(14,64);
delay(100);
}
void TW2_Save2EEPROM(void){
TW2.write_TW2_Reg(14,64);
delay(100);
}
Der Code ist von der Herstellerseite mit dem Dateinamen (EBK7000_PGA_TW2)
Aus meinem Wissensstand kann das doch nicht der Code sein um daten zu messen, oder ? Da das Programm ja im loop teil mit eine switch anweisung beginnt auch wenn ich den virtuellen monitor aufhabe und z.B. einen Buchstaben drücke passiert nichts...
Würde euch der Code etwas sagen, also wüsstet ihr was er Grob macht, und woher wiess ich welche sensor jetzt angeschlossen ist und welcher angesprochen ist ?
Zu dem Kit habe ich 4 Sensoren die ich an das shield anschließen kann ein Hauptsensor und den Referenzsensor.
Weiss man aus dem Code welcher Sensor angesprochen ist und wie sie zusammenarbeiten oder arbeiten sie überhaupt zusammen ?Habe nochmal neu angehängt danke für die schnellen antworten Tommy
Gruß mika