Forum: Mikrocontroller und Digitale Elektronik SPI - Buslänge?


von Blackmore (Gast)


Lesenswert?

Hi,

ich möchte mich in die Programmierung des AVR einaqrbeiten. Bisher habe 
ich noch rein gar nichts mit Microcontrollern gemacht.

Zum Einarbeiten möchte ich erst einmal nach dem Tutorial hier vorgehen. 
Dazu habe ich mir bei Reichelt ein paar Bauteile bestellt, die auch im 
Tut angegeben sind, aufbauen würde ich das alles über ein Steckbrett.

Da ich jedoch irgendeinen Grud brauche, um überhaupt was lernen zu 
wollen, habe ich mir eine Schaltung "Ausgedacht"...

Meine Vorstellungen:
ATMega8, mit 3,6MHz - oder doch 4MHz??? - Serielle Kommunikation ist 
dringend benötigt
Direkt am ATMega ist ein 4*20 Display angeschlossen

Via SPI ein 74LS165 angeschlossen - dort sind via Pullups 8 Taster dran.

Auf der Platine ist noch eine RJ45 Buchse angeschlossen, um das 
SPI-Signal und Spannung weiter zu schleifen.

Den Ausgang des 165ers brücke ich am Ausgang des RJ45, um das Signal 
wieder zum AVR zu bekommen...

Weitere 74165 sollen über weitere Platinen nachgerüstet werden können - 
für den Testaufbau will ich max 4 an den ATMega dran hängen, und den 
Zustand der Taster auf dem Display ausgeben:
1
S1: 00000000
2
S2: 00000000
3
S3: 00000000
4
S4: 00000000
5
6
oder
7
8
S1: 01001001
9
...

wobei die 0 und 1 den Tasten entsprechen...

Max sollen 8 74165 angeschlossen werden, jeweils mit 0,5m 
Cat5-Patchkabel

Später soll zur Kommunikation noch eine serielle Schnittstelle 
hinzugefügt werden, da ich die Taster im PC brauche


Jetzt meine Frage - ist es grundsätzlich möglich, dieses System zu 
bauen??? Es geht mir um die Qualität der Übertragung - nicht um die 
Geschwindigkeit... Ich frage alle 1sek die Zustände ab, aber die müssen 
dann auch wirklich stimmen... Irgendwelche Signalzustände, die von außen 
verändert werden, kann ich nicht gebrauchen...
Kann ich überhaupt SPI nutzen, um mehrere Platinen miteinander zu 
verbinden? Mit I2C/TWI soll das ja nicht so einfach gehen, bzw. gar 
nicht vorgesehen sein...


Gruß Blackmore

von Lehrmann M. (ubimbo)


Lesenswert?


von Falk B. (falk)


Lesenswert?

@  Blackmore (Gast)

>Jetzt meine Frage - ist es grundsätzlich möglich, dieses System zu
>bauen???

Ja.

> Es geht mir um die Qualität der Übertragung - nicht um die
>Geschwindigkeit... Ich frage alle 1sek die Zustände ab, aber die müssen
>dann auch wirklich stimmen... Irgendwelche Signalzustände, die von außen
>verändert werden, kann ich nicht gebrauchen...

Die Freqeunz ist zweitrangig, entscheidend ist die Anstiegszeit, siehe 
Wellenwiderstand.

>Kann ich überhaupt SPI nutzen, um mehrere Platinen miteinander zu
>verbinden?

Ja, ist aber nur eine von vielen Möglichkeiten.

> Mit I2C/TWI soll das ja nicht so einfach gehen, bzw. gar
> nicht vorgesehen sein...

SPI ist auch nicht für das Verbinden von mehreren, räumlich weiter 
entfernten Platinen gedacht. Geht aber in gewissen Grenzen.

MFg
Falk

von Blackmore (Gast)


Lesenswert?

@ Lehrmann Michael

Danke für den Link, den Artikel hab ich schon gelesen, jedoch hatte ich 
in Erinnerung, das es dort um I2C geht... Ich sollte öfters meine Brille 
aufsetzen und auch verstehen, was ich lese...

Falk Brunner schrieb:
>>Kann ich überhaupt SPI nutzen, um mehrere Platinen miteinander zu
>>verbinden?
>
> Ja, ist aber nur eine von vielen Möglichkeiten.
>
>> Mit I2C/TWI soll das ja nicht so einfach gehen, bzw. gar
>> nicht vorgesehen sein...
>
> SPI ist auch nicht für das Verbinden von mehreren, räumlich weiter
> entfernten Platinen gedacht. Geht aber in gewissen Grenzen.

1) Welche Möglichkeiten gibt es noch??? Gib mal bitte Stichwörter, das 
ich mal suchen kann

2) Was heißt räumlich entfernt - es geht insgesamt um max. 5m, aufgrund 
des Posts, den ich falsch verstanden habe, könnte ich noch Verstärker 
reinbasteln, dadurch sollte ich auch eine höhere Reichweite erreichen, 
mehr als 10m erscheinen mir in der Schaltung nicht sinnvoll, bzw. in der 
Anwendung als weitaus mehr, als überhaupt gedacht...

Gruß Blackmore

PS: Heute ist meine Reichelt-Bestellung gekommen, und ich musste 
feststellen, das ich die Hälfte vergessen hab, und die andere Hälfte hab 
ich Mist (falsche Typen, 74LS165 anstatt 74ALS165, falsche Testtaster, 
etc etc etc) bestellt. Muss ich heute Abend auf Arbeit nochmal Katalog 
wälzen... grmml.. grins

von Peter D. (peda)


Lesenswert?

Blackmore schrieb:
> falsche Typen, 74LS165 anstatt 74ALS165

Sei froh, der LS ist doch besser.
ALS sind schneller, d.h. noch schlechter für lange Leitungen geeignet.

Ich nehme nur noch HC, die brauchen keinen Strom.


Peter

von Falk B. (falk)


Lesenswert?

@  Blackmore (Gast)

>1) Welche Möglichkeiten gibt es noch??? Gib mal bitte Stichwörter, das
>ich mal suchen kann

UART, RS485

>2) Was heißt räumlich entfernt - es geht insgesamt um max. 5m, aufgrund
>des Posts, den ich falsch verstanden habe, könnte ich noch Verstärker
>reinbasteln, dadurch sollte ich auch eine höhere Reichweite erreichen,

Falscher Ansatz. Das Problem ist weniger die "Stärke" der Sender, eher 
die Empfindlichkeit der ICs gegen Störungen und ESD.

MFG
Falk

von Ingo (Gast)


Lesenswert?

Ein Vorteil von SPI gegenüber von I2C in diesem Zusammenhang ist auch, 
das die Ausgänge des jeweiligen Senders Push-Pull Ausgänge haben, wärend 
bei I2C ein Pulup-Widerstand die Datenleitung hochziehen muss. Das wirkt 
sich begrenzender auf die Rechweite aus.
mfG Ingo

von Blackmore (Gast)


Lesenswert?

Falscher Ansatz. Das Problem ist weniger die "Stärke" der Sender, eher
die Empfindlichkeit der ICs gegen Störungen und ESD.


Es geht darum, das jeweils 8 Taster in einem Holzschrank sitzen. Diese 
Taster muss ich einmal pro Sekunde abfragen. Insgesamt werden maximal 
6-8 Schränke erwartet, bzw. Unterstützt...

Erwartet wird eine einfache Verkabelung, d.h. Eine nahezu Idiotensichere 
Verkabelung außerhalb der Schränke (Patchkabel für Netzwerke), innerhalb 
denke ich, werden Pfostenstecker genommen, um diese Taster an die 
Platine zu bekommen.

 diese 64 Bit muss ich alle Sekunde abrufen, insofern ist 
Geschwindigkeit relativ egal, aber ich darf keine fehlbits bekommen.

Auch ist die Schrankposition wichtig, Schrank 3 muss Schrank 3 bleiben, 
wenn der Atmel angeschaltet wird, darf ich schon die Schränke 
vertauschen, bzw es muss relativ einfach möglich sein, weitere Schränke 
hin zu zu fügen, bis auf max acht Stück...

Wie kann ich das am einfachsten realisieren???

von didadu (Gast)


Lesenswert?

Blackmore schrieb:
> Wie kann ich das am einfachsten realisieren???

8 Taster/Schrank,
8-poliges Netzwerkkabel,

=> dürfte nicht allzu schwierig werden.

von Blackmore (Gast)


Lesenswert?

Eine Sternverkabelung wollt ich eigentlich meiden, lieber seriell...

Aber lass mal hören, was Dir so vorschwebt, ich lass mich gerne 
überzeugen...

Gruß Björn

von didadu (Gast)


Lesenswert?

Ich dachte an sowas wie je zwei Taster und zwei Dioden an zwei 
Leitungen. Und Sternverkabelung. :-)

Wenn's sicher sein soll, sollte es auch einfach sein.
Alles, was taktet, vermeiden. (Störungen der Umgebung?)

Ok, bei Serienverkabelung vielleicht mal nach Charlieplexing schauen.

Ich könnte mir auch vorstellen: drei Adressleitungen für 
Zeilenmultiplexer, drei Adressleitungen für Spaltendemultiplexer, einmal 
Daten, einmal GND. Versorung aus dem Schrank? Oder da ein bissel 
tricksen?

von Blackmore (Gast)


Lesenswert?

Das mit dem Charlieplexing sieht interessant aus. Auch wenn ich des noch 
nicht ganz verstanden hab - auf dem Handy sehe ich so wenig...

Werd mich später nochmal genauer damit befassen...

Gruß Blacky

von Blackmore (Gast)


Lesenswert?

Grundtechnisch sieht das sehr gut aus...

Nur - da ich heute meinen ersten Mikrocontroller in der Hand hatte - 
stellt sich für mich das Charlieplexing als reines Ausgabesystem dar... 
Wie bekomme ich das als Eingänge hin???

Ich Stelle es mir so vor:

Taster - Diode - Widerstand

alle 8 Leitungen durchgeschleift

je Schrank eine eigenständige Platine , jede Platine ist anders 
aufgebaut

wenn Taster gedrückt, zieht der L- Port des Avrs den H auf 0

das kann ich messen, stimmt das soweit???

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.