Interrupt Beeinflussung

OP #1792550
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:
1
void main_ILD ()
2
{
3

4
[...]
5

6
  USART_Config(19200);
7

8
  ctl_start_timer(ctl_increment_tick_from_isr);
9
  ctl_global_interrupts_enable();
10

11
  Event_Handler_Init();
12

13
[..]
14

15
  while(1)
16
  {
17
    curTime = ctl_get_current_time();
18
    Interpreter ();
19

20
    if (curTime - DPRAM_Old_Time > 50)
21
     {DPRAM_Old_Time = curTime;
22
     DPRAM_Active();
23
    }
24
  }
25
}
26

27

28

29
void Event_Handler_Init()
30
{
31
  ctl_set_isr(29, 1, CTL_ISR_TRIGGER_NEGATIVE_EDGE, Event_Handler, 0);
32
  ctl_unmask_isr(29);
33

34
[...]
35
}
36

37

38

39
void USART_Config(DWORD BaudRate_Calc)
40
{
41
[...]
42

43
  ctl_set_isr(6, 2, CTL_ISR_TRIGGER_FIXED, US0_Int, 0);
44
  ctl_unmask_isr(6);
45

46
  SETBIT(US0_IER, 0);
47
}

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

Gruß, S
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.