Hallo, ich hab da mal ne Frage, bezüglich der Geschwindigkeit eines Controllers (Attiny45). Wenn der Controller mit 8Mhz läuft, heisst das, dass der 0,125us für einen Befehl benötigt (also 1/8Mhz)? Ist der so schnell? Eine andere Frage ist bezüglich eines Timers, wenn man jetzt Prescaler von 1024 benutze, wird alle 0,032 sekunden die Routine aufgerufen. Was würde passieren, wenn ich jetzt keinen Prescaler nehmen würde? Dann würde die Routine ja im prinzip alle 32us aufgerufen werden. Ist das richtig? Was würde passieren (jetzt nicht mit diesem Zahlenbeispiel), wenn ich gerade in der Routine bin und es zu einem erneuten aufruf kommen würde? Frank
Frank schrieb: > Hallo, > ich hab da mal ne Frage, bezüglich der Geschwindigkeit eines Controllers > (Attiny45). Wenn der Controller mit 8Mhz läuft, heisst das, dass der > 0,125us für einen Befehl benötigt Es kommt zar auf den Befehl an, aber für die meisten Befehle gilt: ja, sie werden in 1 Takt abgearbeitet. Es gibt ein paar, die 2 Takte benötigen. > (also 1/8Mhz)? Ist der so schnell? Ja. Was wundert sich das? Ein mit 8Mhz getakteter Tiny oder Mega macht (einen vernünftigen praxisbezogenen Befehlsmix zugrunde gelegt) so ca. 6 Millionen Befehle in der Sekunde. > Eine andere Frage ist bezüglich eines Timers, wenn man jetzt Prescaler > von 1024 benutze, wird alle 0,032 sekunden die Routine aufgerufen. Was > würde passieren, wenn ich jetzt keinen Prescaler nehmen würde? Wenn du tatsächlich keinen Prescaler benutzt, dann läuft der Timer nicht. AChtung: ein Prescaler von 1 ist etwas anderes als 'kein Prescaler'. > würde die Routine ja im prinzip alle 32us aufgerufen werden. Ist das > richtig? Ich habs nicht nachgerechnet, aber ich geh mal davon aus, dass du 65567/8000000 in den Taschenrechner eintippen kannst. (*) > Was würde passieren (jetzt nicht mit diesem Zahlenbeispiel), wenn ich > gerade in der Routine bin und es zu einem erneuten aufruf kommen würde? Es kommt nicht zu einem erneuten Aufruf. Das ein Interruptereignis eingetreten ist, wird zunächst mal in einem Bit vermerkt. Und erst wenn nach der Abarbeitung der ISR festgestellt wird, dass das auslösende Bit schon wieder gesetzt ist, erst dann wird die ISR erneut angesprungen. Ohne weitere Vorkehrungen kann auf einem AVR ein Interrupt also eine gerade laufende ISR nicht unterbrechen. Abgesehen davon: Wenn die INterrupts schneller anfallen, als sie abgearbeitet werden können ... was denkst du wird dann passieren? Wenn dir dein Chef alle 10 Minuten eine Akte auf den Schreibtisch legt, du aber 20 Minuten zur Bearbeitung einer Akte brauchst, was passiert dann? edit: (*) bei einem 16 Bit Timer. Bei einem 8 Bit Timer sind es dann 256/8000000
:
Bearbeitet durch User
Wow, bedankt für die Antwort. Ein bisschen hat es mich gewundert, da es ja so saumäßig schnell ist und ich mir das zeitlich einfach nicht vorstellen kann. Eine kurze Nachfrage, hätte ich bezüglich der Berechnung, ich habe 8000000/1/256 gerechnet und davon den Kehrwert genommen, wodurch ich dann auf 32us komme. wie kommst du auf 65567/8000000? (davon den Kehrwert komme ich auf 122) Frank
Tja, das alte Sprichwort: Das Gegenteil von 'gut' ist 'gut gemeint'. Das Feature 'bearbeiten' war sicher gut gemeint, nur - man schaut kurz weg, und plötzlich steht etwas anderes da, man kommt sich vor wie in Orwells 1984.
Frank schrieb: > Wow, > bedankt für die Antwort. > Ein bisschen hat es mich gewundert, da es ja so saumäßig schnell ist und > ich mir das zeitlich einfach nicht vorstellen kann. Dein Problem ist das der meisten :-) Ein PC macht 2Ghz. D.h. rein von der CPU her ist so ein PC rund 250 mal schneller als dein Tiny. Du hast aber nicht das Gefühl, dass dein PC derartig schnell ist. Bzw. umgekehrt, wenn du dir deinen PC 250 mal langsamer vorstellst, dann läuft es dir kalt den Rücken runter. Das liegt daran, dass zwischen nacktem Silizium und dem Benutzer unzählige Softwareschichten liegen und die CPU viele Dinge nebenher machen muss. Auf einem Tiny bist du aber am nackten Silizium. Das was du programmierst, das läuft auch auf dem Prozessor. Und sonst nichts anderes. Und im übrigen: 8Mhz sind jetzt nicht wirklich schnell. Andere µC wie zb ARM laufen auch mit 700Mhz, haben also rund die 100 fache Leistungsfähigkeit wie dein Tiny. (für die Experten: Ja ich weiss, das hinkt ein wenig. Man kann das nicht nur an der Taktfrequenz festmachen. Da spielen auch andere Faktoren noch gewaltig rein)
Frank schrieb: > 8000000/1/256 gerechnet und davon den Kehrwert genommen, wodurch ich > dann auf 32us komme. wie kommst du auf 65567/8000000? (davon den > Kehrwert komme ich auf 122) weil ich zuerst von einem 16 Bit Timer ausgegangen bin. Als ich dann dich nachgerechnet habe, habe ich gemerkt, dass du für einen 8 Bit Timer gerechnet hast. Und da du korrekt gerechnet hast, hab ich meine Zahl korrigiert.
:
Bearbeitet durch User
JA, 2GHz kann ich gar nicht vorstellen, dass so viele sachen in so kurzer zeit gemacht werden. Ich denke, ich sollte meinen Computer öfters loben, dass er so schnell sachen erledigt ;) Alle fragen beantwortet, was will ich mehr. Recht herzlichen Dank euch allen. Frank
Karl Heinz schrieb: > weil ich zuerst von einem 16 Bit Timer ausgegangen bin. Als ich dann > dich nachgerechnet habe, habe ich gemerkt, dass du für einen 8 Bit Timer > gerechnet hast. Und da du korrekt gerechnet hast, hab ich meine Zahl > korrigiert. Hallo! Zu meinem Verständnis: Wo kommt die Zahl 65567 her? Ist 2 hoch 16 nicht 65536?
Da gibt es nichts zu verstehen, Moderator schreibt schneller als er denkt, und muss folglich ständig nachbessern, bis man als aufmerksamer Beobachter am eigenen Verstand zu zweifeln beginnt.
Bit_Schubser schrieb: > Zu meinem Verständnis: Wo kommt die Zahl 65567 her? Das musst du doch wissen. Im µC kommt der keine besondere Bedeutung zu.
Bit_Schubser schrieb: > Karl Heinz schrieb: >> weil ich zuerst von einem 16 Bit Timer ausgegangen bin. Als ich dann >> dich nachgerechnet habe, habe ich gemerkt, dass du für einen 8 Bit Timer >> gerechnet hast. Und da du korrekt gerechnet hast, hab ich meine Zahl >> korrigiert. > > Hallo! > Zu meinem Verständnis: Wo kommt die Zahl 65567 her? > Ist 2 hoch 16 nicht 65536? Ähm. ja klar. Ziffernsturz
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.