AVR - Hilfe bei Schematics prüfung?

OP #5970094
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
#5970119
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.
OP #5970137
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
Gast #5970629
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...
#5970727
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
#5970772
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.
Gast #5970782
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).

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