Moin Der SPI funktioniert nur 14 Sekunden lang richtig. Warum????? Ich will einen Mega48 mit einem Mega128 über SPI verbinden. Der Mega128 soll immer als Master arbeiten, da später noch weitere Slaves angesprochen werden sollen. Der Mega48 schreibt ein Byte in das SPDR und löst dann beim Mega128 ein Interrupt aus. Dieser holt sich dann über den SPI das Byte und gibt dieses über den UART aus. Klappt ja auch alles, aber ca. nur 14 Sekunden nach dem einschalten. Danach wird immer nur das selbe Byte am UART ausgeben. Egal was ich in das SPDR Register im Mega48 reingeschrieben habe. Läuft vielleicht der Stack über?
Hi! Vielleicht bin ich noch im Mittagsschlaf, aber: Wo ist die Endlosschleife im Main des Slaves? Dirk
Moin habe ich probiert, funktioniert aber immer noch nicht. Die ISR wird aufgerufen, das habe ich überprüft. Es laufen beide uC weiter. clemens
Dann fällt mir noch auf, daß Du eine C-Datei includierst. Ist das Absicht? Schick auch mal den Source. Dirk
Moin Die uart.c ist die einzige Datei die includiert wird. Da ist aber glaube ich nicht das Problem. Das Problem liegt glaube ich im dem "Data Shift Register" und dem "Data Read Register" vom SPI. Das eine kann ich ich irgendwie beschreiben aber nicht gleich wieder auslesen. Wenn ich das SPDR nicht über einen Interrupt auslese sondern jede Sekunde das SPDR über UART ausgebe ist das kein Problem. Sobald das über die ISR läuft stürzt der nach ein paar Sekunden ab. clemens
Moin habe die Lösung gefunden. Der SS Pin beim Master muss auf logisch 1 (als Ausgang) gesetzt werden, da sonst der Master irgendwann in den Slave Modus wechselt und dann kein Kommunikation möglich ist. Clemens
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.