Hallo miteinander, habe ein merkwürdiges SPI Problem. Ich schalte während dem Betrieb von Slave auf Master um, jedoch kann ich den SS Pin nicht auf "1" setzen. Ich muss in auf "1" setzen, damit ich im Master-Mode bin. Der Pin geht aber nur kurz auf High und anschließend sofort wieder auf Low (Digi. Oszi gemessen). Bevor ich also senden kann springt der MCU wieder in den Slavebetrieb. Woran kann das liegen? Mache ich etwas am Init falsch (Init- Reihenfolge)? Mein MISO Pin wird nicht benutzt. Ist eine reines Master-Master-SPI. Bitte helft mir, es ist sehr wichtig. Mein Init: int spi_init_master() { //MCU wird auf Master programmiert char dummy; SPCR = (1<<SPE); SPCR |= (1<<MSTR)|(1<<CPHA)|(1<<SPR1)|(1<<SPR0); SPSR = 0; PORTB &= ~((1 << SS1)|(1<<DD_SCK)); // MOSI auf Output schalten, SCK auf Output PORTB |= (1<<DD_MOSI)|(1<<DD_SS);// SS auf High DDR_SPI |= (1<<DD_SS)|(1<<DD_MOSI)|(1<<DD_SCK); PORTB |= (1<<DD_SS); DDR_SPI &= ~(1 << DD_MISO); // Input deklarieren dummy = SPDR; dummy = SPSR; // Enable SPI, Master-Mode einstellen, Frequenz einstellen _delay_ms(10); //SPCR |= (1<<SPE); return (0); }
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.