Hallo!
Kurze Frage:
Ich arbeite im Moment an einem Projekt mit dem schon etwas in die Jahre
gekommenen XC886 (bzw. allgemein der XC800 Serie) von Infineon. 8051
Architektur.
Laut Infineon Datenblatt hat der Chip eine MDU - Multiplication and
Division Unit und soll laut Datenblatt für eine Operation uint16_t x
uint16_t mit Ergebis uint32_t 16 Clockzyklen brauchen.
Da der Chip intern mit 24MHz arbeitet, sind das also rechnerisch etwa
0,67 Mikrosekunden.
Zeitmessungen für die Rechnung:
1 | tmpVal = (uint16_t)(uwADC_UinRect * uwPINCONTROLL_Pdev);
|
Ergeben aber ziemlich genau 6,04 Mikrosekunden.
(Pin vorher high, Pin nachher low, mit Oszi gemessen)
Frage: woher kommt dieser Unterschied?
Meine Ideen:
-> die MDU wird nicht verwendet.
-> Lade und Rückschreibezeiten von RAM-Register machen die Rechnung
kaputt, zumal Memory Model "Large - Variables in XDATA" gewählt wurde
(Kompiliert wird mit uVision Studio, Keil Cx51 Compiler in Version
v9.03 -> das ist nicht die aktuellste)
Vielen Dank für Fragen, kritische Anmerkungen und Unterstützung. =)