DSPIC33F SPI- Problem mit Highpegel an SDO

Gast #3663150
Lesenswert?

Hallo zusammen,

ich möchte einen dsPIC33FJ12MC202 programmieren. Derzeit bin ich daran 
die SPI Schnittstelle flott zu machen.
Das ganze funktioniert auch soweit ganz gut. Die einzige Problematik, 
die sich mir stellt ist, dass der SDO Pegel nicht auf die (meines 
Erachtens) vorgesehenen 3,3V schnellt. sondern lediglich auf ca. 1V. Der 
Clock funktioniert völlig normal und erreicht den logischen High-Pegel 
von 3,3V.

Habt ihr Tipps, wie ich an diese Problematik herangehen sollte?

Vielen Dank im Vorraus

Christian

Hier der relevante Code :
1
// ### Basic includes ###
2
#include "p33fxxxx.h"
3
#include "math.h"
4

5
char test=0;
6
char test2=0;
7

8
int main(void)
9
{
10
  
11
  // ## Initialisierung ##
12
    
13
  // Wählen, welche ANx PINS analog oder digital genutzt werden (0=analog)
14
  AD1PCFGL = 0b1111111111111111;  // 15...0 : as digital
15

16
  //SPI initialisiert: Mode 00, SDI PinRP0, SDO PinRP1, SCK PinRP2!
17
  SPI1CON1bits.CKE=0;
18
  SPI1CON1bits.CKP=0;
19
  SPI1CON1bits.MSTEN=1;  // Master
20
  SPI1CON1bits.SPRE=0;  // Divide by 8
21
  SPI1CON1bits.PPRE=0;  // Divide by 64
22
  SPI1CON2 = 0x0000;
23
  SPI1STAT = 0x8000;
24
  __builtin_write_OSCCONL(OSCCON & ~(1<<6));  //Unlock Registers
25
  RPINR20bits.SDI1R=0;//SDI
26
  RPOR0bits.RP1R=7;//SDO
27
  RPOR1bits.RP2R=8;//SCK
28
  __builtin_write_OSCCONL(OSCCON | (1<<6));  // Lock Registers again
29

30
  //In der Main Schleife steht folgendes:
31

32

33
  while(1)
34
  {
35
    while (test<256)
36
    {
37
      SPI1BUF = test;
38
        while (!SPI1STATbits.SPIRBF);
39
        test2 = SPI1BUF;
40
        test++;
41
      }    
42
    test=0;
43
   }
44
}
Gast #3663368
Lesenswert?

Zuerst mal, danke für die schnelle Antwort und dass ihr euch dafür zeit 
genommen habt:

Zu euren Vorschlägen:

Max H. schrieb:
> Ich würde nach einem Hardwarefehler (Lötbrücken,...) suchen

Das ganze ist auf einem Breadboard aufgebaut, ich habe allerdings 
bereits alles nochmal von vorn verkabelt, keine Änderung :(

> und den IO mal über LATx Register wackeln lassen um zu testen ob der
> Ausgangstreiber kaputt ist.

Ich habe es auch nach deinem Vorschlag wackeln lassen. Hier funktioniert 
er völlig normal.

Chris B. schrieb:
> SDO auf RP1 - das ist auch der PGEC1 Anschluss. Hängt da der PICKIT3 /
> ICD3 noch dran? Eventuell stört der ja.

JA, der Pickit3 hängt noch dran. Ich habe den Pin auf RP15 gelegt, 
selbes Ergebnis :(

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