#346 ajust unit test for Pi1
This commit is contained in:
@@ -12,6 +12,7 @@ int GPIO = 19;
|
|||||||
int GPIOIN = 26;
|
int GPIOIN = 26;
|
||||||
const int ToggleValue = 4;
|
const int ToggleValue = 4;
|
||||||
float irq_timstamp_duration_ms = 0;
|
float irq_timstamp_duration_ms = 0;
|
||||||
|
float accuracy = 0.01;
|
||||||
|
|
||||||
static volatile int globalCounter;
|
static volatile int globalCounter;
|
||||||
volatile long long gStartTime, gEndTime;
|
volatile long long gStartTime, gEndTime;
|
||||||
@@ -56,6 +57,7 @@ static void ISR2(struct WPIWfiStatus wfiStatus) {
|
|||||||
wfiStatusOld = wfiStatus;
|
wfiStatusOld = wfiStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void digitalWriteBounce(int OUTpin, int value, int bounce) {
|
void digitalWriteBounce(int OUTpin, int value, int bounce) {
|
||||||
digitalWrite(OUTpin, value);
|
digitalWrite(OUTpin, value);
|
||||||
if (bounce>0) {
|
if (bounce>0) {
|
||||||
@@ -66,6 +68,16 @@ void digitalWriteBounce(int OUTpin, int value, int bounce) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DelayAndSumDuration(int ms, float* irq_timstamp_sum, const int doSum) {
|
||||||
|
delay(20);
|
||||||
|
if (doSum) {
|
||||||
|
*irq_timstamp_sum += irq_timstamp_duration_ms;
|
||||||
|
}
|
||||||
|
delay(ms-20);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
double StartSequence2(int Edge, int OUTpin, int INpin, int bounce) {
|
double StartSequence2(int Edge, int OUTpin, int INpin, int bounce) {
|
||||||
int expected;
|
int expected;
|
||||||
float timeExpected_ms;
|
float timeExpected_ms;
|
||||||
@@ -76,26 +88,17 @@ double StartSequence2(int Edge, int OUTpin, int INpin, int bounce) {
|
|||||||
globalCounter = 0;
|
globalCounter = 0;
|
||||||
printf("Start\n");
|
printf("Start\n");
|
||||||
digitalWriteBounce(OUTpin, HIGH, bounce);
|
digitalWriteBounce(OUTpin, HIGH, bounce);
|
||||||
delay(10);
|
delay(200);
|
||||||
delay(190);
|
|
||||||
digitalWriteBounce(OUTpin, LOW, bounce);
|
digitalWriteBounce(OUTpin, LOW, bounce);
|
||||||
delay(10);
|
DelayAndSumDuration(100, &irq_timstamp_sum, INT_EDGE_BOTH == Edge);
|
||||||
if (INT_EDGE_BOTH == Edge) {
|
|
||||||
irq_timstamp_sum += irq_timstamp_duration_ms;
|
|
||||||
}
|
|
||||||
delay(90);
|
|
||||||
digitalWriteBounce(OUTpin, HIGH, bounce);
|
digitalWriteBounce(OUTpin, HIGH, bounce);
|
||||||
delay(10);
|
DelayAndSumDuration(200, &irq_timstamp_sum, INT_EDGE_RISING == Edge || INT_EDGE_BOTH == Edge);
|
||||||
if (INT_EDGE_RISING == Edge || INT_EDGE_BOTH == Edge) {
|
|
||||||
irq_timstamp_sum += irq_timstamp_duration_ms;
|
|
||||||
}
|
|
||||||
delay(190);
|
|
||||||
digitalWriteBounce(OUTpin, LOW, bounce);
|
digitalWriteBounce(OUTpin, LOW, bounce);
|
||||||
delay(10);
|
DelayAndSumDuration(100, &irq_timstamp_sum, INT_EDGE_FALLING == Edge || INT_EDGE_BOTH == Edge);
|
||||||
if (INT_EDGE_FALLING == Edge || INT_EDGE_BOTH == Edge) {
|
|
||||||
irq_timstamp_sum += irq_timstamp_duration_ms;
|
|
||||||
}
|
|
||||||
delay(90);
|
|
||||||
printf("Stop\n");
|
printf("Stop\n");
|
||||||
int globalCounterCopy = globalCounter;
|
int globalCounterCopy = globalCounter;
|
||||||
|
|
||||||
@@ -111,9 +114,9 @@ double StartSequence2(int Edge, int OUTpin, int INpin, int bounce) {
|
|||||||
char str[1024];
|
char str[1024];
|
||||||
float fTime = (gEndTime - gStartTime) / 1000.0;
|
float fTime = (gEndTime - gStartTime) / 1000.0;
|
||||||
sprintf(str, "IRQ measured %g msec (~%g expected)", fTime, timeExpected_ms);
|
sprintf(str, "IRQ measured %g msec (~%g expected)", fTime, timeExpected_ms);
|
||||||
CheckSameFloat(str, fTime, timeExpected_ms, timeExpected_ms*0.01);
|
CheckSameFloat(str, fTime, timeExpected_ms, timeExpected_ms*accuracy);
|
||||||
sprintf(str, "IRQ timestamp %g msec (~%g expected)", irq_timstamp_sum, timeExpected_ms);
|
sprintf(str, "IRQ timestamp %g msec (~%g expected)", irq_timstamp_sum, timeExpected_ms);
|
||||||
CheckSameFloat(str, irq_timstamp_sum, timeExpected_ms, timeExpected_ms*0.01);
|
CheckSameFloat(str, irq_timstamp_sum, timeExpected_ms, timeExpected_ms*accuracy);
|
||||||
// new data struct
|
// new data struct
|
||||||
CheckSame("GPIO IRQ pin", wfiStatusOld.pinBCM, INpin);
|
CheckSame("GPIO IRQ pin", wfiStatusOld.pinBCM, INpin);
|
||||||
if (INT_EDGE_FALLING==Edge || INT_EDGE_RISING==Edge) {
|
if (INT_EDGE_FALLING==Edge || INT_EDGE_RISING==Edge) {
|
||||||
@@ -186,7 +189,23 @@ int main (void) {
|
|||||||
printf("WiringPi GPIO test program 6b (using GPIO%d (output) and GPIO%d (input))\n", GPIO, GPIOIN);
|
printf("WiringPi GPIO test program 6b (using GPIO%d (output) and GPIO%d (input))\n", GPIO, GPIOIN);
|
||||||
printf("ISR and ISR2 test (WiringPi %d.%d)\n", major, minor);
|
printf("ISR and ISR2 test (WiringPi %d.%d)\n", major, minor);
|
||||||
|
|
||||||
wiringPiSetupGpio() ;
|
wiringPiSetupGpio();
|
||||||
|
|
||||||
|
int RaspberryPiModel, rev, mem, maker, overVolted;
|
||||||
|
piBoardId(&RaspberryPiModel, &rev, &mem, &maker, &overVolted);
|
||||||
|
CheckNotSame("Model: ", RaspberryPiModel, -1);
|
||||||
|
switch(RaspberryPiModel) {
|
||||||
|
case PI_MODEL_A:
|
||||||
|
case PI_MODEL_B: //ARM=800MHz
|
||||||
|
case PI_MODEL_BP:
|
||||||
|
case PI_MODEL_AP:
|
||||||
|
case PI_MODEL_CM:
|
||||||
|
accuracy = 0.02;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
accuracy = 0.01;
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (!piBoard40Pin()) {
|
if (!piBoard40Pin()) {
|
||||||
GPIO = 23;
|
GPIO = 23;
|
||||||
GPIOIN = 24;
|
GPIOIN = 24;
|
||||||
@@ -194,7 +213,7 @@ int main (void) {
|
|||||||
int IRQpin = GPIOIN;
|
int IRQpin = GPIOIN;
|
||||||
int OUTpin = GPIO;
|
int OUTpin = GPIO;
|
||||||
|
|
||||||
wiringPiISR2(13, INT_EDGE_RISING, &ISR2, 0); // next pin
|
//wiringPiISR2(13, INT_EDGE_RISING, &ISR2, 0); // next pin
|
||||||
|
|
||||||
memset(&wfiStatusOld, 0, sizeof(wfiStatusOld));
|
memset(&wfiStatusOld, 0, sizeof(wfiStatusOld));
|
||||||
|
|
||||||
@@ -202,7 +221,6 @@ int main (void) {
|
|||||||
pinMode(OUTpin, OUTPUT);
|
pinMode(OUTpin, OUTPUT);
|
||||||
digitalWrite (OUTpin, LOW) ;
|
digitalWrite (OUTpin, LOW) ;
|
||||||
|
|
||||||
/// --------------------
|
|
||||||
for (int bounce=0; bounce<=1; bounce++) {
|
for (int bounce=0; bounce<=1; bounce++) {
|
||||||
unsigned long bouncetime = 0;
|
unsigned long bouncetime = 0;
|
||||||
if (0==bounce) {
|
if (0==bounce) {
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ int main (void) {
|
|||||||
case PI_MODEL_ZERO_W: //ARM=1000MHz
|
case PI_MODEL_ZERO_W: //ARM=1000MHz
|
||||||
fExpectTimedigitalWrite = 0.104; //us;
|
fExpectTimedigitalWrite = 0.104; //us;
|
||||||
fExpectTimedigitalRead = 0.135; //us
|
fExpectTimedigitalRead = 0.135; //us
|
||||||
fExpectTimepinMode = 0.250; //us
|
fExpectTimepinMode = 0.280; //us
|
||||||
break;
|
break;
|
||||||
case PI_MODEL_2:
|
case PI_MODEL_2:
|
||||||
ToggleValue /= 4;
|
ToggleValue /= 4;
|
||||||
|
|||||||
Reference in New Issue
Block a user