PIC18F2420 hört auf SPI, obwohl SS high

Gast #1419255
Lesenswert?
• ▲
▼
Hallo Forum!

Ich habe hier einen PIC18F2440, dessen SPI ich als Slave MIT "SS Control 
enable" konfiguriert habe. Aber er setzt sein SSPIF (Synchronous Serial 
Port Interrupt Flag), wenn ein Byte über die SPI übertragen wurde, 
OBWOHL sein SS-Pin andauernd high ist.
Weder die Initialisierung durch manuelles Setzen der Register, noch die 
Funktion OpenSPI() liefern ein gewünschtes Ergebnis.

Hat jemand einen Tipp für mich? Bin langsam am verzweifeln...

Danke schon mal,
Grüße,
Michael
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <p18cxxx.h>
4
#include <spi.h>
5
#include "defs.h"
6

7
#pragma config OSC = HS   //high speed osc
8
#pragma config PWRT = ON  //powerup timer
9
#pragma config WDT = OFF  //Watchdog aus
10
#pragma config LVP = OFF  //LV-ICSP
11

12
#define TAKT 14745600UL
13

14

15
void init_mcu(void)
16
{
17
  LATA |= (1<<5);
18
  TRISA = ~(1<<4);
19
  LATB=0;
20
  TRISB = ~((1<<3)|(1<<4)|(1<<5));
21

22
  /* SPI enable, slave , rising clk */  
23
//  SSPSTAT |= (1<<CKE);
24
//  SSPCON1 = (1<<SSPEN)|(1<<SSPM2);
25
  OpenSPI(SLV_SSON, MODE_00, SMPEND);
26

27
  /* interrupt */
28
  /* glob en - SPI en */
29
  PIE1 = (1<<SSPIE);
30
  INTCON = (1<<GIE)|(1<<PEIE);
31
}
32

33

34
#pragma code
35
void main()
36
{
37
  unsigned char i=0;
38
  init_mcu();
39

40
  while(1)
41
  {
42
    LATB = (1<<i);
43
    i++;
44
    if(i>2)    i=0;
45
    Delay10KTCYx(1000);
46
  }
47
}
48

49
void high_isr(void);
50
#pragma code high_vector=0x08
51
void interrupt_at_high_vector(void) { _asm goto high_isr _endasm }
52
#pragma code
53
#pragma interrupt high_isr
54
void high_isr (void)
55
{
56
  if(PIR1 & (1<<SSPIF))
57
  {  /* SPI transaction done */
58
    LATB ^= (1<<4);
59
    PIR1 &= ~(1<<SSPIF);
60
  }
61
}
Gast #1419431
Lesenswert?
• ▲
▼
Hallo holger,

ich hab das ADON bit in ADCON0 auf 0 gesetzt und die ComparatorMode-Bits 
in CMCON alle auf 1.
Damit sollte beides aus sein. Meine SPI funktioniert leider trotzdem 
noch nicht wie gewünscht.

Grüße,
Michael
Gast #1422630
Lesenswert?
• ▲
▼
holger schrieb:
>>ich hab das ADON bit in ADCON0 auf 0 gesetzt
>
> Das reicht aber nicht!
> ADCON1 auch richtig setzen.

Hab ich auch gesetzt. Sogar das PBADEN config pragma hab ich auf OFF 
gestellt.
Hilft alles nichts!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.