Hallo, ich bin mit einem ATMega16 an einem Projekt dran. Ich benutze AVR Studio und einen Billig ISP Parallelport Programmer (2 Widerstände). An dem SPI hängt ein Dataflash und ein FPGA (später noch eine SD-Card). Funktioniert alles wunderbar. Jetzt habe ich aus Speicherplatz gründen einen ATMega644 eingesetzt. Alle Register angepasst und habe nun das Problem, das das senden von SPI (warten auf das SPIF-Bit) nur für ein einziges Byte funktioniert. Sprich : Ich sende ein Byte, und beim 2. Byte bleibt der uC in der While-Schleife hängen. Ich habe den ganz normalen "Standard" Code für SPI verwendet void vSPIInit (void) { PRR &= ~(1 << PRSPI); DDRB |= (1<<5)|(1<<7); SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0); SPSR = 0; } UCHAR ucSPITransceiveByte (UCHAR ucData) { PRR &= ~(1 << PRSPI); SPDR = ucData; while(!(SPSR & (1<<SPIF))); return SPDR; } Im Datenblatt steht auch nicht viel mehr (bis auf das man PRR auf 0 bzw. das 2. Bit im PRR löschen sollte/muß) Was kann das sein, das so etwas einfaches nicht funktioniert ?! Vor allem hatte ich auf dem ATMega16 keine solchen Probleme. Und das SPI-Interface sollte doch so einfach sein das es sich ohne größere Probleme portieren (zumindest auf den ATMegas) lässt oder ? Gruß Rene
wo soll denn der unterschied zwischen meinem code und dem aus dem datenblatt sein ?! ich sehe da keinen (bis auf die geschichte mit PRR) das ist ja das was ich nicht verstehe. der code ist auf dem mega16 und dem mega644 derselbe (laut datenblatt), aber es funktioniert einfach nicht. port-pins gesetzt laut datenblatt. initialisierung laut datenblatt und es läuft einfach nicht.
Hi Was hängt an deinem SS-Pin. Wird das SS-Pin als Eingang auf Low gezogen, wird der Mastermode abgeschaltet. MfG Spess
habs gefunden. der ss pin war nicht als ausgang geschaltet. den ss pin selbst nutze ich nicht da ja mehrere sachen (im moment nur 2) am spi hängen. danke noch und gruß rene
verständnisfrage: wenn ich nur master(mega32) und slave(mega32) habe, brauche ich also nur mosi,miso und clock, richtig? mfg
Hi Wenn du nur zum Slave senden willst: MOSI am Master und MOSI am Slave.SLK sowiso. Ansonsten noch MISO an MISO (Datenblatt S.137): MfG Spess
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.