Forum: Mikrocontroller und Digitale Elektronik soft spi


von Bj (Gast)


Lesenswert?

hallo zusammen. ich wollte eine soft-spi zum laufen bekommen. nur sie 
gibt mir die falschen werte aus. kann ener auf anhieb den fehler sehen? 
es sollen 13 bit msb first auf fallender flanke übertragen werden.

void soft_spi (int absWert)
{
char n;
int temp;


for(n = 13 ;n > 0 ;n--)                     //oder 14
  {

     for(q=0;q<=1;q++)
      {
      delay1();
     }
     PORTD |= (1 << PD0);    //clk
     temp = absWert & 4096;
        if (temp > 0)
         {
           PORTD = (1 << PD1);  //datenbit
       }
        else
         {
           PORTD = (0 << PD1);
       }
     absWert = absWert <<1;



     PORTD &= ~(1 << PD0);  //clk

  }
  PORTD &= ~(1 << PD1);
  for(q=1;q<=5;q++)
     {
     delay0();
    }

}

von Bertrik S. (bertrik)


Lesenswert?

At least this line
PORTD = (1 << PD1);  //datenbit
should be
PORTD |= (1 << PD1; // datenbit

And this line
PORTD = (0 << PD1);
should be
PORTD &= ~(1 << PD1);

Otherwise you clear all other bits except the PD1 bit.

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.