Forum: Mikrocontroller und Digitale Elektronik Mehr I/O Pins.


von Peter P. (uncle-sam7)


Lesenswert?

Hallo NG,

kann mir jemand sagen, was man macht, wenn man an seinem MC mehr I/Os 
braucht (so um die 32 3,3V + evtl. 5V tollerant)? Ich hab mal irgendwo 
was gesehen, das über SPI funktioniert. Wie schnell kommt man den da an 
einen PORT-Zustand ran, bzw. wie schnell (wieviele Zyklen) kann man 
einen PORT auf High oder Low setzen?

Am liebsten würde ich das Teil für AT91SAM7S256 nehmen. Aber das dürfte 
wg. SPI ja eigentlich egal sein, was für einen MC man nimmt?

Viele Grüße und Danke für jeden Hinweis (oder Link :-).
Peter

von holger (Gast)


Lesenswert?

>Ich hab mal irgendwo was gesehen, das über SPI funktioniert.

SPI Portexpander lautet dein Suchwort.

> Wie schnell kommt man den da an
>einen PORT-Zustand ran, bzw. wie schnell (wieviele Zyklen) kann man
>einen PORT auf High oder Low setzen?

Hängt vom SPI Takt ab.

von Tom M. (tomm) Benutzerseite


Lesenswert?


von Klaus 2. (klaus2m5)


Lesenswert?

Wenn es auf jeden Takt ankommt, würde ich parallele Bus-Register nehmen. 
Ein Puls auf Enable und die Daten sind da.

von Peter P. (uncle-sam7)


Lesenswert?

jetzt hab ichs wieder gefunden:

http://www.nxp.com/documents/data_sheet/PCA9505_9506.pdf
z.B. auf:
http://www.tinyclr.com/downloads/Component/Broch_FEZ_IO40.pdf

gibts da was vergleichbares fertiges? sind $44 gerechtfertigt?

Nochmal wegen der Geschwindigkeit:
Muss ich da immer alle Bits "abholen" und auswerten?

von holger (Gast)


Lesenswert?

>Nochmal wegen der Geschwindigkeit:

Bei I2C würde ich mir keine Gedanken um die
Geschwindigkeit machen. Diesen scheiss einfach
vergessen und SPI nehmen;)

>Muss ich da immer alle Bits "abholen" und auswerten?

Nö, letzten Zustand im RAM merken, ändern
und rüberbeamen.

Ach, ich vergass, du willst ja kein RAM benutzen;)
Buhahaha!

von Peter P. (uncle-sam7)


Lesenswert?

okok, danke für die Antwort, aber vielleicht ein wenig langsamer für 
mich zum Verständnis:

Momentan ist es ja so, dass ich die Pins über GPIO auslesen kann. Sowas 
in der Art hätte ich mir dann auch vorgestellt.

Hintergrund:
Ich möchte gerne noch ein Display an den ARM anschließen. Momentan habe 
ich auch nur 2 Taster und 2 LEDs dran. Nun könnte ich natürlich die 
Datenleitungen des SID doppelt belegen, da ja sowohl das Display als 
auch der SID "CS" haben. Das gefällt mir aber nicht so gut. Es gibt ja 
noch so viele Dinge, die denkbar wären (z.B. Drehcodertaster oder wie 
man die Dinger nennt).

Deswegen auch die Frage nach der Geschwindigkeit:
wenn ich den ARM mit ca. 47MHz am Laufen habe, wieviele Takte würden 
verbraten, um z.B. einen beliebigen PIN auf High oder Low zu setzen? 
Dauert es für den Ersten genau so lange, wie für den Letzen?

Ich glaube im Endeffekt suche ich sowas mit Datenleitung und 
Adressleitung?

von Peter P. (uncle-sam7)


Lesenswert?

Ist sowas OK?

http://www.reichelt.de/?ACTION=3;ARTICLE=90047;PROVID=2402

Hab im Datenblatt gesehen, dass SPI bei max. 10MHz liegt.
Was bedeutet das?

von Frank K. (fchk)


Lesenswert?

Peter Pippinger schrieb:
> Ist sowas OK?
>
> http://www.reichelt.de/?ACTION=3;ARTICLE=90047;PROVID=2402

Zu teuer. 74HC595 bzw HC597 sind die Standardlösung für sowas.

> Hab im Datenblatt gesehen, dass SPI bei max. 10MHz liegt.
> Was bedeutet das?

Nun ja, Du brauchst pro bit ein Takt, bei 8 Bits sinds 8 Takte, bei 10 
MHz kannst Du Dir ja ausrechnen, wie lange das dauert.

Am einfachsten und schnellsten ist es, einen Controller mit mehr Pins zu 
nehmen. So ein STM32F103 mit 144 Pins erlaubt schon einiges. Oder ein 
LPC2468 mit 208 Pins. Mehr wirst Du als Bastler aber nicht verarbeiten 
können.

fchk

von Peter P. (uncle-sam7)


Lesenswert?

Hallo Frank,

ich hatte ja zuerst auch die Idee, dass ich den LPC3131 nehme, da es 
diesen von Olimex entsprechent nett aufbereitet gibt.

Allerdings habe ich noch nie mit JTAG gearbeitet und bin mir nicht 
sicher, was ich da bestellen muss, damit ich auf win7 (nur USB) 
entwickeln kann. Wenn bei einem JTAG "ARM" dabei steht, kann ich das 
dann mit dem LPC3131 verwenden, bzw. mit jedem "ARM"?

Grüße
Peter

von Hans W. (stampede)


Lesenswert?

Hi,

>Ich möchte gerne noch ein Display an den ARM anschließen. Momentan habe
>ich auch nur 2 Taster und 2 LEDs dran.
Aha. 4 IOs weg und schon Panik :)

>Nun könnte ich natürlich die
>Datenleitungen des SID doppelt belegen, da ja sowohl das Display als
>auch der SID "CS" haben. Das gefällt mir aber nicht so gut. Es gibt ja
>noch so viele Dinge, die denkbar wären (z.B. Drehcodertaster oder wie
>man die Dinger nennt).

Und warum "gefaellt dir das nicht so gut" ?!?! Das ist mit Abstand die 
beste Loesung!!! Schnell und keine Extrabauteile. Was will man mehr?

Ich nutzt beispielsweise ein LCD (7 IOs), einen PGA2311 (4 IOs) und 
einen Drehgeber (4 IOs) an einem 8 Bit Port, durch geschickes 
Verschalten und Multiplexen der IOs. Das klappt wunderbar und ist auch 
schnell. So schnell wirst du das mit einem Schieberegister, I2C 
Expander, oder was auch immer nicht hinbekommen.

Gruss,
Stefan

von Frank B. (foobar)


Lesenswert?

Peter Pippinger schrieb:
> Allerdings habe ich noch nie mit JTAG gearbeitet und bin mir nicht
> sicher, was ich da bestellen muss, damit ich auf win7 (nur USB)
> entwickeln kann. Wenn bei einem JTAG "ARM" dabei steht, kann ich das
> dann mit dem LPC3131 verwenden, bzw. mit jedem "ARM"?

Viele LPC-Microcontroller haben einen Bootloader per seriellen Port: Man 
muß da während Reset eine Taste drücken oder so ähnlich und kann dann 
mit einem speziellen Tool von NXP über den seriellen Port 
(USB-nach-seriell Adapter hatte bei mir auch funktioniert) das Flash 
beschreiben. Debuggen geht darüber aber nicht, dafür wäre JTAG gut, aber 
debuggen braucht man ja sowieso nicht :-) Kann sein, daß die Bausteine 
mit USB-Anschluss auch einen USB-Bootloader haben, sodaß man keine 
weiteren USB-seriell-Adapter braucht.

von Frank K. (fchk)


Lesenswert?

Peter Pippinger schrieb:
> Hallo Frank,
>
> ich hatte ja zuerst auch die Idee, dass ich den LPC3131 nehme, da es
> diesen von Olimex entsprechent nett aufbereitet gibt.
>
> Allerdings habe ich noch nie mit JTAG gearbeitet und bin mir nicht
> sicher, was ich da bestellen muss, damit ich auf win7 (nur USB)
> entwickeln kann. Wenn bei einem JTAG "ARM" dabei steht, kann ich das
> dann mit dem LPC3131 verwenden, bzw. mit jedem "ARM"?

Im Prinzip ja, aber:
ARMs gibts in verschiedenen Versionen: ARM7, ARM9, Cortex M0/M1/M3,...

Und: Deine Entwicklungsumgebung muss diesen Adapter können. Schau nach, 
was für Adapter unterstützt werden und kaufe dann einen aus der Liste.

fchk

von Frank K. (fchk)


Lesenswert?

Frank K. schrieb:

>> Allerdings habe ich noch nie mit JTAG gearbeitet und bin mir nicht
>> sicher, was ich da bestellen muss, damit ich auf win7 (nur USB)
>> entwickeln kann. Wenn bei einem JTAG "ARM" dabei steht, kann ich das
>> dann mit dem LPC3131 verwenden, bzw. mit jedem "ARM"?

Oder, was für Dich einfacher ist:

Nimm einen 100 Pin PIC32MX. Dazu hat Microchip den passenden Compiler 
für Dich, den passenden Debugger, die passende IDE, die passenden 
Bibliotheken, und die passenden Eval-Boards. Alles passt nahtlos 
zusammen, alles ist aufeinander abgestimmt, aus der Ecke wirst Du dann 
keine Probleme mehr haben. Und Du hast Support aus einer Quelle, und der 
Microchip-Support ist vergleichsweise gut. Als Anfänger wirst Du so 
deutlich schneller vorankommen.

Der MIPS-Kern im PIC32 ist mindestens genauso leistungsfähig wie die 
ARM-Konkurrenz.

fchk

von peter (Gast)


Lesenswert?

jetzt habe ich gerade bei rs folgendes gesehen:
http://de.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=7141707#

aber irgendwie komm ich nicht dahinter, was sich hinter diesem Angebot 
verbirgt. Gibts da ne Herstellerseite? Hab auf Anhieb nichts gefunden...

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.