Salut, seit gestern abend quält mich folgendes undurchschaubares Problem: Ich hab am Mega8 ein 595 Shiftregister. MOSI, SCLK beschaltet, als ST_CP lege ich /SS an, was als output definiert ist. Verwende ich das Hardware-SPI, passiert folgendes: Die Daten kommen soweit an, nur daß alles links von einer "Null" abgeschnitten wird. Beispiele: Ich sende Es kommt an 01010101 00000001 10101010 00000000 00001111 00001111 11001111 00001111 Dieses Verhalten kann ich überhaupt nicht nachvollziehen. Am 595 sind alle Pins beschaltet, außer Q7' (weil output). Die /RESET-Leitungen sind miteinander verbunden, mit 10k-Pullup. Am Aufbau scheint es auch gar nicht zu liegen, denn setze ich die Leitungen manuell, dann funktioniert auch alles wunderbar. Ich habe die SPI-Routine sowohl in C, als auch in ASM getestet, beide Male dasselbe Ergebnis. Auch nen zweiten Mega8 hab ich schon getestet. Aber es bleibt dabei: Manuell geht es wunderbar (also Hardware ist ok), aber per Hardware-SPI schneidet er die Daten weg. Es kommen nur dann die gleichen Daten raus, wenn vom LSB her nur Einsen stehen. Ich hab das ganze im SPI Mode 0 und Mode 3 probiert... kommt dasselbe bei raus. Sonst hab ich mich an die Beispiele im Datenblatt gehalten. Hat jemand von Euch eine Ahnung, was da faul sein könnte? Ich kann die Listings bei Bedarf anhängen, aber die sind so trivial, daß es wohl nicht lohnt. Und wie gesagt, kein Unterschied zwischen C und ASM (in letzterem fühl ich mich sicherer ;). Danke für Hilfe, Tips und Hinweise! Mark
häng mal an, sonst wird das nichts. Hast du cpol und cpha beachtet?
Salut, wie gesagt, Mode 0 und Mode 3. Der 595 läuft lt. Datenblatt im Mode 0. Ergebnis war bei beiden Modi dasselbe. Bin grad dabei, mein Oszi anzuheizen... will der Sache mal auf den Grund gehen. Hab mal das .asm angehängt, das .c ist im Prinzip dasselbe. Hab ich vergessen, was zu initialisieren? Danke!!
Salut, ok... Problem gefunden. Es war das, was ich irgendwie schon gestern abend vermutet hatte, was mir aber dennoch sehr unwahrscheinlich vorkam: Der 10k Pullup am /RESET scheint zu hoch zu sein. Schließ ich ihn kurz, funktioniert's auch mit SPI wunderbar. Die Takte sind halt mit SPI wesentlich länger. Daß sich das so extrem auf den /MR auswirkt, hätte ich nicht gedacht. Aber ich habe SCK und /MR nebeneinander im Kabel verlegt, und die /MR-Leitung sieht aufm Oszi wirklich erschreckend aus. Danke für Eure Hilfe. Auch an Andreas, den ich gestern abend im Chat schon damit genervt habe. :) Mark
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.