Das hatte mich nun doch überrascht. Bei einem Testaufbau hatte ich schnell eine Dummyausgabe geschrieben, die mir in Abständen etwas über UART aufs Terminal ausgibt. Der Code im Hauptprogrammabschnitt als Auszug und dazu die Subroutine für die Zahlenausgabe:
Und siehe da, der Controller braucht für eine Zehnerpotenz mehr gleich etliche Mikrosekunden mehr. Zur Zeitberechnung: mega168/20MHz, ein tupsi ist eine Zeitscheibe (des internen heart beat) von 50 µs - - also tausend Maschinenzyklen!! Und wenn ich eine Zehnerpotenz mehr über UART ausgeben möchte, rechnet der Ärmste gleich drei von diesen Zeitscheibchen länger . . . das hätte ich nicht gedacht:Code:/ - - - - - - - - - - - - - - - ... if ( Isec_lk2 == sd ) // Testweise Zeitanzeige und Wobbeln der irLED { // Isec_lk2 = 0; // uputs0 ("\r\tBoardzeit [sek]\t"); // uputs0u ( Isecundn ); // uputs0 ("\ttupsi = "); // uputs0u ( Izeit_1 ); // if ( Isecundn == 60 ) sd = 60; // Ab hier Anzeige alle Minuten if ( Isecundn == 10 ) IRLEDset(275); // if ( Isecundn == 20 ) IRLEDset( 10); if ( Isecundn == 30 ) IRLEDset(127); if ( Isecundn == 300 ) sd = 300; // Ab hier Anzeige alle fünf Minuten } // Ende if // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // ============================================================================== = // ============================================================================== = // Hilfsfunktion, um Zahlen über das UART auszugeben void uputs0u (uint16_t val) // Zahlen unsigned_Int_16 über UART0 ausgeben { char buffer[8]; uputs0 ( utoa(val, buffer, 10) ); } // ============================================================================== = // ============================================================================== =
Code:Boardtimer on C506x00 CiCo m168/babyo/20MHz 14. Sep 2013 18:20 CIR-Controller, irLED auf PB1 UART (PD) mit 57 k Boardzeit [sek] 10 tupsi = 19958 Boardzeit [sek] 20 tupsi = 19958 Boardzeit [sek] 30 tupsi = 19958 Boardzeit [sek] 40 tupsi = 19958 Boardzeit [sek] 50 tupsi = 19958 Boardzeit [sek] 60 tupsi = 19958 Boardzeit [sek] 120 tupsi = 19954 Boardzeit [sek] 180 tupsi = 19954 Boardzeit [sek] 240 tupsi = 19954 Boardzeit [sek] 300 tupsi = 19954 Boardzeit [sek] 600 tupsi = 19954 Boardzeit [sek] 900 tupsi = 19954 Boardzeit [sek] 1200 tupsi = 19951 Boardzeit [sek] 1500 tupsi = 19951 Boardzeit [sek] 1800 tupsi = 19951 Boardzeit [sek] 2100 tupsi = 19951 Boardzeit [sek] 2400 tupsi = 19951 Boardzeit [sek] 2700 tupsi = 19951 Boardzeit [sek] 3000 tupsi = 19951 Boardzeit [sek] 3300 tupsi = 19951 Boardzeit [sek] 3600 tupsi = 19951 Boardzeit [sek] 3900 tupsi = 19951







Zitieren


Lesezeichen