Forum: Mikrocontroller und Digitale Elektronik Atmega16 wie SPI nutzen?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von mr.burns (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe einen Atmega16 und würde gerne über SPI ein externes Gerät 
ansteuern. Mit SPI habe ich noch nicht gearbeitet, deshalb hier meine 
Frage:

Der Atmega16 hat ja lt. Datenblatt ein Master/Slave SPI Serial 
interface. Das würde ich gerne für die Kommunikation mit dem externen 
Gerät nutzen.
Zum programmieren habe ich Atmels STK-600. Das STK-600 nutzt aber genau 
die Pins zum programmieren des Atmega16, die ich für SPI mit meinem 
externen Gerät brauche, also die MISO/MOSI Pins. Das ist ja dann 
irgendwie doppelt belegt - oder nicht? Wie mache ich das nun?

Danke für Eure Hilfe...

von DerDaniel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ganz normal verwenden. Die Doppelbelegung ist normal.
Der Peripherie noch externe Pull Widerstände verpassen und es stören 
sich weder Programmer noch Peripherie dran.

von Mitlesa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Am sichersten ist es wenn du beim SPI-Programmieren (Flashen)
deinen externen SPI-Teilnehmer abkoppelst.

Falls derjenige sich aber korrekt verhält und nur dann Daten
von sich gibt wenn er auch mit einem Chip Select aktiviert
ist dann kannst du ihn während des Flashens auch dran lassen.
(Chip Select mit Pullup versehen ist eine gute Idee damit
beim Flashen nix passiert)

Eventuell können Leitungslängen zum externen SPI-Teilnehmer
noch beim Flashen stören ....

von mr.burns (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

danke das ging ja schnell.
Da ich nur einen Slave habe wollte ich dessen CS fest auf low legen.
Aber das wäre ja dann nicht so gut wg. dem Flashen nicht wahr?

von Daniel R. (daro6)


Bewertung
0 lesenswert
nicht lesenswert
Hi,
richtig, das ist schlecht. Viele SPI-Teilnehmer nutzen die CS-Leitung 
zusätzlich intern zur synchronisierung. Daher ist das sowieso schlecht.

Den CS auf einen Pin vom µC und einen Pullup spendieren (Pin während des 
Programmiervorgangs hochohmig). Zur Sicherheit kann man auch noch 
Angstwiderstände in die Leitung zum Teilnehmer legen.

Gruß,
Daniel

von mr.burns (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,

danke, dann hatte ich das ja schon richtig verstanden.
Was sind denn bitte 'Angstwiderstände'?

von Mitlesa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
mr.burns schrieb:
> Da ich nur einen Slave habe wollte ich dessen CS fest auf low legen.

Das ist grundsätzlich keine gute Idee, denn dein Slave weiss
dann oft nicht wann "etwas los geht" oder wann "etwas zu Ende ist".

Diesen zusätzlichen Pin solltest du auf jeden Fall spendieren.

von Daniel R. (daro6)


Bewertung
0 lesenswert
nicht lesenswert
Angstwiderstände sind Widerstände, die in die Signalleitung eingebaut 
sind.
Sind meistens so 20 bis 100Ohm. Diese begrenzen im Falle einer Kollision 
die Ströme auf den Leitungen und schützen so die Bauteile.

Auf der anderen Seite verlangsamen die aber auch die Flanken der 
übertragenen Signal, was bei hohen Frequenzen störend ist.

von mr.burns (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,

super - danke für alles!

von Mitlesa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
mr.burns schrieb:
> Was sind denn bitte 'Angstwiderstände'?

Längswiderstände (50...200 Ohm) zwischen den SPI Teilnehmern
die zum einen den Strom begrenzen falls ein Buskonflikt
auftritt (zwei Ausgänge treiben aufeinander), zum anderen
einen Leitungsabschluss bewirken und damit Funktionsstörungen
durch Reflexionen bei längeren Leitungen verhindern.

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.