www.mikrocontroller.net

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


Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Max (Gast)
Datum:

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

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie lang sind die Leitungen der beiden SPI-Verbindungen?

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.