Hilfe bei Mikroprozessor Klausur

Gast #5298374
Lesenswert?

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
Angehängte Dateien:
#5298455
Lesenswert?

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.
Gast #5298456
Lesenswert?

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.
#5298462
Lesenswert?

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?
Angehängte Dateien:
#5298524
Lesenswert?

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.
#5298534
Lesenswert?

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.
#5298565
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren