mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie Interrupt benutzen (mit Watchdog)?


Autor: Adrian Wüthrich (wuethria)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich bin dran, auf einem MCBSTR-9/ARM-9 eine kleine Stoppuhr zu 
programmieren. Da ich Anfänger bin, und mich noch nie mit Interrupts 
beschäftigte, habe ich folgendes Problem:

- Watchdog ist so konfiguriert, dass er alle 50ms bzw. wenn er bei 0 
angelangt ist, einen Interrupt an VIC "sendet". Meine Frage: wie kann 
ich nun auf diesen Interrupt zugreifen, damit ich anhand des Interrupts 
damit meine Zehntelsek. und Sekunden inkrementieren kann?

Hab mir so was in der Form vorgestellt:
if (Interrupt)       
  overflow++;

if(overflow>=2){            
  overflow=0;        
  Zehntelssek++;
} 

if(overflow>=120){  
  overflow=0;
  Sek++;
}

Ich weiss, ist ne sehr grundlegende Frage, aber ich bastle seit Tagen 
dran herum und mein Kopf dampft schon...

- Auszug des Ref. Manuals bezüglich VIC:
Table 8. VIC Interrupt Channels (Tabelle):
VIC Input Channel: VIC.0
Logic Block: Watchdog
Interrupt Source: Timeout in WDG mode, End of Count in Counter Mode

Wäre echt super, wenn jemand mir das kurz erklären könnte.

Vielen Dank im Voraus
Grüsse aus der Schweiz
wuethria

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Adrian Wüthrich wrote:
> Ich bin dran, auf einem MCBSTR-9/ARM-9 eine kleine Stoppuhr zu
> programmieren. Da ich Anfänger bin, und mich noch nie mit Interrupts
> beschäftigte

Also rein pesönlich halte ich nen ARM9-Monsterboliden nicht für 
anfängertauglich. Ich weiß nicht, ob die auch so spurious Interrupt 
geneigt sind wie die NXP-ARM7.

In Deiner C-Installation sollte ja ein Example-Verzeichnis sein, wo auch 
ein Interruptbeispiel drin sein muß.
Das dann erstmal zum Laufen bringen und dann als Ausgangsbasis für 
eigene Experimente nehmen.

Hast Du überhaupt einen JTAG-Debugger?
Bei so großen Schlachtschiffen braucht man den ja unbedingt.


Ich persönlich würde lieber mit nem einfachen 8Bitter anfangen, das gibt 
weniger graue Haare.


Peter

Autor: Adrian Wüthrich (wuethria)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter

Vielen Dank für den grundsätzlich sehr hilfreichen Tipp! Das Problem 
dabei ist, dass es ein Auftrag von meinem Prof. ist sprich dies ist der 
letzte Teil einer Übung welche wir abgeben müssen :-). Und dazu bekamen 
wir dieses Board zur Verfügung gestellt.

Ich habe mittlerweile ein Ansatz gefunden, welcher mir weiterhelfen 
könnte. Hab das File im Anhang beigefügt. Dort löst ein Interrupt das 
Aufleuchten eines LED's aus und läuft auf meinem Board.

Die Frage die jetzt nur noch bleibt ist: Was ist die Bedeutung der 
Interrupnumber? Legt die fest, nach wievielen Timerintervallen ein 
Interrupt ausgelöst wird? Und wie bringe ich eine Variable dazu, dass 
Sie immer nach dem Interrupt inkrementiert wird?

Gruss
wuethria

Autor: Adrian Wüthrich (wuethria)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, habs grad gesehen, gibt ja den irqCount :-). Wie die Sache aber 
genau funktioniert ist mir nach wie vor ein Rätsel- allen voran die 
Interruptnumber.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.