Forum: Mikrocontroller und Digitale Elektronik AVR - Hilfe bei Schematics prüfung?


von Ben K. (bkaiser)



Lesenswert?

Hallo,

ich baue gerade an einem Controllerboard für's Simracing. Es basiert auf 
einem Arduino Pro Micro (den Part möchte ich erst mal als fertige 
Komponente übernehmen) und besteht primär aus zwei Port Expandern 
(MCP23S17). Ich habe mich nun durch diverse Datenblätter gewälzt, Foren 
gelesen etc. und bin jetzt so weit, dass ich glaube alles beachtet zu 
haben. Nun bin ich aber noch recht neu in dem Bereich und bevor ich das 
Ganze nun in Platinenform wandel, würde ich mich sehr freuen wenn jemand 
mal drüberschauen könnte ob ich irgendwas vergessen oder falsch gemacht 
habe. Keine Sorge, ich erwarte keine genaue Analyse, aber vielleicht 
fällt einem ja direkt was auf, hier gibt es Leute die weit erfahrener 
sind als ich.

Herzlichen Dank,

Benjamin

von H.Joachim S. (crazyhorse)


Lesenswert?

Die SPI-Verschaltung ist schon mal falsch.
Entweder getrennte CS, dann kannst du SI/SO/SCLK parallel verschalten.
Oder eben in Reihe schalten (CS und SCLK parallel. MOSI->SI0, SO0->SI1, 
SO1->MISO.

Und wenn da an den Porterweitzungen steht Encoder - das kann schnell 
recht sportlich werden, bei mehreren vielleicht sogar unmöglich. Kommt 
natürlich sehr auf die Frequenz an, also Auflösung und 
Drehgeschwschindigkeit.

edit: nimm lieber einen AVR, der genug I/Os direkt hat und spar dir das 
mit den Porterweiterungen. Macht dir die Software leichter.

: Bearbeitet durch User
von Ben K. (bkaiser)


Lesenswert?

Hallo,

H.Joachim S. schrieb:
> Die SPI-Verschaltung ist schon mal falsch.
> Entweder getrennte CS, dann kannst du SI/SO/SCLK parallel verschalten.
> Oder eben in Reihe schalten (CS und SCLK parallel. MOSI->SI0, SO0->SI1,
> SO1->MISO.
Nach meinem Verständnis können 8 MCPs an einem CS pin betrieben werden, 
da diese über die Addresse angesprochen werden können (A0-A2)... Jetzt 
hast du mich verwirrt. :-)

> Und wenn da an den Porterweitzungen steht Encoder - das kann schnell
> recht sportlich werden, bei mehreren vielleicht sogar unmöglich. Kommt
> natürlich sehr auf die Frequenz an, also Auflösung und
> Drehgeschwschindigkeit.
Es handelt sich lediglich um Encoder die von Hand verstellt werden. In 
meinem Testaufbau hat das auch mit mehreren Encodern ohne Probleme 
funktioniert.

> edit: nimm lieber einen AVR, der genug I/Os direkt hat und spar dir das
> mit den Porterweiterungen. Macht dir die Software leichter.
Mmmmh... ich habe bisher noch keinen gefunden, der nativ so viele I/Os 
zur Verfügung stellt und möglichst klein im Aufbau ist. Das ganze soll 
später in ein Lenkrad montiert werden.

Danke für das Feedback!

Benjamin

von H.Joachim S. (crazyhorse)


Lesenswert?

Benjamin K. schrieb:
> da diese über die Addresse angesprochen werden können (A0-A2).

Das dürfte nur für I2C-Betrieb gelten, nicht für SPI.

Benjamin K. schrieb:
> Mmmmh... ich habe bisher noch keinen gefunden, der nativ so viele I/Os
> zur Verfügung stellt und möglichst klein im Aufbau ist.

Ach komm, geht los beim alten ATMega64. Und massig andere.

von H.Joachim S. (crazyhorse)


Angehängte Dateien:

Lesenswert?

Ok, ist auch im SPI-Betrieb adressierbar, interessant. Habe ich so noch 
nicht gesehen.
Man muss eben doch ein bisschen lesen statt nur Bilder zu schauen :-).
Hätten aber schon die Adressdekodiereinheit auch zur SPI zeichnen 
können...

von Stefan F. (Gast)


Lesenswert?

An Reset würde ich einen 100nF Kondensator machen, damit die Leitung 
keine HF Signale empfängt.

von Wolfgang (Gast)


Lesenswert?

H.Joachim S. schrieb:
> Hätten aber schon die Adressdekodiereinheit auch zur SPI zeichnen
> können...

Das Blockdiagramm ist wohl so zu lesen, das je nach Typ einer der beiden 
gestrichelt umrahmten Blöcke vorhanden ist.

von leo (Gast)


Lesenswert?

H.Joachim S. schrieb:
> Ok, ist auch im SPI-Betrieb adressierbar, interessant. Habe ich so noch
> nicht gesehen.

Nein, sehe ich nicht so, bzw. nur beim MCP23017 (I2C). Der TO verwendet 
MCP23S17 (SPI), da haben A0-A2 keine Bedeutung - wie auch?
Der TO braucht getrennte /CS-Leitungen.

leo

von S. Landolt (Gast)


Lesenswert?

Das geht durchaus bei SPI, aber A2 kann Ärger machen:
ww1.microchip.com/downloads/en/DeviceDoc/80311a.pdf

von c-hater (Gast)


Lesenswert?

Benjamin K. schrieb:

> Mmmmh... ich habe bisher noch keinen gefunden, der nativ so viele I/Os
> zur Verfügung stellt und möglichst klein im Aufbau ist.

Kontakte kann man auch gut in einer Matrix abfragen. Machen alle 
größeren Tastaturen genau so.

Damit sinkt der Bedarf an IO-Pins auf ca. 2*Sqrt(Kontaktzahl). Für deine 
32 Kontakte brauchst du also bloss 12 IO-Pins (und könntest damit 36 
Kontakte abfragen). Schon bei einem AVR-40Pinner bleiben also noch 20 
IO-Pins frei für andere Zwecke...

von Frank K. (fchk)


Lesenswert?

Benjamin K. schrieb:

>> edit: nimm lieber einen AVR, der genug I/Os direkt hat und spar dir das
>> mit den Porterweiterungen. Macht dir die Software leichter.
> Mmmmh... ich habe bisher noch keinen gefunden, der nativ so viele I/Os
> zur Verfügung stellt und möglichst klein im Aufbau ist. Das ganze soll
> später in ein Lenkrad montiert werden.

Mit den Portextendern wirds ja noch größer als mit einem geeigneten 
Chip. Mega64 ist eine alte Kamelle, Mega2561 wäre das Ziel, wenn es 
weiter AVR sein muss. Oder z.B.

https://www.olimex.com/Products/Duino/PIC32/PIC32-PINGUINO-MICRO/open-source-hardware

Klar, das wird dann SMD werden, aber wenn das klein werden soll, wird es 
eh nicht anders gehen. Von Lochraster und DIL musst Du Dich bei Deinen 
Anforderungen eh verabschieden.

Und: Du hast das schön Stiftleisten mit den Signalen gemalt. Schon mal 
überlegt, wie der Strom wieder zurückkommen soll ohne zuhehörige 
Ground-Leitung. Du brauchst einen Stromkreis, damit ein Signal empfangen 
oder gesendet werden kann. Und dabei sollte der Strom möglichst auf dem 
gleichen Weg wieder zurückfließen wie er hingeflossen ist, d.h. Signal 
und Ground sollen möglichst dicht beeinander sein. Sonst hast Du eine 
Spule mit einer Windung, und dadurch kannst Du Dir Störungen einfangen.

Von der Strombelastbarkeit her würde ein Ground-Kabel reichen, aber das 
solltest Du aus Gründen der Störunempfindlichkeit nicht machen.

Weiterhin ist es empfehlenswert, alles, was rein oder raus geht, vor 
Spannungsspitzen zu schützen. Du möchtest nicht unbedingt ein 64 Pin 
TQFP wechseln müssen. Zum Schutz nimmt man sogenannte TVS-Dioden, die in 
Sperrrichtung zwischen Signal und Ground geschaltet werden und direkt am 
externen Steckverbinder (oder nur wenige mm entfernt davon) sitzen. Für 
ein 5V-System kannst Du z.B. das hier nehmen. Sind nachher nur wenige 
Cent pro Stück.

https://www.onsemi.com/pub/Collateral/ESD5Z2.5T1-D.PDF

Wenn Du irgendwo Versorgungsspannung für LEDs, Encoder oder sonstwas 
rausgibst, wäre vielleicht eine Sicherung davor auch nicht das 
verkehrteste. Gibts auch in automatisch rückstellbar. Das sind dann 
beispielsweise solche Teile:

https://www.littelfuse.com/~/media/electronics/datasheets/resettable_ptcs/littelfuse_ptc_1210l_datasheet.pdf.pdf

Gibts in allen möglichen Größen.

fchk

von Carl D. (jcw2)


Lesenswert?

leo schrieb:
> H.Joachim S. schrieb:
>> Ok, ist auch im SPI-Betrieb adressierbar, interessant. Habe ich so noch
>> nicht gesehen.
>
> Nein, sehe ich nicht so, bzw. nur beim MCP23017 (I2C). Der TO verwendet
> MCP23S17 (SPI), da haben A0-A2 keine Bedeutung - wie auch?
> Der TO braucht getrennte /CS-Leitungen.
>
> leo

Laut DB ist SPI-Betrieb eher als I2C-over-SPI anzusehen. Das Protokoll 
ist immer nach I2C Logik inclusive Addressierung bis zu 8 Chips via 
A0..2 Pins.
Allerdings muß man die Benutzung der Adresspins erst freischalten. Nach 
Reset hört der Chip nur auf Adresse 0x20 (oder 0x40 je nach Lesart 
analog I2C).
Und offenbar gibt es einen Bug, der dazu führt, daß sobald der A2-Pin 
auf High liegt, die "Freischaltsequenz" an Adresse 0x24 sendet. Sprich, 
A2 ist immer aktiv.

von g457 (Gast)


Lesenswert?

> Ok, ist auch im SPI-Betrieb adressierbar,

Muss man aber laut Datenplatt erst einschalten, der Reset-Wert ist (wie 
zu erwarten) "Adresspins interessieren nicht" (sie dürfen aber trotzdem 
nicht floaten).

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.