mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Wie wird ein Unterprogramm mit einem Timer gestartet?


Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir gelingt es nicht, ein Unterprogramm in regelmäßigen Abständen mit
einem Timer anzustoßen, da mir die grundsätzlichen Kenntnisse noch
fehlen und ich aus dem Datenblatt und auch aus der Bedienungsanleitung
(zum MSP430F133) nicht schlau werde. Auch die Beispiele In IAR
Kickstart führten nicht zum Erfolg.
Vielleicht hat jemand ein Programmbeispiel (Assembler) mit deutschem
Kommentar,  bei dem jede Zeile kurz erläutert wird, warum und weshalb
sie Zeile eingefügt wurde.
In meinen Beispielen ist u.a. von Interrupt Vector oder toggle die
Rede. Was versteht man darunter?
Wolfgang

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Wolfgang!

Ich habe gerade überlegt, Dir das alles zu erklären, aber dann kam mir
die Idee, mal in das AVR-Tutorial zu gucken. Wenn Du Dir da mal die
erläuterungen zu Interrupts anschaust, denke ich, kannst Du das auch
recht einfach auf den MSP430 umsetzen.

Gruß,
Patrick...

Autor: Wolfgang (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hab mir AVR Tutorial angesehen und glaube, es soweit verstanden zu
haben. Leider wird mein Versuchsunterprogramm nur einmal gestartet.
Weitere Details im Dateianhang. Vielleicht erkennt jemand meinen
Fehler.

Wolfgang

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Wolfgang!

Du musst das Flag für Deinen Interrupt noch zurücksetzen. Das machst Du
in der ISR als letztes. Wenn Du es nicht als letztes machst, dann kann
Deine ISR durch einen weiteren auftretenden Interrupt unterbrochen
werden. Folglich ist dieser Interrupt so lange gesperrt, bis Du ihn
wieder freigibst.

Ich denke, das bekommst Du hin ;)

Gruß,
Patrick...

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja: warum zählst Du eigentlich R5 und R6 runter? Soll das eine
Verzögerungsschleife sein? Ich denke, die brauchst Du gar nicht...

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zunächst Dank an Patrick,
ich mir schon so etwas ähnliches gedacht, dass man ein Interrupt-Flag
zurücksetzen muss, und auch verschiedene Befehle ausprobiert, wo ich
annahm, dass  diese dafür zuständig sind. Da das Herumprobieren nichts
brachte, dachte ich, frag mal die Experten. Andererseits habe ich in
meinen Beispielen keine entsprechende Zeile gefunden. Deshalb meine
Frage (an alle Experten): Wie muss die Befehlzeile lauten? Oder fehlt
noch etwas?
Das TA0_ISR programm habe ich nur deshalb so aufgebaut, damit ich erst
einmal etwas sehen kann. Es hat keine besondere Bedeutung. Hier soll
später mal etwas anderes stehen, was bereits auch schon nach meinen
Vorstellungen läuft.
Mit freundlichen Grüßen
Wolfgang

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich das jetzt richtig im Kopf habe, dann geht das so:

        bic  #TAIFG,  &TACTL        ; reset interrupt flag

Ohne Gewehr...ähm Gewähr...

Autor: Wolfgang (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Problem erkannt,

a) es gab kein Hauptprogramm, welches durch einen Interrupt
unterbrochen werden konnte
b) falscher Interrupt -Vector
offensichtlich ist die Zeile: " bic #TAIFG,&TACTL -- ohne Gewehr"
nicht notwendig, da, wenn ich das richtig gelesen habe, mit reti das
GIE in das Statusregister zurückgeschrieben wird.
Hab mal mein neues Programmteil angehängt, welches bei mir
funktioniert
mfg
Wolfgang

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.