- LiFePO4 Speicher Test         
Ergebnis 1 bis 5 von 5

Thema: SPI Interrupt wird nicht ausgelöst nach Sendevorgang

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von steckplatte Beitrag anzeigen
    Leider funktioniert auch das nicht. Ist auch gut im Zeitdiagramm zu erkennen. Möchte auch nicht mit vielen delays und NOP's arbeiten um diese paar Taktzyklen aufzufüllen bis das Receive buffer wieder auf low ist..mit einem Interrupt ist das viel sauberer und genauer.
    Auf deinem Bild ist zwar kaum was zu erkennen, wenn ich aber die gelben Marken mal ernst nehme, schaust du aufs falsche Signal. Es geht um SPIRBF, ganz unten rechts. Das wird low, sobal du SPI1BUF liest, ( temp = SPI1BUF; ) ganz egal wann das ist, sonst könnte man das Byte je mehrmals auslesen ohne es zu merken. Und es wird high, wenn ein Datenwort hinausgetaktet worden ist. Das ist genau was du willst. Im Gegensatz zum Interruptflag kommt es immer, auch wenn man die Interruptbedingung mal falsch konfiguriert hat. Erst wenn du die FIFOs benutzt, hat das Interruptflag Vorteile. Nach der Theorie sollte es gehen und ich glaub, ich hab das auch schon so gemacht. Ich hab bloß im Moment keinen Code zur Hand, um nachzuschauen.

    MfG Klebwax

    P.S. Hab in meinem alten Code gefunden, daß ich das genauso gemacht habe.
    Strom fließt auch durch krumme Drähte !

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    18.08.2010
    Beiträge
    12
    Hallo Klebwax,

    Oh tut mir leid, habe nicht gemerkt dass das Bild so klein geraten ist. Die gelben Marken waren um zu zeigen was ich eingestellt habe(CKE/CKP..)
    Okay eventuell war mein Fehler dass ich vorher den Buffer nicht ausgelesen habe, damit der SPIRBF auf Low geht.
    Werde dann das hier morgen ausprobieren, hoffe es klappt.
    Code:
    CS=0;
    dummy=SPI2BUF; // auslesen damit SPIRBF auf Low geht
    SPI2BUF=0xAD;
    while(SPI2STATbits.SPIRBF==0)
    ; // warten bis SPIRBF wieder High wird
    dummy=SPI2BUF;
    CS=1;
    Es wundert mich nur warum das mit dem Interrupt Flag nicht funktioniert. Hab im Microchip forum viele Problem Threads dazu gelesen, dass das Interrupt Flag einfach nicht gesetzt wird. Da kam auch die Lösung wegen den Remappable Pins, zuerst das SCK auf Eingang zu setzen und dann erst als Ausgang. Aber so richtig geklappt hat das noch nicht.

    lG
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Bildschirmfoto 2018-04-25 um 20.23.21.jpg  

Ähnliche Themen

  1. Timer Interrupt wird nicht mehr ausgelöst
    Von damnit im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 25.10.2013, 07:45
  2. Interrupt wird nicht ausgelöst.
    Von DarkSoldier im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 28.04.2013, 15:42
  3. Interrupt wird nicht ausgelöst
    Von Michael_am32 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 02.08.2010, 01:37
  4. Interrupt wird nicht ausgelöst
    Von einballimwas im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 01.09.2009, 15:29
  5. Interrupt wird nicht ausgelöst
    Von PcVirus im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 10.04.2008, 16:14

Berechtigungen

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

LiFePO4 Speicher Test