SPI_STC Interrupt stark verzögert?

OP #2628749
Lesenswert?

Hallo,

ich betreibe mit einem ATMEGA32 die SPI Schnittstelle mit F_CPU/2.
Leider musste ich feststellen, dass von Ende Aussenden SPDR bis zum 
Aufruf des SPI_STC Interrupts 2.8µs vergehen. Anbei ein Bild, das SCK 
und einen Pin zeigt, der HIGH gesetzt wird bei Eintritt i 
ISR(SPI_STC_vect).

Kann mir jemand erklären wodurch die Verzögerung zustande kommt?

Es läuft übrigens kein anderer Code - anbei der Testschnippsel:


int main( void )
{
SPCR = (1 << SPE)|(1 << SPIE)|(1 << MSTR)|(1 << CPHA)|(1 << CPOL)|(0 << 
SPR1)|(0 << SPR1);
SPSR = (1 << SPI2X);

  for(;;)
  {
    _delay_ms(10);
    SPDR=0xFF;
  }
  return 0;
}
ISR(SPI_STC_vect)
{
  RT_PIN_HIGH
...
}
Angehängte Dateien:
#2628835
Lesenswert?

My D. schrieb:
> dass von Ende Aussenden SPDR bis zum
> Aufruf des SPI_STC Interrupts 2.8µs vergehen.
Das entspricht ca. 45 Taktzyklen. Schau dir mal das Assembler-Listing 
der ISR an, ob das hinkommen kann. Der AVR braucht AFAIK 4 Taktzyklen, 
um überhaupt in die ISR zu springen.
Könnte es also sein, dass am Anfang deiner ISR 40 Takte benötigt werden 
bis der Pin gesetzt wird?


Gruß Oliver

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren