Hallo Leute, Ich studiere Physikalische Technik und habe bald eine Klausur über Mikroprozessortechnik. Ich bin durch googlen auf diese Website hier gefunden und hätte eine Frage. Ich habe hier eine Altklausur ohne Lösungen aber der Professor hat uns manche Dinge nicht so gut erklärt. Ich wollte Fragen ob mir jemand von euch sagen kann ob diese Antworten von mir richtig sind und wenn nein was die Lösung wäre. Mfg Alex
:
Verschoben durch User
Unscharf und kontrastarm fotografiert, dazu Sauklaue. Was erwartest du?
Kannst du da überhaupt IRGENDWAS davon lesen? - Im Ernst, lad' mal ein SAUBERES Bild hoch!
Stefan S. schrieb: > Kannst du da überhaupt IRGENDWAS davon lesen? Ich schon. Zumindest die Aufgaben... ?
Da hättest Du lieber im Kurs aufpassen müssen, denn der Prof ist ein Spaßvogel. "Polled interrupt", LOL - vielleicht wollte er diejenigen trollen, die kein Englisch können. Das ist ein Oxymoron. Ansonsten sind die meisten Antworten falsch oder unvollständig. Wenn sich alles auf den LPC1769 bezieht, wären beispielsweise 4 Bytes zwischen den 32-bittigen Interrupt Addressen. Und welche "Anweisung" ein Compiler plaziert, ist ja auch eher ein Witz. Der Programmierer gibt Anweisungen an den Compiler, der Compiler gibt binäre Daten raus. An der Interrupt Adresse im Flash, ROM oder RAM steht jedenfalls die Adresse der Handler Funktion plus 1.
Alex schrieb: > Tut mir leid ich habe ein besseres Bild hochgeladen. Nö, hast Du nicht. Ist es zu viel verlangt, die Antworten hier - deutlich lesbar, gekennzeichnet durch die Antwort-Buchstaben mit Klammer - hinzuschreiben? So auf den ersten Blick wäre das Studium der Angabe von Adressen im MC schon mal ein guter Ansatz.
Jim M. schrieb: > Da hättest Du lieber im Kurs aufpassen müssen, denn der Prof ist ein > Spaßvogel. "Polled interrupt", LOL - vielleicht wollte er diejenigen > trollen, die kein Englisch können. Das ist ein Oxymoron. > > Ansonsten sind die meisten Antworten falsch oder unvollständig. Wenn > sich alles auf den LPC1769 bezieht, wären beispielsweise 4 Bytes > zwischen den 32-bittigen Interrupt Addressen. > > Und welche "Anweisung" ein Compiler plaziert, ist ja auch eher ein > Witz. > > Der Programmierer gibt Anweisungen an den Compiler, der Compiler gibt > binäre Daten raus. An der Interrupt Adresse im Flash, ROM oder RAM steht > jedenfalls die Adresse der Handler Funktion plus 1. Tut mir leid ich dachte das Bild sollte in Ordnung sein. Danke für die Antwort, es ist so dass es eigentlich nur ein Nebenfach ist und ich hatte davor weder mit C noch mit Mikroprozessoren etwas zu tun. Wir haben in der Vorlesung nur Prinzipien behandelt und nicht programmiert. Ein Praktikum war auch vorhanden, es waren allerdings nur 2 Termine und die Aufgaben waren vorgegeben ohne Erklärung warum man etwas macht. Ausserdem war es ein anderer Mikrocontroller. Ich habe ausserdem nochmal alles abgeschrieben und ein besseres Bild gemacht. Die Fragen aus dem Test, leider sind viele auf die Grafik bezogen: a) Markieren Sie einen „polled interrupt“ und einen „vectored interrupt“ in der Tabelle. b) Wie viele Bytes sind zwischen den einzelnen Interrupt Adressen? c) Welche Art von Anweisung wird der Compiler an die Interrupt Adressen platzieren? d) Markieren Sie in der Tabelle oben die internen Interrupts. e) Bei Programmen mit Interrupts finden Sie häufig global deklarierte Variablen. Warum? f) Weshalb müssen Sie in der Interruptroutine das Interruptflag löschen?
:
Bearbeitet durch User
Jim M. schrieb: > Da hättest Du lieber im Kurs aufpassen müssen, denn der Prof ist ein > Spaßvogel. "Polled interrupt", LOL - vielleicht wollte er diejenigen > trollen, die kein Englisch können. Das ist ein Oxymoron Das ist kein Oxymoron, sondern du hast keine Ahnung. Beim Vectored Interrupt(z.B. AVR) springt das Programm auf einen diesem Interrupt zugeordneten Vektor. Beim Polled Interrupt(z.B. PC) wird ein IRQ ausgelöst und das Programm oder Betriebssystem muß abfragen(pollen), welche Quelle den IRQ ausgelöst hat.
Alex V. schrieb: > Die Fragen aus dem Test, Was genau hast Du an Dieter F. schrieb: > die Antworten hier - > deutlich lesbar, gekennzeichnet durch die Antwort-Buchstaben mit Klammer > - hinzuschreiben? nicht verstanden?
Dieter F. schrieb: > Alex V. schrieb: >> Die Fragen aus dem Test, > > Was genau hast Du an > > Dieter F. schrieb: >> die Antworten hier - >> deutlich lesbar, gekennzeichnet durch die Antwort-Buchstaben mit Klammer >> - hinzuschreiben? > > nicht verstanden? Tut mir leid ich will eure Zeit hier nicht verschwenden, ich bin mir bei meinen Antworten eh nicht sehr sicher deswegen dachte ich das es nicht nötig ist sie mit hinzuschreiben. a) Markieren Sie einen „polled interrupt“ und einen „vectored interrupt“ in der Tabelle. -> In beigefügten Bild b) Wie viele Bytes sind zwischen den einzelnen Interrupt Adressen? -> 0x98 bis 0x9C vier Bits = 1/2 Byte?? c) Welche Art von Anweisung wird der Compiler an die Interrupt Adressen platzieren? -> Funktion, festlegen der Interrupt Service Routine. d) Markieren Sie in der Tabelle oben die internen Interrupts. -> Interrupttabelle im Bild, da hab ich leider keine Antwort. e) Bei Programmen mit Interrupts finden Sie häufig global deklarierte Variablen. Warum? -> Die Variablen sind für das Main-Programm notwendig und werden nur von der ISR bearbeitet f) Weshalb müssen Sie in der Interruptroutine das Interruptflag löschen? -> Sonst kann das Programm nicht weiter laufen bzw. kein weiterer Interrupt ausgelöst werden.
Alex V. schrieb: > a) Markieren Sie einen „polled interrupt“ und einen „vectored interrupt“ > in der Tabelle. > -> In beigefügten Bild Die mit einer Quelle sind vectored, die mit mehreren Quellen polled. Sieht richtig aus. > b) Wie viele Bytes sind zwischen den einzelnen Interrupt Adressen? > -> 0x98 bis 0x9C vier Bits = 1/2 Byte?? Unsinn. Der Vektor geht von 0x98 - 0x9B. Und das sind 4 Bytes. Das passt dann auch ins 4er Alignment für die Adrssierung. 0x9C ist der Anfang des nächsten. 0x90..0x93 0x94..0x97 0x98..0x9B 0x9C..0x9F > c) Welche Art von Anweisung wird der Compiler an die Interrupt Adressen > platzieren? > -> Funktion, festlegen der Interrupt Service Routine. Einen Sprung in die ISR. > d) Markieren Sie in der Tabelle oben die internen Interrupts. > -> Interrupttabelle im Bild, da hab ich leider keine Antwort. Sollte klar sein. > e) Bei Programmen mit Interrupts finden Sie häufig global deklarierte > Variablen. Warum? > -> Die Variablen sind für das Main-Programm notwendig und werden nur > von > der ISR bearbeitet > ISRs sind keine Funktionen und haben daher keinen Return-Wert und können nicht parametriert werden. Sie dienen dem Datenaustausch zw. der ISR und dem Rest des Programms. > f) Weshalb müssen Sie in der Interruptroutine das Interruptflag löschen? > -> Sonst kann das Programm nicht weiter laufen bzw. kein weiterer > Interrupt ausgelöst werden. Weil dieser Controller es nicht selbst macht und der Interrupt nach Verlassen der ISR wieder aufgerufen würde. Womit das ganze System dann lahmgelegt wird. Ob andere IRQs trotzdem drankommen, ist von deren Priorität abhängig. Wie das bei diesem Conroller ist, weiß ich nicht. Ich kenne den nicht.
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.