Forum: Mikrocontroller und Digitale Elektronik Experimentierplatine für I2C und SPI Bus


von Patrick (Gast)


Lesenswert?

Hallo, ich lese hier immer viel mit und bin Jetzt mal an einen Punkt 
gekommen, wo ich mal Ideen bzw. vllt noch sinnvolle Ergänzungen 
bräuchte.

Zu meinen Vorhaben ich wollte mir ein experimentierbord aufbauen mit dem 
Schwerpunkt Bus System( ein Thema das mich sehr reizt). Bis jetzt habe 
ich nur kleine Board bzw. Adapter zum programmieren und halt alle Pins 
nach außen geführt, nur solangsam wird der Schreibtisch sehr voll und 
mit den ganzen steckboards sehr unübersichtlich. Jetzt dachte ich mir 
alles mal auf einer Platine zubringen.

Nun zu meiner frage, ich hab mir schon Gedanken gemacht was ich da so 
alles unterbringen möchte, nun wollte ich mich erkundigen, ob es noch 
sinnvolle Ergänzung, gibt die ich übersehen habe.

Hier mal eine grobe Übersicht über bisherigen ich nenn es mal Bauteile 
die ich verbauen möchte.

Steckplatz für die ganzen Microcontroller(Attiny85,4313,ect),(Atmega 
644,328,etc.) mit SPI, ISP und I2C zusammen gefügt ( Problem bis jetzt 
ich kann während des progens immer nur ein UC auf die Sockel stecken, 
wenn es da nen tippt gibt wie ich immer nur ein UC proggen kann die 
andern jedoch in den Sockel lassen kann immer her mit der Info :-))

I2C / Rs232 USB Schnittstelle: MCP2221

Kleiner Lasten Esel L293D evtl mit MCP 23008

MCP 4151 SPI Poti

2 EEProms einmal SPI einmal I2C 24LC512

Schnittstelle für Hd 2x16 Dispaly über I2C

FTDI I2C zu low Speed CanBus und SPI zu high Speed CanBus

2 Port Erweiterungen I2C und SPI MCP 23017 und MCP 23s08

ISP Anschluss (Progammierer MY USB LIGHT)

16 Taster 8 davon direkt an IO 8 weitere über Widerstandsnetzwerk über 
ADC

I2C / SPI Ausgang für Erweiterungen

Spannungsregler lm317 mit schiebeschalter zum wechseln der UC Spannung 
von 3,3V oder 5V

Diverse LED

2x Dip 8 Fach Dip Switches


So das war das grobe was ich mir gedacht habe, nun wäre schön evtl noch 
Ergänzungen zubekommen auf die ich selber nicht kam :-) und vllt ne 
Lösung zu mein Programmier Problem.

von Wilhelm M. (wimalopaan)


Lesenswert?

Patrick schrieb:

>
> Steckplatz für die ganzen Microcontroller(Attiny85,4313,ect),(Atmega
> 644,328,etc.) mit SPI, ISP und I2C zusammen gefügt ( Problem bis jetzt
> ich kann während des progens immer nur ein UC auf die Sockel stecken,
> wenn es da nen tippt gibt wie ich immer nur ein UC proggen kann die
> andern jedoch in den Sockel lassen kann immer her mit der Info :-))

Der SPI und / oder I2C-Master müssen tri-state werden, in dem Moment, wo 
die Slaves per ISP programmiert werden. Das machst Du am einfachsten, 
indem die Resets der Slaves jeweils über Dioden (Schottky) den 
Master-Reset ebenfalls auslösen (Dioden-Logik).

von Patrick (Gast)


Lesenswert?

Das ist nen super Tipp.

Nur das Problem, mit dem programmieren meinte ich anders.

Ich hab einen ISP Anschluss.
Dieser ist mit VCC MOSi MISO SCK RESET und GND aller UCs verbunden.
Zum Proggen müsste ich jetzt alle UCs bis auf den zu programmierenden 
entnehmen. Das würd ich gerne umgehen. Schalter bei 6 Leitungen wäre, 
etwas schwer.
Und mehrere ISP Anschlüsse wollte ich eigentlich vermeiden. Wenn ich 
mehrere ISP Anschlüsse verwenden würde wäre dein Tipp perfekt.

von Wilhelm M. (wimalopaan)


Lesenswert?

Dann brauchst Du Reset an allen (wegen Hochohmigkeit) bzw. an dem zu 
programmierenden uC und Du mus mindestens z.B. die SCK-Leitung an den 
nicht zu programmierenden uCs unterbrechen.

von Patrick (Gast)


Lesenswert?

Also wenn ich nur die SCK Leitung, mit Jumpern machen würde würd es 
funktionieren ?

von Einer K. (Gast)


Lesenswert?

Patrick schrieb:
> Also wenn ich nur die SCK Leitung, mit Jumpern machen würde würd es
> funktionieren ?

Nein!
Die anderen Prozessoren laufen ja los, und zucken vermutlich auf den 
Leitungen rum, je nach Programm.

Den Reset per Jumper.

Einen Reset per Jumper zum ISP Stecker
Alle anderen Resets auf GND


Nachtrag:
Ich halte das ganze für unsinnig.
Ist aber nicht meine Baustelle.

von Patrick (Gast)


Lesenswert?

Was ist den daran unsinnig ?

von Wilhelm M. (wimalopaan)


Lesenswert?

Variante A

Jeder uC hat einen ISP-Stecker. Wenn die uC alle per I2C verbunden sind, 
muss Du den BusMaster auch resetten, in dem Moment, in dem Du die 
anderen uCs programmierst -> Dioden-Logik. Das geht bei I2C, weil da die 
ISP und I2C Pins unterschiedlch sind. Bei SPI geht das nicht.
Aufwand hier: Umstecken des ISP-Steckers

Variante B

Ein ISP Stecker für alle. Hier müssen alle den Reset bekommen, aber die 
SPI darf ja nur für den Ziel-uC aktiviert sein. Deswegen musst Du bei 
(N-1) uC z.B. das SCK Signal unterbrechen.
Aufwand hier: (N-1) Jumper umstecken

von Patrick (Gast)


Angehängte Dateien:

Lesenswert?

Also die Variante 2 hört sich schon sehr gut an. Hab nochmal zum 
verständniss. Die Grundschaltung in Eagle aufgebaut.

von Patrick (Gast)


Angehängte Dateien:

Lesenswert?

Zieht der Programmer die UCs dauerhaft auf Reset oder ist das ein und 
ausgeschalte ?

Im Anhang hab ich das mal mit den SCK Leitungen gemacht. Wenn der 
Programmer, eh den Reset ausführt kann ich die Leitungen vom Reset 
erstmal zusammenfügen oder?

von Wolfgang S. (Firma: Pensionär-Altes-Eisen) (stackpointer)


Lesenswert?

Hallo,
eine ergänzende Sucheanfrage zu I²C mit dig-eingängen:

Es gibt z.B. PCF8574C und PCF8575C für8 oder 16 I/O, soweit klar.

Es gibt auch den PCA9555 mit interrupt, verstehe ich den Baustein 
richtig daß Eingangssignale ein FlipFlop setzen, der gespeicehrter Wert 
ausgelesen wird und mit dem Read-Impuls das FlipFlop dann wiede 
rgelöscht wird.

Daher auch kurze high-Signale werden erkannt und über den I²C-Bus an den 
Controller weitergeleitet.

Oder geht das auch mit den PCF8574 und PCF8575?

Gruß

von Patrick (Gast)


Lesenswert?

Wenn er genauso wie der MCP 23017 aufgebaut ist dann ist es so du hast 2 
Ports mit IO Port A und B beide haben je ein Interupt Pin.

Dieser ist "frei" Programmierbar zb ich nutze PIN A.1 als Eingang, dann 
kann er so eingestellt werden das bei Pegeläderung zb. LOW auf High der 
Interupt ausgelöst wird. Und der Uc dann am INT Eingang dies mitbekommt 
und entsprechend handeln kann.

kleines Bsp. ausm Gebrauch hier im Haus.

An Port hängen 8 Türkontaktschalter, ändert einer der Türkontakte sein 
Pegel wird der Interupt ausgelöst und das am INT0 des Uc mitgeteilt. 
Dieser führt in der Int-Routine,dann folgendes aus:

er sendet eine Lese Berechtigung per i2c für den Port A und schaut 
welcher Türkontakt geschaltet hat. und schaltet dem entsprechend die 
dazugehörigen Webcams an.

hoffe mal hab deine frage richtig verstanden.

Somit kann der Slave dem Master etwas mitteilen was onst nur im 
Mulitmaster betrieb möglich ist. Nachteil sind zusätzliche Leitungen für 
jeden INT Pin

von Tany (Gast)


Lesenswert?

Arduino F. schrieb:
> Nachtrag:
> Ich halte das ganze für unsinnig.

den Endruck habe ich auch.
Wenn man so universell haben will, gibt's von Atmel nicht das fertige 
s.g. STK500 oder STK600 ?

SPI hin, I2C  her, entweder beherscht man oder nicht. Bei allen 
Controller sind das gleiche.

Ansonsten Arduinos von A...Z erfüllen dem Lernzweck auch, warum das Rad 
neu erfinden?

von Patrick (Gast)


Lesenswert?

Weil man etwas Herstellt was man an seine Bedürfnisse anpassen kann und 
nicht 0815 ist.

Auch Super aussage entweder man beherrscht es oder nicht. Also mit 
andern worten, brauchst du kein Testboard für Schaltungen und 
Entwicklungen du baust auf Programmierst und alles läuft 100% i.o.

Glückwunsch zum Wasserfall Modell die 60er lassen grüßen.

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.