SPI Eingangserweiterung + ext. EEprom Bascom

OP #3238175
Lesenswert?

Hallo,

Ich möchte mir ein Lichtmischpult bauen.

Dazu verwende ich einen ATMega32 mit einem MAX485 um DMX daten zu 
senden.
Das Mischpult soll 26 Fader und ~32 Buttons haben.
In diesem Beitrag "Wie ADC erweitern/muxen (ATmega)?" wird der 74HC4067 
erwähnt, aber der wird ja nicht über SPI angesprochen, oder?
Gibt es einen externen ADC der über SPI angeschlossen wird? - und wenn 
ja, wie steuere ich ihn an? (Programmiere in Bascom)
Zum erweitern der Eingänge würde ich 47HC165 verwenden, allerdings weiß 
ich auch hier nicht wie ich die per Software anspreche.
Oder soll ich einfach weitere µC (Atmega32) per SPI anschließen und die 
Eingänge so erweitern?
Und dann ist da ja noch das EEprom 
(http://www.reichelt.de/EEPROM-seriell-SPI-Microchip/25LC320A-I-P/3//index.html?ACTION=3&GROUPID=4512&ARTICLE=96660&SHOW=1&START=0&OFFSET=500&;)
Wie kann ich mit Bascom Daten schreiben und wieder auslesen?

Und zu guter letzt: Der Atmega wird mit einem 8MHz Quarz getaktet. Laut 
Datenblatt braucht er 32pF Kondensatoren. Aber ich finde keine 23pf 
Kerkos bei Reichelt.

Schonmal Danke im Voraus! ;)
#3240389
Lesenswert?

@ Luca E. (derlucae98)

>Dazu verwende ich einen ATMega32 mit einem MAX485 um DMX daten zu
>senden.
>Das Mischpult soll 26 Fader und ~32 Buttons haben.

Klingt nach 26 Potentiometern, die per ADC gelesen werden sollen sowie 
32 einfachen Tastern, welche digital per Porterweiterung gelesen werden.

>In diesem Beitrag "Wie ADC erweitern/muxen (ATmega)?" wird der 74HC4067
>erwähnt, aber der wird ja nicht über SPI angesprochen, oder?

Nein, das ist ein analoger Multiplexer.

>Gibt es einen externen ADC der über SPI angeschlossen wird?

Wozu? Dein AVR hat einen ADC, der hier vollkommen ausreichend ist. Nutze 
ihn.

> - und wenn
>ja, wie steuere ich ihn an? (Programmiere in Bascom)
>Zum erweitern der Eingänge würde ich 47HC165 verwenden, allerdings weiß
>ich auch hier nicht wie ich die per Software anspreche.

Muss man "per Hand" machen, bzw. SPI.

AVR-Tutorial: Schieberegister

>Oder soll ich einfach weitere µC (Atmega32) per SPI anschließen und die
>Eingänge so erweitern?

Nein.

>Und dann ist da ja noch das EEprom
>(http://www.reichelt.de/EEPROM-seriell-SPI-Microchi...)
>Wie kann ich mit Bascom Daten schreiben und wieder auslesen?

Keine Ahung. Kann sein dass es dafür schon fertige Funktionen gibt. Kann 
aber auch sein, dass du das Protokoll selber handhaben musst.

>Und zu guter letzt: Der Atmega wird mit einem 8MHz Quarz getaktet. Laut
>Datenblatt braucht er 32pF Kondensatoren. Aber ich finde keine 23pf
>Kerkos bei Reichelt.

Nimm 22pF oder 33pF die reichen auch.
OP #3240412
Lesenswert?

Danke für deine Antwort, falk

Falk Brunner schrieb:
> Klingt nach 26 Potentiometern, die per ADC gelesen werden sollen sowie
> 32 einfachen Tastern, welche digital per Porterweiterung gelesen werden.

Richtig.

> Nein, das ist ein analoger Multiplexer.

Das dachte ich mir. Einziges problem -> ansteuerung in Bascom.

>>Und dann ist da ja noch das EEprom
>>(http://www.reichelt.de/EEPROM-seriell-SPI-Microchi...)
>>Wie kann ich mit Bascom Daten schreiben und wieder auslesen?
>
> Keine Ahung. Kann sein dass es dafür schon fertige Funktionen gibt. Kann
> aber auch sein, dass du das Protokoll selber handhaben musst.

Bereits gelöst.

> Nimm 22pF oder 33pF die reichen auch.

Alles klar.

Das heißt ich brauche 2 Analogmultiplexer für die Fader, 4 74HC165 für 
die Taster und 4 74HC595 für die Taster LED'S.
Kann ich mir eigentlich die Ports für SCL, SCK, usw. selbst aussuchen, 
oder gibts da "feste" Ports?
#3240466
Lesenswert?

@ Luca E. (derlucae98)

>> Nein, das ist ein analoger Multiplexer.

>Das dachte ich mir. Einziges problem -> ansteuerung in Bascom.

Wo ist das Problem? Du musst einfach nur vier Bit (IO-Pins) per Software 
steuern, welche an S0-S3 beider Multiplexer gehen. Damit wählst du den 
kanal aus, welcher vom ADC gelesen werden soll. Der 1. Multiplexer geht 
an ADC0, der zweite an ADC1. Fertig.

>Das heißt ich brauche 2 Analogmultiplexer für die Fader, 4 74HC165 für
>die Taster und 4 74HC595 für die Taster LED'S.

Ja.

>Kann ich mir eigentlich die Ports für SCL, SCK, usw. selbst aussuchen,
>oder gibts da "feste" Ports?

Wenn du SPI in Hardware und damit mit maximaler Geschwindigkeit 
betreiben möchstest, musst du die festen Ports nehmen. Machst du SPI in 
Software, kannst du sie frei wählen.
OP #3240516
Lesenswert?

Falk Brunner schrieb:
> Wo ist das Problem? Du musst einfach nur vier Bit (IO-Pins) per Software
> steuern, welche an S0-S3 beider Multiplexer gehen. Damit wählst du den
> kanal aus, welcher vom ADC gelesen werden soll. Der 1. Multiplexer geht
> an ADC0, der zweite an ADC1. Fertig.

Ah doch so einfach. cool.

Falk Brunner schrieb:
> Wenn du SPI in Hardware und damit mit maximaler Geschwindigkeit
> betreiben möchstest, musst du die festen Ports nehmen. Machst du SPI in
> Software, kannst du sie frei wählen.

Ok gut. Ich erstelle mal einen Schaltplan. Vielleicht kann jemand mal 
drüberschauen.
OP #3241726
Lesenswert?

Den Schaltplan habe ich als Anhang hinzugefügt.
Ist alles korrekt verbunden?

Mir ist aufgefallen, dass man den 74HC4067 auch als Eingangserweiterung 
einsetzen kann. Quasi so:
Kanal wählen => Pinstatus in Variable schreiben; nächsten Kanal wählen 
=> Pinstatus in nächste Variable; usw.. Macht das Sinn?
Die Anzahl der Fader habe ich auf 12 reduziert.

Da es in Eagle keinen 74HC4067 gibt, habe ich mal schnell eine lib 
erstellt.

MfG Luca
Angehängte Dateien:
#3241762
Lesenswert?

@ Luca E. (derlucae98)

>Den Schaltplan habe ich als Anhang hinzugefügt.
>Ist alles korrekt verbunden?

E\ muss auf GND.
An AREF gehört ein 100nF Kondensator gegen GND, aber keine +5V!
DMX Out willst du besser an PD1 anschließen.
Haben deine Taster Pull-Ups/downs?

>Mir ist aufgefallen, dass man den 74HC4067 auch als Eingangserweiterung
>einsetzen kann. Quasi so:
>Kanal wählen => Pinstatus in Variable schreiben; nächsten Kanal wählen
>=> Pinstatus in nächste Variable; usw.. Macht das Sinn?

Ja, ist ja ein Multiplexer.

>Da es in Eagle keinen 74HC4067 gibt, habe ich mal schnell eine lib
>erstellt.

Naja, verbesserungsfähig. Der Name gehört in Layer NAMES, die Pins sind 
zu kurz, damit die Zahlen zu nah am Symbol. Z als Ausgang zeichnet man 
normalerweise rechts im Symbol. VCC/GND macht man bei Logik-ICs meist 
als eigenes Gatter, siehe die 74er Serie.
OP #3241801
Lesenswert?

Falk Brunner schrieb:
> E\ muss auf GND.
> An AREF gehört ein 100nF Kondensator gegen GND, aber keine +5V!

Ok werde ich ändern.

Falk Brunner schrieb:
> DMX Out willst du besser an PD1 anschließen.

Ich wollte das DMX signal erst per Software UART senden, weil der UART 
Code bei mir 4 Fehler versucht hat, deswegen PD7.
Habe aber gerade herausgefunden warum und werde es jetzt an PD1 hängen.

Der DMX_OUT am rechten, unteren Bildrand bei SV6 gehört da nicht hin. 
Ich habe nur vergessen den Wert des Anschlusses zu ändern.

Falk Brunner schrieb:
> Haben deine Taster Pull-Ups/downs?

Ich verwende die Pullups des Atmegas.

Falk Brunner schrieb:
> Naja, verbesserungsfähig. Der Name gehört in Layer NAMES, die Pins sind
> zu kurz, damit die Zahlen zu nah am Symbol. Z als Ausgang zeichnet man
> normalerweise rechts im Symbol. VCC/GND macht man bei Logik-ICs meist
> als eigenes Gatter, siehe die 74er Serie.

Wie gesagt: Ist mal eben schnell erstellt. Werde mich mal dransetzen und 
ordentlicher machen.
#3241823
Lesenswert?

@ Luca E. (derlucae98)

>Ich wollte das DMX signal erst per Software UART senden, weil der UART
>Code bei mir 4 Fehler versucht hat, deswegen PD7.

250.000 Bud per Soft-UARt istr nicht sinnvoll, dann sit dein CPU 
wirklich komplett ausgelastet.

>> Haben deine Taster Pull-Ups/downs?

>Ich verwende die Pullups des Atmegas.

Ach so, du willst ja auch Multiplexer für die Taster nutzen, keine 
Schieberegister. Naja, kann man machen, aber wenn du die schnell 
abfragen willst, brauchst du deutlich niederohmigere Pull-Ups. Nimm 
liwber einen externen.
#3244665
Lesenswert?

@ Luca E. (derlucae98)

>> abfragen willst, brauchst du deutlich niederohmigere Pull-Ups.

>100R - 1k etwa? oder noch niedriger.

Na, 1-10k sollten reichen.

>Reicht es wenn ich den PullUp am Ausgang des MPX anschließe

Ja.

>oder braucht jeder Eingang einen?

Nein.
#3244820
Lesenswert?

Luca E. schrieb:
> Karl Heinz Buchegger schrieb:
>> Ein passendes Flachbandkabel und einen Schraubstock.
>
> Du meinst, den Wannenstecker in den Schraubstock einspannen und die
> Drähte mit nem Schlitzschraubendreher in die Schneidklemmen reindrücken,
> oder wie?

Brauchst du gar nichts 'reindrücken'. Solange der Bügel nicht 
geschlossen ist, ist da ein Spalt. Und wenn nicht, dann setzt man den 
Bügel eben erst dann auf, wenn man das Kabel auf die Schneidklemmen 
aufgesetzt und ev. ein bischen angedrückt hat.

Nein.
Du spannst den Stecker in den der quer in den Schraubstock ein, so dass 
du mit den Backen des Schraubstocks den Bügel zudrücken kannst. Das geht 
nämlich ganz schön schwer. Der Trick besteht darin, dass der Bügel 
parallel zugedrückt werden soll/muss. Also vergiss alle 'mit der 
Kombizange Stück für Stück den Bügel zumachen' sachen.

Stecker der quer in den Schraubstock, Kabel einfädeln, Schraubstock 
zudrehen. Das Kabel wird vom Bügel in die Schneidklemmen gedrückt! Und 
den Bügel wiederrum drücksz du mit dem Schraubstock an den 
Stecker-Körper.
#3244834
Lesenswert?

Aber leg dir je nach Schraubstock etwas zwischen Backen und Stecker. 
Sonst hast du das Muster der Schraubstockbacken im Kunststoff des 
Steckers.

Im Ernst: das braucht einiges an Kraft, 10 oder mehr Kabel gleichzeitig 
in die Schneidverbinder einzudrücken. Unterschätz das nicht!


Unglaublich: es gibt kein youtube-Video von dem Vorgang! Zumindest hab 
ich nichts gefunden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren