#305 support for CM5(L) and Pi500
This commit is contained in:
@@ -88,11 +88,18 @@ int main (void) {
|
|||||||
fExpectTimepinMode = 0.121; //us
|
fExpectTimepinMode = 0.121; //us
|
||||||
fWriteReadDelayFactor = 1.86;
|
fWriteReadDelayFactor = 1.86;
|
||||||
break;
|
break;
|
||||||
case PI_MODEL_5:
|
default:
|
||||||
fExpectTimedigitalWrite = 0.025; //us
|
if (piRP1Model()) {
|
||||||
fExpectTimedigitalRead = 0.323; //us
|
// So far expect all Pi5 / RP1 hardware has same performance
|
||||||
fExpectTimepinMode = 0.200; //us
|
printf("Raspberry Pi with RP1 chip found\n");
|
||||||
fWriteReadDelayFactor = 3.2;
|
fExpectTimedigitalWrite = 0.025; //us
|
||||||
|
fExpectTimedigitalRead = 0.323; //us
|
||||||
|
fExpectTimepinMode = 0.200; //us
|
||||||
|
fWriteReadDelayFactor = 3.2;
|
||||||
|
} else {
|
||||||
|
printf("Unknown Raspberry Pi found, exit\n");
|
||||||
|
return(EXIT_FAILURE);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fWriteReadFactor = fExpectTimedigitalRead/fExpectTimedigitalWrite;
|
fWriteReadFactor = fExpectTimedigitalRead/fExpectTimedigitalWrite;
|
||||||
@@ -123,7 +130,7 @@ int main (void) {
|
|||||||
gettimeofday(&t2, NULL);
|
gettimeofday(&t2, NULL);
|
||||||
double OpTimeRead = ReportElapedTime("digitalRead", 2, fExpectTimedigitalRead, t1, t2);
|
double OpTimeRead = ReportElapedTime("digitalRead", 2, fExpectTimedigitalRead, t1, t2);
|
||||||
|
|
||||||
if (RaspberryPiModel!=PI_MODEL_5) {
|
if (!piRP1Model()) {
|
||||||
ToggleValue /= 4;
|
ToggleValue /= 4;
|
||||||
} else {
|
} else {
|
||||||
ToggleValue *= 1.5;
|
ToggleValue *= 1.5;
|
||||||
@@ -148,7 +155,7 @@ int main (void) {
|
|||||||
gettimeofday(&t2, NULL);
|
gettimeofday(&t2, NULL);
|
||||||
ReportElapedTime("pinMode and digitalWrite", 2, fExpectTimepinMode+fExpectTimedigitalWrite, t1, t2);
|
ReportElapedTime("pinMode and digitalWrite", 2, fExpectTimepinMode+fExpectTimedigitalWrite, t1, t2);
|
||||||
|
|
||||||
if (RaspberryPiModel!=PI_MODEL_5) {
|
if (!piRP1Model()) {
|
||||||
ToggleValue *= 1.5;
|
ToggleValue *= 1.5;
|
||||||
} else {
|
} else {
|
||||||
ToggleValue /= 5;
|
ToggleValue /= 5;
|
||||||
@@ -168,8 +175,8 @@ int main (void) {
|
|||||||
printf("\n");
|
printf("\n");
|
||||||
CheckSameFloat("digitalWrite vs. digitalRead factor", OpTimeRead/OpTimeWrite, fWriteReadFactor, 0.3);
|
CheckSameFloat("digitalWrite vs. digitalRead factor", OpTimeRead/OpTimeWrite, fWriteReadFactor, 0.3);
|
||||||
CheckSameFloat("digitalWrite and digitalRead alternating factor", fTimePerOperation/(fExpectTimedigitalWrite+fExpectTimedigitalRead), fWriteReadDelayFactor, 0.2);
|
CheckSameFloat("digitalWrite and digitalRead alternating factor", fTimePerOperation/(fExpectTimedigitalWrite+fExpectTimedigitalRead), fWriteReadDelayFactor, 0.2);
|
||||||
if (RaspberryPiModel==PI_MODEL_5) {
|
if (piRP1Model()) {
|
||||||
printf("\nRasperry Pi 5:\n");
|
printf("\nRasperry Pi with RP1 chip:\n");
|
||||||
printf(" * digitalRead has very slow speed, much slower then digitalWrite, factor %.1f (typical Pi4 ~1.9)\n", fWriteReadFactor);
|
printf(" * digitalRead has very slow speed, much slower then digitalWrite, factor %.1f (typical Pi4 ~1.9)\n", fWriteReadFactor);
|
||||||
printf(" * Alternating read/write operation has slow speed, factor %.2f (typical Pi4 ~1.86) to single operation time\n", fWriteReadDelayFactor);
|
printf(" * Alternating read/write operation has slow speed, factor %.2f (typical Pi4 ~1.86) to single operation time\n", fWriteReadDelayFactor);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user