- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 16

Thema: SPI Interrupt wird ZU SPÄT ausgelöst nach Sendevorgang

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Jetzt hab ichs, glaube ich:
    Der Interrupt Vector liegt ja bei 0x0008 bzw. 0x0018
    und dort ist folgender Code zu finden, nämlich der Eintritt in die Interrupt Funktion
    Hier werden alle notwendigen Register gerettet, erstmal unabhängig davon ob diese benutzt werden.

    Code:
    0008  821B     BSF btemp, 1, ACCESS
    000A  CFFA     MOVFF PCLATH, __pcstackCOMRAM
    000C  F001     NOP
    000E  CFFB     MOVFF PCLATU, 0x2
    0010  F002     NOP
    0012  CFE9     MOVFF FSR0, 0x3
    0014  F003     NOP
    0016  CFEA     MOVFF FSR0H, 0x4
    0018  F004     NOP
    001A  CFE1     MOVFF FSR1, 0x5
    001C  F005     NOP
    001E  CFE2     MOVFF FSR1H, 0x6
    0020  F006     NOP
    0022  CFD9     MOVFF FSR2, 0x7
    0024  F007     NOP
    0026  CFDA     MOVFF FSR2H, 0x8
    0028  F008     NOP
    002A  CFF3     MOVFF PROD, 0x9
    002C  F009     NOP
    002E  CFF4     MOVFF PRODH, 0xA
    0030  F00A     NOP
    0032  CFF6     MOVFF TBLPTR, 0xB
    0034  F00B     NOP
    0036  CFF7     MOVFF TBLPTRH, 0xC
    0038  F00C     NOP
    003A  CFF8     MOVFF TBLPTRU, 0xD
    003C  F00D     NOP
    003E  CFF5     MOVFF TABLAT, 0xE
    0040  F00E     NOP
    0042  C01B     MOVFF btemp, 0xF
    0044  F00F     NOP
    0046  C01C     MOVFF 0x1C, 0x10
    0048  F010     NOP
    004A  C01D     MOVFF 0x1D, 0x11
    004C  F011     NOP
    004E  C01E     MOVFF 0x1E, 0x12
    0050  F012     NOP
    00D8  0012     RETURN 0
    54:

    !! Die NOP s sind NICHT etwa reingebastelt um Code zu verschwenden, obwohl ich das auch am Anfangs dachte....
    das ist Prozessorbedingt so bei einem Befehl MOVFF.

    er kommt auch bei einem Interrupt in diesen Code rein, habe ich grad mal simuliert und das dauert dann 40 Cycles für diesen Codeabschnitt

    Bei 16 MHz / 4 wegen der Pipeline Struktur = 4 MHz =250ns pro Cycle
    Bei 40 Cycles also 40*250ns sind 10 us und das entspricht deinem Fehler.

    Vermutlich kommt hier dann die "Optimierung" zur Geltung, wenn man eine Pro Version hat.Ich kann das leider nicht testen, habe nur die Freie VersionIch glaube man kann sich aber auch eine Pro Version Testweise runterladenIdee: Du könntest noch die PLL im Chip einschalten und die Zeit damit vierteln.
    Also den internen Takt vervierfachen. Must deine SPI Einstellung vermutlich noch ändern.
    Geändert von Siro (07.06.2018 um 14:45 Uhr)

Ähnliche Themen

  1. SPI Interrupt wird nicht ausgelöst nach Sendevorgang
    Von steckplatte im Forum PIC Controller
    Antworten: 4
    Letzter Beitrag: 25.04.2018, 20:08
  2. Interrupt wird nicht ausgelöst.
    Von DarkSoldier im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 28.04.2013, 14:42
  3. Interrupt wird nicht ausgelöst
    Von Michael_am32 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 02.08.2010, 00:37
  4. Es wird kein Interrupt ausgelöst
    Von MrTaco im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 19.07.2010, 16:48
  5. Wann wird ein Interrupt ausgelöst?
    Von CKroll im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 08.09.2004, 08:16

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad