www.mikrocontroller.net

Forum: Gesperrte Threads Interrupt wird unregelmäßig


Autor: Tine Schwerzel (tine)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe in einem dspic 30F folgende Interrupt Routine am Laufen:
void
_ISR _T1Interrupt( void)
{
  TMR1=0; //restart timer
  LATDbits.LATD0=!LATDbits.LATD0; //toggle LED
  m10++; //increase 10 ms tic counter
  a0=a1; //shift HIER IST DAS PROBLEM
    
  _T1IF=0; //!!!!clear interrupt flag!!!!
}//Timer 1 interrupt

Die Routine wird alle 10 ms oder 18432 Taktzyklen aufgerufen, viel Zeit 
also. Komischerweise wird sie unregelmäßig, sobald die mit "Hier ist das 
Problem" markierte Zeile drin steht. Kommentiert man sie aus: null 
problemo. Steht sie drin: LED flackert unregelmäßig. Das gleiche 
passiert wenn ich statt den beiden chars a0/a1 ein char array a[2] 
verwende, und das erste auf das nullte Element schiebe.
Weder auf PortD noch auf a wird im Moment zugegriffen, ich habe schon 
allen Code ringsrum entfernt. Aber sobald das da drin steht, spinnt der 
Interrupt.

: Verschoben durch User
Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> LED flackert unregelmäßig.
Welche LED wird denn da wie und wo angesteuert?

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du darfst den Timer erst am Ende "restarten", d.h. nachdem Du den "tic 
counter" erhöht hast, sonst landest Du ggf. mehrmals unmittelbar 
hintereinander in der Routine.

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, seh' grad' dass der Tick-Count nicht der Timer ist. War wohl noch 
zu früh.
Hm... dann müßte man mal vlt. mal schauen was mit a0 an anderer Stelle 
noch so passiert.

Autor: Ferkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laß Dir vom Compiler ein Assembler Listing erstellen und sieh Dir an, ob 
da etwas auffällig ist.
Spinnender Interrupt -> Stack Problem; Überlauf, nicht initialisiert.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wichtige Regeln - erst lesen, dann posten!
•Aussagekräftigen Betreff wählen
•Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.