INFO - FAQ - CC2-Forum - CCPro-Forum |
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 |