hallo, ich habe hier einen Brotbrett-Aufbau mit zwei funktionsfähigen HC595-Schieberegistern. Die Softwarelösung aus dem Tutorial funktioniert einwandfrei. Allerdings komme ich mit der SPI-Ansteuerung nicht ganz klar. Hier mal mein Quelltext: ------------------------------ #include <avr/io.h> #define RCK PB3 #define SIN PB5 #define SCK PB7 void SchiebeClk() { loop_until_bit_is_set(SPSR, SPIF); PORTB |= (1<<RCK); PORTB &= ~(1<<RCK); } int main() { // DDRB - die SPI Pins als Ausgänge konfigurieren DDRB |= (1 << SIN) | (1 << SCK) | (1 << RCK); // SPI-Modul konfigurieren; Takt gaanz langsam SPCR |= (1 << MSTR)| (1 << SPE) | (1 << SPR0)| (1 << SPR1); // Dummy Daten, um SPIF zu setzen SPDR = 0b00000001; char a = 0b10101010; while(1) { loop_until_bit_is_set(SPSR, SPIF); a = ~a; SPDR = a; SchiebeClk(); } return 0; } ------------------------------- Die Verschaltung der drei Signale SIN, SCK, RCK ist mehrmals geprüft und daher korrekt. Während Programmieren über SPI sieht man eingehende Signale auch an den Schieberegistern (ca. 1sek "Rauschen"). Wenn man den Controller ohne SPI-Programmer anschaltet liegen die Schieberegisterausgänge stets auf anderen Pegeln. Sie sind aber konstant und wechseln nicht, wie eigentlich vom Programm vorgegeben. Man müsste ja aufgrund der Geschwindigkeit alle Ausgänge im Mittel als "halb aktiviert" sehen. Mit angestecktem und vom PC über Spannung versorgtem SPI-Programmer wechselt der Ausgang nicht mehr bei jedem Starten des uCs, sondern nur noch ab und zu. Vom gewünschten "Flimmern" an den SReg-Ausgängen auch hier keine Spur. was sehe ich nicht?
tatsache, und das obwohl ich SS jetzt gar nicht mehr nutze. Ich dachte, der fungiert im Tutorial nur als einfacher PORT-PIN, um das storageClock auszugeben. Das hab ich ja an einem anderen PIN gemacht! Dass du das gesehen hast, dass mein PB3 nicht der SS-Pin ist, ist auch nicht schlecht ;) danke auf jeden Fall!
Armin schrieb: > tatsache, und das obwohl ich SS jetzt gar nicht mehr nutze. Ich dachte, > der fungiert im Tutorial nur als einfacher PORT-PIN, um das storageClock > auszugeben. Deshalb sollte man neben dem Tutorial auch immer das Datenblatt zu Rate ziehen. Da steht dann nämlich drinnen, dass die SPI Einheit nur dann als Master arbeitet, wenn SS auf Ausgang steht.
>> tatsache, und das obwohl ich SS jetzt gar nicht mehr nutze. Ich dachte, >> der fungiert im Tutorial nur als einfacher PORT-PIN, um das storageClock >> auszugeben. Deshalb macht es Sinn, das SS gleich als das storageClock zu nutzen..
wohl wahr, ich bin nur in der Experimentierphase und hab gestern noch das HC165 zusätzlich dran gebaut. Ich wollte damals den SS frei halten, weil ich dachte, man braucht den möglicherweise für Eingangsports. jetzt bin ich schlauer und SS ist verwendet =)
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.