Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Berechnung mit Word anstelle Single bringt fast nichts 995 zu 724 Takte Kategorie: Programmierung Basic (von Ernst H. - 30.10.2010 14:08)
Ich nutze:
CC-Pro 128 Application Board, Pro-Bot128
'Berechnung mit Word anstelle Single bringt fast nichts 995 zu 724 Takte
'Spannungswert ADC mit 16 Bit Word Variable berechnen
'  ADC   Mult    Digit     5,00V     Div Ganzzahl                Ganzzahl
'  1023   64     500    130,944      131           499,7862595        499
'hohe Auflösung durch Multipl. mit 64 und Dividieren mit 131 -Fehler gering
'Anzeige erfolgt mit 2Kommastellen ... 4,99
'Test 17 und 18 zeigt Unterschied zwischen Float und Word Berechnung
'Ungenauigkeit vernachlässigbar  Zeitersparnis aber gering

'Ich habe nochmals getestet, das Ergebnis eindeutig  ++Var (Byte)
'benötigt 260 Takte. Auch mit Logik-Analyser  Test 3 und 4:  Impuls
'mit ++Var 52us  ohne 36us  also ca. die  berechneten  17us.
'Differenz Test3 und 4  exakt 260 Takte.

'Weitere Bemerkung  PortWriteBit durch selbermachen
'(DirAcc.. lesen,maskieren,ausgabe)ist um als 130 Takte langsamer - bei
'gleichzeitig mehreren Bits - wieder effektiver.
'if  /  Case  schon ein grosser Unterschied



'ab und zu kommen mehr Takte heraus, vermutlich interne
'Interruptverarbeitungen. Weniger allerdings nie.
' Var=Var+1  hier 335 Takte habe ich mit anderen Programm schon
' mal 291 herausbekommen?

' ADC_Set(ADC_VREF_VCC,0)
 '     ADC_0 = ADC_Read()
 'Takte= 4008 271.742401us  Takte= 2397 162.516601us  Takte= 2382 161.499us
 'beim ersten Aufruf 4008, dann nurmehr ca 2380 ...bei Kanaltausch nicht
' ULong überlauf hat keine Auswirkungen

'Messwertausgabe
'Mess1  ++Var (Byte)         Takte= 260   17.628000us  Takte= 260 17.628000us
'Mess2 Var=Var+1 (Byte)      Takte= 335   22.712999us  Takte= 335 22.712999us
'Mess3 2xPort_WriteBit       Takte= 1036  70.240798us  Takte= 1036 70.240798us
'Mess4 2xPort_WriteBit ++Var Takte= 1296  87.868797us  Takte= 1296 87.868797us
'Mess5 Port_Write            Takte= 441   29.899799us  Takte= 441 29.899799us
'Mess6 DirAcc_Write          Takte= 434   29.425199us  Takte= 434 29.425199us
'Mess7  PortBit Eigenbau     Takte= 648   43.934398us  Takte= 648 43.934398us
'Mess8 Port_WriteBit         Takte= 518   35.120399us  Takte= 518 35.120399us
'Mess9 Schleife 10000        N128= 4520   39.233600ms  N128= 4519 39.224918ms
'Mess10 ULong=Ulong+1       Takte= 484    32.815200us  Takte= 484 32.815200us
'Mess11 ULong vergleich     Takte= 713    48.341400us  Takte= 713 48.341400us
'Mess12 Byte Vergleich      Takte= 372    25.221599us  Takte= 372 25.221599us
'Mess13 ADC abfrage         Takte= 4008  271.742401us  Takte= 2448 165.974395us
'Mess14 Case   abfrage      Takte= 906    61.426799us  Takte= 906 61.426799us
'Mess15 If  abfrage         Takte= 2380  161.363998us  Takte= 2380 161.363998us
'Mess16 ADC abfrage 8x      Takte= 19404  1315.591186us
'Mess17 Floatberech         Takte= 995    67.460998us
'Mess18 Word Mul/Div 2Komma Takte= 724    49.087200us  Takte= 724 49.087200us

'Mess9 mit langsameren Takt - dh die 4520*128=578560 Takte daher in ms


'Fertiges Programm zum Ausgeben von Messungen -einfach starten-
'Ergebnis erscheint an Konsole


Dim Zeitfloat As Single
Dim Timervar As Word
Dim Var As Byte         ' für Tests Nr1 ++Var, und Var=Var+1
Dim Var2 As Byte
Dim i As Integer        ' For Schleife
Dim Schleife As Integer
Dim Longvar As ULong
Dim Longvar2 As ULong
Dim Pausenzeit As Word
Dim ADC_0 As Word
Dim Wordvar As Word
Dim Floatvar As Single

#define Pausenzeit 1000    '2sec Pause zwischen den Messungen
#define Duchlaufe 3
#define Ref 0.004887          'Referenzspannungsfaktor für ADC - Test




Sub main()
 Do While (1)
  Port_DataDir(PortC,255 )    'PortC alles Output.. zum Messen

  Msg_WriteText("Mess1  ++Var (Byte)        " )
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
                        'bei 65000 wird Int ausgelöst, hier nicht verwendet
         ++Var       'hier die Prüf - Anweisungen oder ganze Programmteile
                        'bis max 4,4ms  67,8ns Takt = 14,..MHz
    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
    Msg_WriteChar(13)   'CR  ... Neue Zeile
    AbsDelay(Pausenzeit )  'Zeit zum ablesen

        'nun Test2:

  Msg_WriteText("Mess2 Var=Var+1 (Byte)     " )
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
        Var=Var+1    'hier die Prüf - Anweisungen oder ganze Programmteile
                     'bis max 4,4ms  67,8ns Takt = 14,..MHz
    Msg_Laufzeit1()  ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen

        'nun Test3:


  Msg_WriteText("Mess3 2xPort_WriteBit      " )
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
      Port_WriteBit(20,1) 'hier die Prüf - Anweisungen oder ganze Programmt.
      Port_WriteBit(20,0) 'PortC.4 auf 0
                          'bis max 4,4ms  67,8ns Takt = 14,..MHz
    Msg_Laufzeit1()   ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen

        'nun Test4:
  Msg_WriteText("Mess4 2xPort_WriteBit ++Var" )
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
      Port_WriteBit(20,1) 'hier die Prüf - Anweisungen oder ganze Programmt.
        ++Var            'mit Logkanalyser können die zusätzlichen 260Takte..
      Port_WriteBit(20,0)
                        'bis max 4,4ms  67,8ns Takt = 14,..MHz
      Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen


       'nun Test5:
  Msg_WriteText("Mess5 Port_Write           " )
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
    Port_Write(PortC,255 ) 'hier die Prüf - Anweisungen oder ganze Programmt.
                                 'bis max 4,4ms  67,8ns Takt = 14,7456MHz
    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen

        'nun Test6:
  Msg_WriteText("Mess6 DirAcc_Write         " )
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)   ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
    DirAcc_Write(0x35,255 ) 'hier die Prüf - Anweisungen oder ganze Progr.
                            'bis max 4,4ms  67,8ns Takt = 14,..MHz
    Msg_Laufzeit1()         ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen


      'nun Test7:
  Msg_WriteText("Mess7  PortBit Eigenbau    " )
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
      DirAcc_Write(0x35,DirAcc_Read(0x35 Or 00010000 ) )
           'das PortC Register wird gelesen maskiert und damit Bit 4 gesetzt
                    'hier die Prüf - Anweisungen oder ganze Programmteile
                                 'bis max 4,4ms  67,8ns Takt = 14,..MHz
    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen


    'nun Test8:
  Msg_WriteText("Mess8 Port_WriteBit        " )
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
      Port_WriteBit(20,1) 'hier die Prüf - Anweisungen oder ganze Programmt.
                                'bis max 4,4ms  67,8ns Takt = 14,..MHz
    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen


        'nun Test9:      hier langsamerer Takt: 8,68us
  Msg_WriteText("Mess9 Schleife 10000       " )
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,5)   ' Startpunkt der Messung mit 8,68usTakt
      For Schleife = 1 To 10000'hier die Prüf - Anweisungen oder ganze Progr.
             ++Var
      Next                      'bis zu 0,56sec
    Msg_Laufzeit128T() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen


    'nun Test10:
  Msg_WriteText("Mess10 ULong=Ulong+1      " )
  Longvar = 4294967294     ' damit in 2. Durchlauf ein Ã?berlauf entsteht
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
            'hier die Prüf - Anweisungen oder ganze Programmteile
    Longvar = Longvar + 1       'bis max 4,4ms  67,8ns Takt = 14,..MHz
    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen


  'nun Test11:
  Msg_WriteText("Mess11 ULong vergleich    " )
  Longvar = 4294967000     '
  Longvar = 4294967010     'eine hohe Zahl - es müssen alle 32 Bits vergl.
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
          'hier die Prüf - Anweisungen oder ganze Programmteile
    If Longvar2 < Longvar Then      'bis max 4,4ms  67,8ns Takt = 14,..MHz
        ++Var     ' hier vergleich nicht erfüllt, Var bleibt gleich
    End If
    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen




  'nun Test12:
  Msg_WriteText("Mess12 Byte Vergleich     " )
  Var = 222     '
  Var2 = 243     '
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
          'hier die Prüf - Anweisungen oder ganze Programmteile
    If Var2 < Var Then      'bis max 4,4ms  67,8ns Takt = 14,..MHz
        ++Var     ' hier vergleich nicht erfüllt, Var bleibt gleich
    End If
    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen



 'nun Test13:
  Msg_WriteText("Mess13 ADC abfrage        " )    '
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
          'hier die Prüf - Anweisungen oder ganze Programmteile
      ADC_Set(ADC_VREF_VCC,0)
      ADC_0 = ADC_Read()

 'Takte= 4008 271.742401us  Takte= 2397 162.516601us  Takte= 2382 161.49..
 'beim ersten Aufruf 4008, dann nurmehr ca 2380

    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen

     'nun Test14:
  Msg_WriteText("Mess14 Case   abfrage     " )     '
  Var=5
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
          'hier die Prüf - Anweisungen oder ganze Programmteile
      Select Case Var
        Case 1
            ++Var2
        Case 2
            ++Var2
        Case 3
            ++Var2
        Case 4
            ++Var2
        Case 5
            ++Var2
        Case 6
            ++Var2
      End Select

    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen



   'nun Test15:
  Msg_WriteText("Mess15 If  abfrage        " )     '
  Var=5
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
          'hier die Prüf - Anweisungen oder ganze Programmteile
      If Var = 1 Then
            ++Var2
      End If
      If Var = 2 Then
            ++Var2
      End If
      If Var = 3 Then
            ++Var2
      End If
      If Var = 4 Then
            ++Var2
      End If
      If Var = 5 Then
            ++Var2
      End If
      If Var = 6 Then
            ++Var2
      End If
      'ist nicht exakt mit obiger Case vergleichbar, aber ähnlich

  Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen

  'nun Test16:
  Msg_WriteText("Mess16 ADC abfrage 8x     " )    '
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
          'hier die Prüf - Anweisungen oder ganze Programmteile
      ADC_Set(ADC_VREF_VCC,0)
      ADC_0 = ADC_Read()
      ADC_Set(ADC_VREF_VCC,1)
      ADC_0 = ADC_Read()
      ADC_Set(ADC_VREF_VCC,2)
      ADC_0 = ADC_Read()
      ADC_Set(ADC_VREF_VCC,3)
      ADC_0 = ADC_Read()
      ADC_Set(ADC_VREF_VCC,4)
      ADC_0 = ADC_Read()
      ADC_Set(ADC_VREF_VCC,5)
      ADC_0 = ADC_Read()
      ADC_Set(ADC_VREF_VCC,6)
      ADC_0 = ADC_Read()
      ADC_Set(ADC_VREF_VCC,7)
      ADC_0 = ADC_Read()


    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen



     'nun Test17:
  Msg_WriteText("Mess17 Floatberech        " )     '
  Wordvar=1023
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
          'hier die Prüf - Anweisungen oder ganze Programmteile
            Floatvar = Wordvar * Ref
      'Mess17 Floatberech   Takte= 995 67.460998us  Takte= 995 67.460998us

    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteText("U=")
  Msg_WriteFloat(Floatvar)
  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen



     'nun Test18:
  Msg_WriteText("Mess18 Word Mul/Div 2Komma" )     '
  Wordvar=1023
  For i = 1 To Duchlaufe             'für 3-malige Ausgabe in einer Zeile
    AbsDelay(2 ) ' unbedingt notwendig!!!  nur mit 2ms Pause konstante Werte
    Timer_T1Time(65000,1)  ' Startpunkt der Messung 67,8ns Takt Cnt1 = 0
          'hier die Prüf - Anweisungen oder ganze Programmteile

        ADC_0 = Wordvar * 64 / 131
  'Mess18 Word Mul/Div 2Komma Takte= 724 49.087200us  Takte= 724 49.087200us

    Msg_Laufzeit1() ' Aufruf der Sub (Cnt Auslesung und Korrektur)
  Next
  Msg_WriteText("U=")
  Msg_WriteWord(ADC_0 )

  Msg_WriteChar(13)   'CR  ... Neue Zeile
  AbsDelay(Pausenzeit )  'Zeit zum ablesen









  Msg_WriteChar(13)   'CR  ... Neue Zeile  letzte Zusatzzeile
 End While
End Sub  'main  ************************************



Sub Msg_Laufzeit1 ()                      ' Sub für Messung und Ausgabe
    Timervar = Timer_T1GetCNT() - 455     ' Korr-Wert wenn kein Befehle
    Msg_WriteText(" Takte= ")
    Msg_WriteWord(Timervar )              ' Takte 67,8ns ... 14,..MHz
    Msg_WriteChar(32 )
    Zeitfloat = Timervar * 0.0678         ' Wert in us
    Msg_WriteFloat(Zeitfloat )
    Msg_WriteText("us" )
    Msg_WriteChar(32 )
End Sub

    /*
    AbsDelay(2 )                          ' unbedingt notwendig!!!
    Timer_T1Time(65000,1)                 ' Startpunkt der Messung
    Msg_Laufzeit2()                       ' Aufruf der Sub
    */
Sub Msg_Laufzeit2 ()                      ' nur mit 2ms Pause konstante
    Timervar = Timer_T1GetCNT() - 455     ' Werte sonst 30-64us
    Msg_WriteText(" Nr2= ")
    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,1)                 ' Startpunkt der Messung
    Msg_Laufzeit1()                       ' Aufruf der Sub
    */
Sub Msg_Laufzeit3 ()                       ' nur mit 2ms Pause konstante
    Timervar = Timer_T1GetCNT() - 455     ' Werte sonst 30-64us
    Msg_WriteText(" Nr3= ")
    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,1)                 ' Startpunkt der Messung
    Msg_Laufzeit4()                       ' Aufruf der Sub
    */
Sub Msg_Laufzeit4 ()                      ' nur mit 2ms Pause konstante
    Timervar = Timer_T1GetCNT() - 455     ' Werte sonst 30-64us
    Msg_WriteText(" Nr4= ")
    Msg_WriteWord(Timervar )              ' Takte 67,8ns ... 14,..MHz
    Msg_WriteChar(32)
    Zeitfloat = Timervar * 0.0678         ' Wert in us
    Msg_WriteFloat(Zeitfloat )
    Msg_WriteChar(32)
    'Msg_WriteChar(13)                     ' CR  Zeilenvorschub
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 am Beginn konstante Werte !!
    Schleife = Schleife + 1 - 1  ' Zeitverbrauch damit wenige Takte abgezogen
    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

/*
    AbsDelay(2 )                  ' unbedingt notwendig!!!
    Timer_T1Time(65000,7)         ' Startpunkt der Messung mit 69,44usTakt

    *************   Achtung Vor-Teiler 6 und 7 geht nicht!

    Msg_Laufzeit1024T()                   ' Aufruf der Sub
    */
Sub Msg_Laufzeit1024T ()             ' nur mit 2ms Pause konstante Werte!!
    Timervar = Timer_T1GetCNT() '- 455    '
    Msg_WriteText(" N1024= ")             ' bis zu 4,485sec
    Msg_WriteWord(Timervar )              ' 1024 Takte 69,44us ...
    Msg_WriteChar(32)
    Zeitfloat = Timervar * 0.06944         ' Wert in ms!
    Msg_WriteFloat(Zeitfloat )
    Msg_WriteText("ms")
    Msg_WriteChar(32)
    Msg_WriteChar(13)                     ' CR  Zeilenvorschub
End Sub




    Antwort schreiben


Antworten:

Re: Berechnung mit Word anstelle Single bringt fast nichts 995 zu 724 Takte (von PeterS - 1.11.2010 11:43)
    Re: Berechnung mit Word anstelle Single bringt fast nichts 995 zu 724 Takte (von Ernst - 2.11.2010 19:45)
        Re: Berechnung mit Word anstelle Single bringt fast nichts 995 zu 724 Takte (von PeterS - 3.11.2010 9:50)
            Re: Berechnung mit Word anstelle Single bringt fast nichts 995 zu 724 Takte (von ThomasK - 15.10.2012 22:57)
                Re: Berechnung mit Word anstelle Single bringt fast nichts 995 zu 724 Takte (von PeterS - 16.10.2012 10:46)