Nach dem Reset geht MOSI auf high und SCK rührt sich nicht, bleibt also auf low. Auch im Debugger in AVR Studio blinkt nur PINB7, nicht aber PORTB7. Das DDR ist aber richtig gesetzt (denke ich zumindest). Im Datenblatt habe ich auch nichts gefunden, was mir helfen könnte. Vielleicht etwas mit den Fuse-Bits?
Simon K. wrote:
> Ist der SS Pin auf Ausgang gestellt?
Denke schon:
LDI TEMP,
(1<<DDB5)|(1<<DDB7)|(1<<DDB4)|(1<<SLAVE_1)|(1<<SLAVE_2)|(1<<SLAVE_3)
OUT DDRB, TEMP
DDB4 ist der SS-Pin.
Hallo, //Konfiguriere SPI LDI TEMP, (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1) OUT SPCR, TEMP SBI SPSR, SPIF SPIF ist ein ReadOnly-Bit. Gelöscht wird es beim ersten Lesezugriff mit gesetzem SPIF (Mega16 Datenblatt Seite 140). Ändere das mal in IN TEMP,SPSR sonst fällt mir erstmal nichts auf. Gruß aus Berlin Michael
Ich muss SPIF zu Beginn des Programms setzen, da im späteren Verlauf das Senden erst möglich ist, wenn SPIF gesetzt und somit die vorhergehende Übertragung komplett ist. Aber ich werde schauen, ob 's daran liegt, danke schonmal. ps: Kann es sein, dass der Debugger das SPIF-Bit setzt, obwohl es read only ist? Missachtet er solche Details? Das würde das Problem nämlich erklären.
Tatsächlich, das SPIF-Bit wurde durch SBI SPSR, SPIF nur im Debugger gesetzt, nicht aber im uC. Ich habe die Zeile durch OUT SPDR, DATA_TO_SEND ersetzt. Das setzt den SPIF-Flag indirekt, indem ein "sinnloses" Byte ohne Empfänger in die Welt verschickt wird. Das Programm läuft jetzt auch auf der Hardware.
Hallo, hatte ich eben schreiben wollen, dann Dein Posting gesehen und meins wieder gelöscht... :-) Gruß aus Berlin
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.