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(); } }
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.