Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Benchmarks CCBASIC 2.0 vs. BASCOM-AVR -Ergebnisse Kategorie: Hardware (von Georg - 22.10.2004 17:13)
 Als Antwort auf Re: Benchmarks CCBASIC 2.0 vs. BASCOM-AVR von Carsten - 20.10.2004 9:17
Hallo Carsten!

Hoffentlich ist Du das untere Testprogramm noch nicht auf Deinem Chip gelaufen. Damit sind bei
jedem Durchlauf 100000 Schreibzyklen beim EEProm getÀtigt.

Hier der abgeÀnderte Code und die Ergebnisse:

Config Pina.7 = Output
P Alias Portc.0
Bp Alias Portc
Ad1 Alias Pinf.0
Config Adc = Free , Prescaler = Auto , Reference = Internal
Start Adc


'Benchmark - Test
Dim I As Long
Dim J As Word                       'fĂŒr 2 verschachtelte Schleifen bis 100000, wenn es zu schnell geht ggf. * n nehmen und Zeit / n, so daß sich die Zeit gut messen lĂ€ĂŸt und dann durch Anzahl der SChleifendurchlĂ€ufe teilen..
Dim B1 As Byte

Pulseout Porta , 7 , 20000          'Signalisierung Zeit 1 lĂ€uft - 0,5 Sek.

For I = 1 To 100
    For J = 1 To 1000
        'Zeit fĂŒr For-Schleifen messen
    Next J
Next I

Pulseout Porta , 7 , 20000          'Signalisierung Zeit 2 lĂ€uft - 0,4 Sek.

For I = 1 To 100
    For J = 1 To 1000
        'Port setzen, fĂŒr die Reine Port-Zeit Zeit 1 spĂ€ter subtrahieren
        P = 1
    Next J
Next I

Pulseout Porta , 7 , 20000          'Signalisierung Zeit 3 lĂ€uft - 0,4 Sek.

For I = 1 To 100
    For J = 1 To 1000
        'byteport setzen, fĂŒr die Reine Port-Zeit Zeit 1 spĂ€ter subtrahieren
        Bp = &H55
    Next J
Next I

Pulseout Porta , 7 , 20000          'Signalisierung Zeit 4 lĂ€uft - 0,4 Sek

For I = 1 To 100
    For J = 1 To 1000
        'byteport lesen, fĂŒr die Reine Port-Zeit Zeit 1 spĂ€ter subtrahieren
        B1 = Bp
    Next J
Next I

Pulseout Porta , 7 , 20000          'Signalisierung Zeit 5 lĂ€uft - 0,4 Sek.

For I = 1 To 100
    For J = 1 To 1000
        'byteport lesen, fĂŒr die Reine Port-Zeit Zeit 1 spĂ€ter subtrahieren
        B1 = Bp
    Next J
Next I

Pulseout Porta , 7 , 20000          'Signalisierung Zeit 6 lĂ€uft - 23 Sek.

For I = 1 To 100
    For J = 1 To 1000
        'AD port lesen, fĂŒr die Reine Port-Zeit Zeit 1 spĂ€ter subtrahieren
        B1 = Getadc(0)
    Next J
Next I

Pulseout Porta , 7 , 20000          'Signalisierung Zeit 7 lĂ€uft - 537 Sek. (wenn Du den nĂ€chsten Test ein paar mal laufen
'lĂ€ĂŸt kannst Du Dein Chip wegwerfen, denn die Beschreibbarkeit der EEproms ist endlich). Da ich mein Chip nicht unbedingt
'schrotten wollte habe ich diesen Wert meßtechnisch ermittelt!

'open# for write
For I = 1 To 100
    For J = 1 To 1000
        'Zeit messen um Werte auf dem Chip zu speichern (schnellste Möglichkeit auf der C-Control)
        Writeeeprom I , 0           'print# j
    Next J
'    close# 'Überlauf vermeiden auf der C-Control (max. 10KB-Programm)
'    open# for write
Next I
'close#

Pulseout Porta , 7 , 60000

End


Gruß Georg





> Danke an alle fĂŒr das rege Interesse! An Georg: Die 2.0 ist schon schneller, aber evtl. kannst Du ja Werte fĂŒr die M-Unit beisteuern? Das wĂ€re toll. Also zum Test interessiert mich (und evtl. auch andere), wie schnell man Ports schalten und lesen kann und wie schnell man die gelesenen Daten auch wieder los wird, sprich im Chip speichern kann, und wie schnell man den AD lesen kann (vorausgesetzt natĂŒrlich der AD-Schaltkreis macht mit..).
>
> Damit keine MißverstĂ€ndnisse aufkommen: fĂŒr meine aktuellen Zwecke ist die M-Unit 2.0 schnell genug (und das Modulkonzept ist recht gut gelungen, ich hab sie ja weil ich nicht so viel Ă€tzen und löten will :-), es wĂ€re nur schön zu wissen ab welchen Frequenzen man ausweichen muß..
>
> Also folgende Testprogramme (die Bascom - syntax kenne ich leider nicht, aber es sollte fĂŒr einen Profi kein Problem sein zu adaptieren) Ich bin gespannt auf die Zeiten 1-7 von der M-Unit (vor 2.0) und von AVR mit Bascom.
>
> 'Benchmark - Test
> define i word
> define j word 'fĂŒr 2 verschachtelte Schleifen bis 100000, wenn es zu schnell geht ggf. * n nehmen und Zeit / n, so daß sich die Zeit gut messen lĂ€ĂŸt und dann durch Anzahl der SChleifendurchlĂ€ufe teilen..
> define p port[9]
> define bp byteport[1]
> define b1 byte
> define ad1 AD[1]
>
> beep 11,2,1 'Signalisierung Zeit 1 lÀuft
>
> for i = 1 to 100
>     for j = 1 to 1000
>         'Zeit fĂŒr For-Schleifen messen
>     next j
> next i    
>
> beep 11,2,1 'Signalisierung Zeit 2 lÀuft
>
> for i = 1 to 100
>     for j = 1 to 1000
>         'Port setzen, fĂŒr die Reine Port-Zeit Zeit 1 spĂ€ter subtrahieren
>         p = ON        
>     next j
> next i    
>
> beep 11,2,1 'Signalisierung Zeit 3 lÀuft
>
> for i = 1 to 100
>     for j = 1 to 1000
>         'byteport setzen, fĂŒr die Reine Port-Zeit Zeit 1 spĂ€ter subtrahieren
>         bp = &H55
>     next j
> next i    
>
> beep 11,2,1 'Signalisierung Zeit 4 lÀuft
>
> for i = 1 to 100
>     for j = 1 to 1000
>         'byteport lesen, fĂŒr die Reine Port-Zeit Zeit 1 spĂ€ter subtrahieren
>         b1 = bp
>     next j
> next i    
>
> beep 11,2,1 'Signalisierung Zeit 5 lÀuft
>
> for i = 1 to 100
>     for j = 1 to 1000
>         'byteport lesen, fĂŒr die Reine Port-Zeit Zeit 1 spĂ€ter subtrahieren
>         b1 = bp
>     next j
> next i    
>
> beep 11,2,1 'Signalisierung Zeit 6 lÀuft
>
> for i = 1 to 100
>     for j = 1 to 1000
>         'AD port lesen, fĂŒr die Reine Port-Zeit Zeit 1 spĂ€ter subtrahieren
>         b1 = ad1
>     next j
> next i    
>
> beep 11,2,1 'Signalisierung Zeit 7 lÀuft
>
> open# for write
> for i = 1 to 100
>     for j = 1 to 1000
>         'Zeit messen um Werte auf dem Chip zu speichern (schnellste Möglichkeit auf der C-Control)
>         print# j
>     next j
>     close# 'Überlauf vermeiden auf der C-Control (max. 10KB-Programm)
>     open# for write
> next i    
> close#
>
> end
>
>
>
> >
> >
> > > Kommt wohl auf die Taktfrequenz und das Programm an. Da BASCOM-AVR ein echter Compiler ist,
> > > sollte der Code aber immer schneller sein, da ja der Interpretationsvorgang im Prozessor selbst wegfÀllt.
> > > Schick mir doch mal ein (kleines) Programm, das du fĂŒr Testzwecke geeignet hĂ€st.
> >
> > Hallo
> > Das stimmt natĂŒrlich schon (prinzipiell), aber der Zeitanteil, das Token zu lesen und dann
> > zu verabeiten dĂŒrfte etwa 1:10 sein, was heisst, dass die Interpretation  einen "unwesentlichen"
> > Zeitverlust bedeutet.
> > Ich habe zu dem Thema keine weiteren Einzelheiten gefunden, fÀnde das aber doch interessant
> > wenn es jemand mal untersucht, der mit BASCOM arbeitet.
> > Ich schreibe gerade an der OS V 2.03 (sie wird > 20.000 I/s sein, aber viel mehr geht dann nicht mehr)
> >  
> > ciao...
>

 Antwort schreiben

Bisherige Antworten:

Re: Benchmarks CCBASIC 2.0 vs. BASCOM-AVR -Ergebnisse (von DIE HARD - 22.10.2004 19:05)
    Re: Benchmarks CCBASIC 2.0 vs. BASCOM-AVR -Ergebnisse (von Georg - 22.10.2004 23:01)
        Re: Benchmarks CCBASIC 2.0 vs. BASCOM-AVR -Ergebnisse (von Carsten - 25.10.2004 10:57)