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


von Adrian W. (wuethria)


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:
1
if (Interrupt)       
2
  overflow++;
3
4
if(overflow>=2){            
5
  overflow=0;        
6
  Zehntelssek++;
7
} 
8
9
if(overflow>=120){  
10
  overflow=0;
11
  Sek++;
12
}

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

von Peter D. (peda)


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

von Adrian W. (wuethria)


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

von Adrian W. (wuethria)


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.

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
Noch kein Account? Hier anmelden.