Forum: Mikrocontroller und Digitale Elektronik Atmega16 wie SPI nutzen?


von mr.burns (Gast)


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)


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)


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)


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)


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)


Lesenswert?

Hallo Daniel,

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

von Mitlesa (Gast)


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)


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)


Lesenswert?

Hallo Daniel,

super - danke für alles!

von Mitlesa (Gast)


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.

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.