Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > Unten ein kurzes Programm zum messen von Laufzeiten - Anweisungen, Programmteile > Verwendet wird der 16-Bit Timer 1 > Ergebnis: sehr enttäuschend! > Var = Var + 1 (Byte) benötigt 291 Takte!!! > ++Var 260 Takte !!! > > Sinus von einer single etwa 3000 - ist ok, aber die einfachsten Anweisungen brauchen extrem > lange. Das increment einer Bytevariable immer noch 260 Tackte wofür ???? > > Portausgabe eines Bytes um die 400, mit DirAcc_Write direkt das Register beschreiben - denkste - > dauert genauso lange. > Entweder ich mache da einen ordentlichen Überlegungsfehler (wird der Tackt intern geteilt?) oder das > Basic ist wirklich so langsam - vorallem bei einfachsten Befehlen? > Übrigens PortWriteByte soll wesentlich schneller sein als PortWriteBit - etwa 400 zu etwa 550 > macht man das "Ausmaskieren" des Bits händisch so kommt man sicher auf wesentlich mehr, da > jeder einfachste Befehl unsummen an Tackten frißt. > > Dim Zeitfloat As Single > Dim Timervar As Word > > > AbsDelay(2 ) ' unbedingt notwendig!!! > ' nur mit 2ms Pause konstante > ' Werte sonst 30-64us > > Timer_T1Time(65000,1) ' Startpunkt der Messung mit 67,8ns > > 'hier die Prüf - Anweisungen oder ganze Programmteile > 'bis max 4,4ms > > Msg_Laufzeit1() ' Aufruf der Sub > */ > Sub Msg_Laufzeit1 () ' Sub für Messung und Ausgabe > Timervar = Timer_T1GetCNT() - 455 ' Korr-Wert wenn kein Befehle > Msg_WriteText(" Nr1= ") > Msg_WriteWord(Timervar ) ' Takte 67,8ns ... 14,..MHz > Msg_WriteChar(32 ) > Zeitfloat = Timervar * 0.0678 ' Wert in us > Msg_WriteFloat(Zeitfloat ) > Msg_WriteChar(32 ) > End Sub > > > > > > > > AbsDelay(2 ) ' unbedingt notwendig!!! > Timer_T1Time(65000,5) ' Startpunkt der Messung mit 8,68usTakt > Msg_Laufzeit128T() ' Aufruf der Sub > */ > Sub Msg_Laufzeit128T () ' nur mit 2ms Pause konstante Werte !! > Schleife = Schleife + 1 - 1 ' Zeitverbrauch damit wenige Takte abgezogen werden > Timervar = Timer_T1GetCNT() - 1 ' Korrektur -1 > Msg_WriteText(" N128= ") ' ******************bis zu 0,56sec ********************************* > Msg_WriteWord(Timervar ) ' 128 Takte 8,68us ... > Msg_WriteChar(32) > Zeitfloat = Timervar * 0.00868 ' Wert in ms! > Msg_WriteFloat(Zeitfloat ) > Msg_WriteText("ms") > Msg_WriteChar(32) > 'Msg_WriteChar(13) ' CR Zeilenvorschub > End Sub