Forum: Mikrocontroller und Digitale Elektronik SPI Eingangserweiterung + ext. EEprom Bascom


von Luca E. (derlucae98)


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! ;)

von Luca E. (derlucae98)


Lesenswert?

Hat den keiner eine Idee? Oder habe ich mich einfach zu unverständlich 
ausgedrückt?

von Falk B. (falk)


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.

von Luca E. (derlucae98)


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?

von Falk B. (falk)


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.

von Luca E. (derlucae98)


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.

von Luca E. (derlucae98)


Angehängte Dateien:

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

von Falk B. (falk)


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.

von Luca E. (derlucae98)


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.

von Falk B. (falk)


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.

von Luca E. (derlucae98)


Lesenswert?

Falk Brunner schrieb:
> 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.

100R - 1k etwa? oder noch niedriger.
Reicht es wenn ich den PullUp am Ausgang des MPX anschließe oder braucht 
jeder Eingang einen?

von Falk B. (falk)


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.

von Luca E. (derlucae98)


Lesenswert?

Falk Brunner schrieb:
> Na, 1-10k sollten reichen.

Hat der Atmega32 nicht auch 10k PullUps? Aber egal wenn es 1k auch tun, 
nehme ich 1k.

von Luca E. (derlucae98)


Lesenswert?

Eine Frage habe ich aber noch:

Welches Werkzeug brauche ich für die Schneidklemmen dieser 
Wannenstecker? 
(http://www.reichelt.de/Pfosten-Wannenstecker/PL-2X13G-2-00/3//index.html?ACTION=3&GROUPID=3231&ARTICLE=51902&SHOW=1&START=0&OFFSET=16&;)

von Karl H. (kbuchegg)


Lesenswert?

Ein passendes Flachbandkabel und einen Schraubstock.

Es mag da passende Zangen geben, aber ich finde mit einem Schraubstock 
gehts am besten.

von Luca E. (derlucae98)


Lesenswert?

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?
Das war meine erste Idee.

von Karl H. (kbuchegg)


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.

von Luca E. (derlucae98)


Lesenswert?

Ok. Verstehe. Danke.

von Karl H. (kbuchegg)


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.

von Luca E. (derlucae98)


Angehängte Dateien:

Lesenswert?

So, der Schaltplan ist fertig. Gibt es einen Trick, Vielpinner wie den 
74HC4067 mit dem Wannenstecker auf der Platine zu verbinden?

Karl Heinz Buchegger schrieb:
> Unglaublich: es gibt kein youtube-Video von dem Vorgang! Zumindest hab
> ich nichts gefunden.

Vielleicht sollte man das mal ändern :D

von Falk B. (falk)


Lesenswert?

Pinbelegung vom Stecker anpassen oder ICS 180 Grad drehen.

von Luca E. (derlucae98)


Angehängte Dateien:

Lesenswert?

Das dürfte gehen.

von Falk B. (falk)


Lesenswert?

Sicher.

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.