mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tiemr-Interrupt mit Keil µVision


Autor: Mike Schultz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich hab hier einen 8051 Controller (genau gesagt ein Phytec-Board) und
zur Zeit versuche ich eienn einfachen Timerinterrupt zu erzeugen. Aber
so wie es aussieht klappt das nicht. Vielleicht hat jemand mehr
erfahrung damit und kann mir sagen, wo mein Fehler liegt.

startQNewARun() wird aus einem Menü heraus aufgerufen und soll den
timer starten.

Der Timer soll einfach nur einen Zähler erhöhen, der dann in
runQNewARun() auf einem LCD ausgegeben wird.

Leider steht der zähler immer bei 0.

Mike

Autor: Storr der Schnitter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst den Timer in der ISR wieder neu initialisieren und starten:


void v_Timer0(void) interrupt 1 using 2
{
    TR0 = 0;        // Timer0: STOP
    TL0 = 0x00;     // Timer0: Wertuebergabe
    TH0 = 0x00;     //
    TR0 = 1;        // Timer0: START

    test++;
}

Gruss, Jan

Autor: Mike Schultz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tip, aber leider hilft er nicht.
Irgendwie wird die ISR nie aufgerufen udn ich weiß nicht wiso.

Muß die ISR an irgendeine bestimtme Stelle oder brauch ich noch ein
Header-file?

MfG Mike

Autor: Storr der Schnitter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen 8051-uC benutzt Du denn?

Gruss, Jan

Autor: Mike Schultz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist wie oben geschrieben ein Phytec-Modul mit einem
Infineon C515 Controller (Genauer: SAB-C515-LN)

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man müßte schon ein komplettes Programm sehen und nicht nur einzelne
Kodeschnipsel.

"interrupt 1" sollte stimmen.

Das "using" laß bloß weg, wenn Du nicht weißt, wozu das nütze ist.
Das ist ein Schalter um eventuell geringste Laufzeitoptimierungen zu
Lasten der SRAM-Nutzung vorzunehmen, nachdem das Programm bereits
lauffähig ist.

Bei "using" geht der Compiler davon aus, daß Du weißt, was Du tust,
d.h. wenn es kracht, ist es Deine Schuld.


Peter

Autor: Storr der Schnitter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab' mal ein Testprogramm geschrieben und mit dem Simulator
getestet. Ist eigentlich genauso wie Du's beschrieben hast.

Vielleicht deaktivierst Du in einem anderen Progammteil Deine IRs?
Ein Header-File brauchst Du auf jedenfall nicht.
Ist vielleicht das Source-File mit der ISR nicht includet?

Teste doch mal das angehängte Programm mit deinem Simulator. Wenn Du im
Debug-Modus bist kannst Du Dir unter Peripherals die Register des Timer0
anzeigen lassen. Lege außerdem die Testvariable uiTest in's
Watch-Fenster.

Mehr fällt mir im Moment leider auch nicht ein.

Gruss, Jan

Autor: Mike Schultz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Viel dank schon mal soweit, mit dem Programm von dir funktioniert es.
Hab damit gerade mal Pulse mit einer Frequenz von ziemlich konstant
3.906kHz erzeugt.

Jetzt muß ich mal suchen, warum es in dme eigentlichen Programm nicht
klappt. Leider stammt der Quellcode dort nicht von mir und os weiß ich
nicht, was das alles programmiert ist. Aber ich werde mal suchen.

Mike

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.