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
@ 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
@ 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
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
@ Blackmore (Gast)
>1) Welche Möglichkeiten gibt es noch??? Gib mal bitte Stichwörter, das>ich mal suchen kannUART, 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
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
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???
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
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?
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
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???