Forum: Mikrocontroller und Digitale Elektronik Beschaltung SPI-Anschlüsse & Kabellänge SPI


von Mathias B. (matthiasbuerkle)


Lesenswert?

Hallo Zusammen,
ich hab mal wieder ein Projekt, bei dem ich etwas Hilfe benötige. Und 
zwar will ich einen Atmega8 als DMX-Empfänger programmieren. Dieser soll 
16 Ausgänge haben, die ich über DMX dann ansteuern kann.

Jetzt zu meinen Fragen:
1) Ich kann doch die Pins SCK, MISO & MOSI als ganz normle Pins im 
Programm benutzen. Der µC wird ja über den RESET in den 
"Programmiermodus" geschaltet. Muss ich bei der Beschaltung dieser Pins 
dann irgentwas beachten, damit ich den µC später auch noch programmieren 
kann?

2) Da es sich um mehrere stationäre DMX-Empfänger handelt, muss die 
DMX-Adresse nur einmal einprogrammiert werden. Dennoch will ich nicht 
immer an jeden µC rennen, wenn sich was bei der Adressierung ändert. Ich 
würde also gerne an einem zentralen Punkt eine Anschlussdose hinsetzen, 
bei der alle µC einen Anschluss zum programmieren haben. Leider sind die 
Kabellängen hierfür mal schnell 7 bis 8 Meter. Wie könnte man diese 
Strecke am einfachsten überrücken? Mit SPI wirds wohl nicht gehen.

Danke für Eure Hilfe
Matthias

von ... .. (docean) Benutzerseite


Lesenswert?

zu 1.
ja kann man, der Prommer muß aber denn Zustand einprägen können.

Ein Pin fest auf Masse wäre sehr ungünstig..

zu 2.
vlt. eine DMX-Bootloader?

von Mathias B. (matthiasbuerkle)


Lesenswert?

Bei den Pins des SPI wird wohl eher ein LED-Treiber oder ein 
Servo-Motor(aus dem Modellbaubereich) dran hängen.

Zu dem Bootloader. Damit hab ich bisher noch nicht gearbeitet. Wo kann 
man sich am besten darüber informieren? Und wie groß wäre der 
Hardware-Aufwand?

Danke

von Mathias B. (matthiasbuerkle)


Lesenswert?

Das mit dem Bootloader hab ich glaube ich grob verstanden.
Allerdings frage ich mich, ob es (für mich) nicht einfacher wär, wenn 
ich versuchen würde, die SPI-Leitung einfach mit irgenteiner Schaltung 
umzuwandeln, dass ich eine längere Leitung verwenden kann.

Gibt es hierfür irgentwelche fertigen Schaltpläne oder ICs?

Danke
Matthias

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Warum nimmst Du keinen Mega16, der hat genügend Pins, daß Du die 
SPI-Schnittstelle nicht doppelt belegen mußt. Im TQFP44-Gehäuse ist er 
etwa so groß wie ein 10-Cent Stück. Außerdem hat er mehr Speicher für 
ausgefallene Ideen ;-)

von Mathias B. (matthiasbuerkle)


Lesenswert?

Hi,
ich habe bei der Beschaltung ein paar Dinge abgeändert. Die 
SPI-Anschlüsse sind jetzt doch nicht mehr doppelt belegt.
Als Bauform würde ich gerne ein DIL Gehäuse haben, weil ich nicht gerne 
mit SMD arbeite.

Hier mal eine genauere Beschreibung meines Vorhabens:
Die Empfänger sollen für verschiedene Wasserspiele genutzt werden, die 
um einen Teich platziert werden. Der Grund, warum ich hierfür gerade 
eine DMX-Übertragung will ist, dass ich hier mit Freeware, eine 
Synchonisation mit einem Musikstück erzeugen kann. Ich programmier die 
verschiedenen Aktionen am Rechner ein, starte das Lied auf dem Rechner 
und die Wasserspiele werden passend dazu bewegt und angeleuchtet.

Anfangen will ich mit einer einfachen Fontäne. Diese soll 6 Funktionen 
haben. Grundsätzlich mal das Wasser ein und ausschalten. Zudem soll sich 
die Fontäne bewegen können (2 Achsen)(vergleichbar wie ein Moving-Head). 
Und dann soll der Strahl mittels RGB-LED noch passend angestrahlt werden 
können.
Die mechanische Umsatzung ist für mich kein Problem. Als Ausgänge werden 
also folgende Bits benötigt:
- Wasser ein/aus
- Position a-Achse (Drehachse)
- Position z-Achse ("Höhenachse)
- LED rot (PWM)
- LED grün (PWM)
- LED blau (PWM)

Dazu kommen noch 2 LEDs, die mir den Zustand des Empfängers anzeigen.

Zudem benötige ich noch 3 Anschlüsse als DMX-In. Mit einem Atmega8 hätte 
ich dann noch 6 Ausgänge frei. Zuerst wollte ich 16 Ausgänge haben. Das 
brauch ich jetzt aber nicht mehr.
Ich will eben nur noch, dass ich die µC von einem zentralen Punkt am 
Brunnen programmieren kann und nicht zu jeden Wasserspiel einzeln rennen 
muss.

Vielleicht kann jetzt der ein oder andere besser verstehen, was ich 
umsetzen will.

Danke schon mal

Matthias

von Mathias B. (matthiasbuerkle)


Lesenswert?

Ich hab nochmal ein bisschen gesucht. Dabei bin ich auf das Schlagwort 
'Bustreiber' gestoßen.

Gibt es einen passenden Bustreiber, den ich zum einen am Programmer als 
Sender und am Atmega als Empfänger einsetzen kann?

Danke
Matthias

von Sumynona (Gast)


Lesenswert?

Da kommt vieles in Frage. Die RS485-Typen sind nicht schlecht, ansonsten 
kann man auch CAN empfehlen...
Ich glaub, DMX ist sogar auf RS485 standard, bin mir aber grad nicht 
sicher

von Mathias B. (matthiasbuerkle)


Angehängte Dateien:

Lesenswert?

Ich hab mal einen Entwurf für meine Platine gemacht.
Vielleicht könnte grad mal jemand darüber schauen, ob hardwaremäßig 
alles i.O. ist.

Ich sag gleich dazu, dass ich keine analogen Werte einlese und deshalb 
die Pins für die Referenzspannung auf GND gelegt habe.

Bei dem Entwurd der Schaltung orientierte ich mich bei der von Hendrik 
Hölscher. www.hoelscher-hi.de

Danke
Matthias

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wenn nur du dranhängst, solltest du zumindest den Empfänger dauernd 
aktiv lassen (RE/ an GND), denn sonst hast du beim Senden einen 
undefinierten Pegel am RXD-Pin.
Alternativ kannst du einen Pullup in die RXD-Leitung einbauen...

von holger (Gast)


Lesenswert?

>Ich sag gleich dazu, dass ich keine analogen Werte einlese und deshalb
>die Pins für die Referenzspannung auf GND gelegt habe.

Wieder einer der noch nie einen Blick in das Datenblatt geworfen hat.
Man, man, man. AVCC sagt doch schon WO das hingehört. Und AREF
lässt man offen wenn man den Pin nicht braucht.

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.