mikrocontroller.net

Forum: Gesperrte Threads Interrupt Beeinflussung


Autor: S. S-punkt (hoagn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

verschicke und empfange per RS232 Daten an/von einen AT91SAM7SE. Nun hab 
ich folgendes Probllem:

Es tritt völiig stochastisch (mal beim 1., mal beim 50. datensatz) ein 
Fehler beim Senden von Daten zum µC auf, d.h. er geht danach in den 
pabort_handler und das Porgramm muss neu gestartet werden. Ich habe die 
Vermutung, dass sich Interrupts gegenseitig beeinflussen. Ich arbeite 
mit einem Timer, einem USART Interrupt und einem externen, die sind 
folgendermaßen im code definiert:
void main_ILD ()
{

[...]

  USART_Config(19200);

  ctl_start_timer(ctl_increment_tick_from_isr);
  ctl_global_interrupts_enable();

  Event_Handler_Init();

[..]

  while(1)
  {
    curTime = ctl_get_current_time();
    Interpreter ();

    if (curTime - DPRAM_Old_Time > 50)
     {DPRAM_Old_Time = curTime;
     DPRAM_Active();
    }
  }
}



void Event_Handler_Init()
{
  ctl_set_isr(29, 1, CTL_ISR_TRIGGER_NEGATIVE_EDGE, Event_Handler, 0);
  ctl_unmask_isr(29);

[...]
}



void USART_Config(DWORD BaudRate_Calc)
{
[...]

  ctl_set_isr(6, 2, CTL_ISR_TRIGGER_FIXED, US0_Int, 0);
  ctl_unmask_isr(6);

  SETBIT(US0_IER, 0);
}


Hate jemand eine Idee an was es liegen könnte? Hab schon verschiedene 
Prioritäten etc. ausprobiert, ohne erfolg.

Gruß, S

: Verschoben durch User
Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
S. S-punkt schrieb:
> [...]

Das ist der Fehler.

Du kannst gerne kommentarlose Schnipselchen posten, die warscheinlich 
den Fehler nicht enthalten. Hilft aber kaum.

Stichworte zur Fehlersuche bei Interrupts: volatile, atomic


Peter

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.