Gast
#348996
Wieviele Takte braucht i=0; while (i<211) i++; und PORTB=0x04; ?
|
Anzeige
|
AVR: Wieviele Takte?
Gast
#348996
Wieviele Takte braucht i=0; while (i<211) i++; und PORTB=0x04; ?
Gast
#348997
Kommt drauf an,was der C-Compiler daraus macht.Keiner der beiden Befehle kann mit einem Maschinenbefehl(== ein Taktzyklus bei den meisten Befehlen) abgearbeitet werden. PORTB =... wäre mit 2 Maschinenbefehlen noch am kompaktesten realisierbar,was aber nicht automatisch heisst,das das auch jeder C-Compiler so hinbekommt.Vor allem in niedrigeren Optimierungsstufen und bei Debug-Codes wird der Code etwas grösser ausfallen. Hängt aber u.a. auch noch davon ab,welcher Code davor kommt.Steht z.B die Variable 'i' in einem Register,kann 'i = 0;' mit einem Takt/Maschinenbefehl realisiert werden,ansonsten werden wieder 2 benötigt. Lies dir doch mal das Tutorial hier auf der Seite durch,damit bekommst du ungefähr ein Gefühl,wie welche C-Konstrukte in Assembler realisiert werden können.Uas dem Listing eines C-Compilers kann man auch sehen,wie der Compiler bestimmte Sequenzen übersetzt.Aber der generierte Code ist oft etwas komplizierter zu verstehen,wenn man keine Übung darin hat.
Gast
#348998
-> simulator > Wieviele Takte braucht > > i=0; > while (i<211) i++; Irgendwas zwischen 0 (i nicht volatile) und 100000 (i double) Deshalb macht man sowas nicht. Entweder man nimmt nen Timer oder delay() aus der Bibliothek. Wer sagt, er hätte nicht genug Timer, einfach einen Timer frei laufen lassen, dann kann jeder Prozess ihn benutzen. Peter Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|