Nicht angemeldet. · Kennwort vergessen · Registrieren

peacecatfrog
Mitglied seit 12/2015
4 Beiträge
Betreff: Klausur Juli 2013 Aufgabe 3!
Hallo kann mir jmd erklären wie diese aufgabe zu lösen ist ?

Gegeben sei folgende ISR auf einem AVR-Microcontroller (SPiCBoard), ausgelöst
durch mechanischen Taster (Schließer, active-low, hardwareseitig entprellt):
 ISR( INT1_vect ) {
 static uint8_t counter = 100;
 sb_7seg_showNumber( --counter ); // Wert anzeigen
 if( counter == 0 )
 counter = 100;
 }
a) Was ist der angezeigte Wert nach einem kurzen Tastendruck (Schließen und Öffnen),
wenn der Interrupt INT1 konfiguriert wurde mit:
(1) Pegelsteuerung,
(2) Flankensteuerung mit fallender Flanke,
(3) Flankensteuerung mit steigender und fallender Flanke.
Geben Sie jeweils eine kurze Begründung an (6 Punkte)

a)
(1)Bei der  1 weis ich nicht wie ich sie lösen kann habe und würde mich freuen wenn ihr mir dabei helfen könntet
(2)Bei der   2 denke ich, dass der Angezeigte Wert vom Counter 99 sein sollte.
(3)Bei der    3 sollte der angezeigte Wert 98 sein.

b) Wie ändert sich die Ausgabe in den Fällen (1) - (3), wenn der Taster nicht hardwareseitig
entprellt wird (3 Punkte)
 
was soll hardwareseitig entprellt in diesem Zusammenhang bedeuten ?!?

c) Wie ändert sich die Ausgabe in den Fällen (1) - (3), wenn man das static in der
Definition von counter entfernt. Bitte geben Sie eine kurze Begründung an.

Bei der c weis ich auch nicht wie ich sie Lösen soll.


Es steht etwas ähnliches auch im skript seite 15-12 jedoch habe ich es auch da nicht verstanden.
 würde mich freuen wenn ihr mir dabei helfen könntet
LEP
Mitglied seit 12/2014
9 Beiträge
a)
   (1) Das Ergebnis ist zwischen 0 und 99, da nicht bekannt ist, wie viele Interrupts durch den Tastendruck ausgelöst werden.
   (2) und (3) hast du Recht. Du musst halt an die Begründung denken.(fallende flanke->drücken; beide Flanken ->drücken + loslassen)


b)
Hardwareseitig entprellt bedeutet, dass das Signal welches der Microkontroller erhält so gedämpft wird, dass ein Knopfdruck nur eine Flanke wird. Wenn das nicht der Fall ist, schwingt das Signal erstmal so stark, dass man unter umständen mehrere Flankenwechsel detektiert.
->(1)-(3) bringt ein Ergebnis zwischen 0 und 99, weil nicht bekannt ist, wie viele Interrupts geworfen werden.


c)
eine lokale static Variable hält ihren Wert auch, wenn ihr Block(in dem Fall die Funktion) verlassen wird. Wenn man das static weglässt, wird jedes mal eine Variable namens counter und dem Wert 100 angelegt. Das Display zeigt also immer 99.
Schließen Kleiner – Größer + Auf diesen Beitrag antworten:
Prüfcode: VeriCode Gib bitte das Wort aus dem Bild ins folgende Textfeld ein. (Nur die Buchstaben eingeben, Kleinschreibung ist in Ordnung.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O :troll:
Weitere Zeichen:
Gehe zu Forum
Powered by the Unclassified NewsBoard software, 20110527-dev, © 2003-8 by Yves Goergen