Forum: Mikrocontroller und Digitale Elektronik ATmega324P SPI Slave - seltsames Verhalten


von Peter D. (pdiener) Benutzerseite


Lesenswert?

Hallo zusammen und frohe Weihnachten,

ich habe ein Problem, das mir keine Ruhe lässt.
Es geht um ein System mit ATmega328 @16MHz als SPI Master, einem Wiznet 
W5100 Ethernet Chip @25MHz als Slave über Pegelwandler (und 
Deselektierungsschaltung nach Application Note, damit der SPI als 
multi-Slave laufen kann) und einem ATmega324P @14,7456MHz als SPI Slave.

Dementsprechend 2 Chipselect-Leitungen vom Master zu den beiden Slaves.

Damit der SPI für den AVR-Slave nicht zu schnell ist, läuft er am Master 
auf Clock/8, wenn er mit dem AVR kommuniziert. Sobald der Chipselect 
davon weg ist, läuft er für den W5100 auf Clock/4, danach wird wieder 
zurückgeschaltet.

Jetzt das Problem:

Wenn der W5100 dem Master antwortet, kommt nur Unsinn an.
Wenn ich am AVR-Slave das SPI-Modul nicht einschalte, gehts.
Chip-Selects sind ok.
Wenn ich den Takt am SPI für den W5100 nicht auf Clock/4, sondern auf 
Clock/8 stelle, gehts auch.
Und allgemein tritt der Fehler nicht immer, jedoch gut reproduzierbar 
auf. Es scheint mir eine gewisse Abhängigkeit zu dem gerade gesendeten 
Datenwort zu bestehen.

Kann es also sein, dass der AVR als Slave trotzdem er deselektiert ist, 
anfängt auf den Bus zu senden, wenn dort zu hohe Frequenzen auftreten?

Ich weiß, dass die Frequenz kleiner Clock/4 sein soll, damit die 
Kommunikation funktioniert. Aber muss das auch so sein, wenn er gerade 
nicht selektiert ist?
Das würde ja bedeuten, dass auch alle anderen Busteilnehmer so langsam 
gefahren werden müssen!

Ist das Problem bekannt?

Grüße,

Peter

von Max (Gast)


Lesenswert?

Ich würde mal auf parasitäre Kapazitäten tippen...
Kuk mal (wenn du hast ) mit nem oszi die flanken an...

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Also, wenn du damit meinst, dass etwas in den CS vom AVR-Slave 
eingekoppelt wird, das ist nicht der Fall, der ist während der Zugriffe 
auf den W5100 ganz stabil auf high.

Es wird wohl darauf rauslaufen, dass ich den Slave-Teil mit dem AVR in 
einer Testschaltung aufbaue, in der ich gezielt verschiedene Frequenzen 
an den einzelnen Leitungen anlegen kann.

von (prx) A. K. (prx)


Lesenswert?

Wie lang sind die Leitungen der beiden SPI-Verbindungen?

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Geschätzte 4 cm. Die Karte ist professionell gefertigt, die Leiterbahnen 
haben Abstand mit doppelseitigen Masseflächen dazwischen.

Aber wie gesagt, die Signalflanken sind sauber wie aus dem Lehrbuch. Was 
mich wundet, ist, dass das Problem auftritt, sobald die Taktfrequenz am 
SPI im unselektierten Zustand die Frequenz überschreitet, die man im 
selektierten Fall fahren dürfte.

Ich werde testweise mal die Quarzfrequenz von dem Slave-AVR hochsetzen, 
wenn das Problem dann weg ist, liegt es an der zu hohen Frequenz am SPI.
Dafür muss ich allerdings erst Quarze bestellen.

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
Noch kein Account? Hier anmelden.