Forum: Mikrocontroller und Digitale Elektronik SPI funktioniert nicht


von Tim (Gast)


Lesenswert?

Hallo zusammen


Ich habe folgenden Code:
1
DDRD = (1<<PD5) | (1<<PD4); //PD5 als Ausgang (PWM), PD4 als Ausgang (LCD_E)
2
  DDRB = (1<<PB0) | (1<<PB3) | (1<<PB5); //PB0 als Ausgang (Sinus Trigger), PB3 ausgang MSOI, PB5 ausgang SCK
3
4
SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR1) | (1<<SPR0);
5
  SPCR&=~(1<<CPHA);
6
  SPCR&=~((1<<CPOL)&(1<<DORD));
7
  
8
  while(1)
9
    {
10
    /*_delay_ms(1);
11
    uiPhase++;
12
    if(uiPhase == 360) uiPhase = 0;
13
      */
14
    
15
    
16
    //_delay_ms(1000);
17
    SPDR = 0xAA;  
18
    _delay_ms(20);       
19
    }

Weshalb kommt bei SCK und auch bei MOSI nix raus?

Danke schonmal

von Stefan E. (sternst)


Lesenswert?

Tim schrieb:
> Weshalb kommt bei SCK und auch bei MOSI nix raus?

Weil du den SS Pin nicht auf Ausgang gestellt hast.


Und so nebenbei:
1
  SPCR&=~((1<<CPOL)&(1<<DORD));
Das macht nicht das, was du denkst.
Es macht
1
  SPCR &= ~0;
also gar nichts.

von spess53 (Gast)


Lesenswert?

Hi

>Weshalb kommt bei SCK und auch bei MOSI nix raus?

SS-Pin beachtet? Datenblatt: SPI->SS Pin Functionality.

MfG spess

von Cyblord -. (cyblord)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Weshalb kommt bei SCK und auch bei MOSI nix raus?
>
> SS-Pin beachtet? Datenblatt: SPI->SS Pin Functionality.
>
> MfG spess

Genau darum bietet es sich an, den SS Pin als CS zu nutzen. Denn dann 
ist er sicher Ausgang und somit besteht die Gefahr nicht mehr, dass der 
Pin als Eingang genutzt wird und das SPI-Master Bit rausfliegt.

gruß cyblord

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.