Autor |
Wie schnell ist ein Interrupt? |
|
|
|
|
BID = 611071
Rambodischien Schreibmaschine
Beiträge: 1341 Wohnort: Österreich
|
|
Hallo liebe Forengemeinde,
nach langer Zeit will ich mich wieder dem Thema Mikrokontroller heranwagen. Für eine Auswertung benötige ich den Externen Interrupt des Atemaga 8.
Bevor ich mich an das Programmieren heranwagen möchte ich noch etwas wissen.
Wie schnell ist der Interrupt des Atmega8. Theoretisch, wenn ich einen Atmega mit 16 MHz habe, müsste der Interrupt alle 62,5 ns.
Stimmt meine Berechnung? Aus dem Datenblatt habe ich nichts in Erfahrung bringen können.
Danke
_________________
Mfg Rambodischien |
|
BID = 611084
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
Moin,
Zitat :
| When an event on the INT1 pin triggers an interrupt request, INTF1 becomes set (one).
If the I-bit in SREG and the INT1 bit in GICR are set (one), the MCU will jump to the cor-
responding Interrupt Vector. The flag is cleared when the interrupt routine is executed. [...]
|
Zitat :
| The I/O clock is used by the majority of the I/O modules, like Timer/Counters, SPI, and
USART. The I/O clock is also used by the External Interrupt module, but note that some
external interrupts are detected by asynchronous logic, allowing such interrupts to be
detected even if the I/O clock is halted. [...]
|
Edit: /
Für Interuppttriggerung durch eine fallende oder steigende Flanke sowie durch Wechsels des Pegels geschieht alles Systemtakt synchron. Dazu solltest du dir den entsprechenden Bereich im DB anschauen: "I/O Ports und entsprechend dort "Alternate Port Functions". Am besten das ganze Kapitel, dort sind auch Schaltbilder vorhanden.
Es reicht aber zu wissen, dass es Taktsynchron passiert.
Edit/
Bedenke, dass die Ausführung der ISR und das damit verbundene Sichern der aktuellen Programmadresse auf dem Stack Zeit kostet.
Was hast du denn vor, dass es so genau sein muss?
U.U. musst du sogar noch das Status Register sichern, wenn du es in der ISR verändern willst! Das dauert auch.
_________________
[ Diese Nachricht wurde geändert von: DonComi am 31 Mai 2009 17:54 ]
[ Diese Nachricht wurde geändert von: DonComi am 31 Mai 2009 17:58 ] |
|
BID = 611088
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Stimmt meine Berechnung? |
Nein.
Zuerst mal muss ja der Interrupt erkannt werden. Das erfolgt nur zu einem bestimmten Zeitpunkt im Befehlszyklus.
Dann wird die aktuell laufende Instruktion noch abgearbeitet, was länger als einen Takt dauern kann.
Dann liest sich der Prozessor der Interruptvektor und erst danach kann die Bearbeitung durch die Interruptroutine beginnen.
Das Obige findest du genau in den Timingdiagrammen erklärt.
Üblicherweise beginnt die Interruptroutine mit ein paar Befehlen zum Sichern des Statusregisters und weiterer Register, die von der Interruptroutine benutzt bzw. verändert werden.
Am Schluss werden diese Register wiederhergestellt und dann erst darf der Rücksprung erfolgen.
Unter praktischen Gesichtspunkten würde ich deshalb mit vielleicht 20 Clocks Overhead rechnen.
|
BID = 611101
Rambodischien Schreibmaschine
Beiträge: 1341 Wohnort: Österreich
|
Danke für die Antworten,
Zitat :
DonComi hat am 31 Mai 2009 17:47 geschrieben :
|
Was hast du denn vor, dass es so genau sein muss?
|
Das ist nur rein aus Interesse. Ich will nämlich die Geschwindigkeit beim Fahrrad messen. Ich wollte nur interessehalber ausrechnen bis zu welcher Geschwindigkeit ich messen kann.
_________________
Mfg Rambodischien
|
BID = 611104
Her Masters Voice Inventar
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 5308 Wohnort: irgendwo südlich von Berlin
|
ich kenn Jemanden der sowas an seiner Hayabusa angebastelt hat. Über 300Km/h wirst du wohl kaum mit dem Drahtesel kommen
_________________
Tschüüüüüüüs
Her Masters Voice
aka
Frank
***********************************
Der optimale Arbeitspunkt stellt sich bei minimaler Rauchentwicklung ein...
***********************************
|
BID = 611106
Kleinspannung Urgestein
Beiträge: 13356 Wohnort: Tal der Ahnungslosen
|
Offtopic :
|
Und selbst die Hayabusa geht nur 300 mit angeklappten Spiegeln und winschlüpfrigem Piloten...
|
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)
|
BID = 611111
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Also für sowas sind die Interrupt schnell genug. Da brauchst du dir keine Gedanken zu machen.
Dazu könnte man auch den Timer extern triggern.
_________________
|
BID = 611113
Rambodischien Schreibmaschine
Beiträge: 1341 Wohnort: Österreich
|
Angst das es nicht funktioniert habe ich nicht.
Aber eine paar Frage habe ich noch zu diesem Thema.
Wie kann ich berechnen wie genau ich mir diesem System messen kann?
Was für Reed-Relai ist für ein Fahrradcomputer am besten geeignet?
_________________
Mfg Rambodischien
|
BID = 611116
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Mach mal einen Vorschlag.
Und was verstehst du unter "Genau"?
Ich meine, wie wichtig sind fünf Nachkommastellen beim Fahrradfahren?
Da wird aber dein "System" bis dato nicht kennen, können wir darüber keine direkte Aussage treffen - schließlich hängt die Genauigkeit nicht nur von der Hardware ab, die übrigens sehr präzise messen kann, sondern auch maßgeblich von deinen Programmierkünsten .
Überlege mal, wie die Frequenzverhältnisse deiner CPU zu der variablen Frequenz deines Impulsgeber ist.
Schlecht wäre ein prellendes Relais, das müsste man entprellen, sonst hauen die Werte vorne und hinten nicht hin, du fährst gemessen wesentlich schneller als real .
_________________
|
BID = 611146
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Ausserdem sind absolute Genauigkeit, Auflösung und Wiederholbarkeit alles verschiedene Dinge.
|