PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie viele Takte



milkbubi
05.03.2007, 20:11
Hi,
ich hab da ein etwas zeitkritisches Problem aber keinen Nerv dafür jetzt extra ASM zu lernen.
Deshalb wollt ich fragen, ob es irgendwo eine Liste gibt mit der Ausführungsdauer verschiedener Bascom-Befehle. Jetzt speziel würde mich interessieren, wie viele Takte eine einfache FOR Schleife für einen Durchgang benötigt (ohne Inhalt).

(hab in der Suche leider nichts gefunden)

mfg milkbubi

bL1nK
05.03.2007, 20:20
ich bin jetzt aus der c-welt, und weiß daher nicht ob bascom mit avrstudio geht.

aber ich denke schon, du kannst ja mal dein erstellest prog mit avrstudio simuliereun und da kannst du dir den disassembler anschaun, da siehst dann die asm befehle, aber ein asm befehl beinhaltet auch wiederrum mehrere takte.

milkbubi
05.03.2007, 21:08
Hey vielen Dank für den Tip,

hab das mit avrstudio zwar nicht probiert bin aber meinung, dass mir bascom auch den asm ausgeben kann. Aber was ich dabei gesehen hab ist, dass Bascom im Simulation Mode unten sowohl die Takte als auch die Zeit angibt, die bis zu dem Befehl vergangen sind. Jetzt die Frage an erfahrene User: Sind diese Angaben realitätsnah?

mfg milkbubi

kolisson
05.03.2007, 23:57
erste frage ist natürlich, ob du ein oszilloskop hast... dann kannste es easy messen .

als kleiner ehrfahrungsbericht über bascom möchte ich folgendes beitragen:

ich wollte neulich eine frequenz messen (im bereich 1 bis 3 khz) . den prozessor hatte ich intern auf 2 mhz getaktet ( 1mhz ist ja original drin.. aber sehr schlecht für die serielle kommunikation)

auf jeden fall hat ein

timer = 0
waitms 100
ergebnis = timer

als ergebnis defakto 100 ergeben.

ich war sehr erstaunt und happy nicht assembler machen zu müssen

gruss

CR-Racing
06.03.2007, 07:20
2.000.000 Takte pro Sekunde / 10 = 200.000 und nicht 100

Hanni
06.03.2007, 11:05
Deshalb wollt ich fragen, ob es irgendwo eine Liste gibt mit der Ausführungsdauer verschiedener Bascom-Befehle. Jetzt speziel würde mich interessieren, wie viele Takte eine einfache FOR Schleife für einen Durchgang benötigt (ohne Inhalt).

Wenn man bedenkt, das Bascom schon alleine für das Grundgerüst einer Interupt Routine ca. 100 Takte benötigt, kann man diese Frage nicht so einfach beantworten.
Wenn Bascom die nötigen Variablen in Registern zwischenspeichern würde (und diese nicht jedesmal über das RAM gehen würde), könnte man davon ausgehen, das eine leere Schleife nicht mehr als 10 Takte dauert.

milkbubi
06.03.2007, 12:54
Na vielen Dank erstmal für die Antworten. Ich werd mal versuchen in der Uni das am Oszi durchzumessen.
Dann kann ich vielleicht auch was zu der Genauigkeit der Simulatorangaben sagen, ich denke das wäre nicht nur für mich interessant zu wissen.

In diesem Sinne
milkbubi

papa_of_t
06.03.2007, 13:26
Die Angaben im Simulator unten über die Takte sind ziemlich genau - so genau wie Dein Quarz. Du kannst die Taktanzeige durch rechtsklicken zurücksetzen und dann Einzelschritte ausführen, um die Zeiten für jeden Befehl zu sehen. Das gilt natürlich nicht bei Befehlen, die auf ein externes Ereignis warten oder bei Timern.

milkbubi
07.03.2007, 09:13
Das heißt also, wenn mir der Simulator sagt, dass er für einen Schleifendurchlauf (leere if-Schleife) 16 Takte braucht, dann kann ich davon ausgehen, dass das auf meinem µC später genauso ist. Wie genau der Takt ist, ist ja in dem Fall eigentlich wurscht, da es ja nur um die Anzahl der Takte geht. Wenn daraus dann die Zeit errechnet wird sollte der natürlich schon möglichst genau laufen.
Wie sieht denn das beim ADC aus. Der hat ja nur eine gewisse Sampling Rate, läuft das Programm dann trotzdem weiter, während der intern umwandelt oder bleibt der dort hängen bis er fertig ist?

Vielen Dank bis dahin

mfg milkbubi

Hanni
07.03.2007, 13:01
Wie sieht denn das beim ADC aus. Der hat ja nur eine gewisse Sampling Rate, läuft das Programm dann trotzdem weiter, während der intern umwandelt oder bleibt der dort hängen bis er fertig ist?

Hmm, beide Varianten sind möglich.
kommt ganz auf die impletierung an.

Grüße,
Hanni

milkbubi
07.03.2007, 15:05
Hat das was mit dem single und free zu tun?
Wo sind denn die Vorteile der Modi in Hinsicht auf Geschwindigkeit...?

mfg milkbubi

JanB
09.03.2007, 07:10
Hallo,
Wenn du nichts unternimmst, läuft der AVR ganz normal weiter während der AD-Wandler wandelt.

Du kannst den AVR aber auch extra in den Sleep-Modus versetzen. Er kann dann von dem ADC-Int wieder "geweckt" werden, wenn der A/D-Wandler fertig ist.

Mit den Wandler-Betriebsarten "Single" oder "Free-Run" hat das nix zu tun, und auch die Wandler Geschwindigkeit bleibt davon unbeeinflusst.

Gruß Jan