Forum: Mikrocontroller und Digitale Elektronik zu wennig pins


von Olaf (Gast)


Lesenswert?

hallo zusammen,
würde gerne wisse wie ich folgendes problem am besten lösen kann.
arbeite mit µC und dieser hat zwar 40 pins aber wegen speicherplatz
mangel muss ich ein externen ram dranhängen. das problem ist das dieses
nvsram 15 adressierungs, 8 dta in/out und noch 3 weitere pins hat. also
26 pins die ich an mein µC hängen muss aber ich habe nicht soviele pins
am µC frei. habe gehört das man mit einem port von bit 0-7 und hilfe von
ic´s dieses problem lösen kann.kann mir jemand erklären wie das
funktionieren soll??? und was diese ic´s machen?
was , wie  ich machen muss, kenne mich da überhaupt nicht aus.

danke jetzt schon

Olaf

von Chef (Gast)


Lesenswert?

Hängt vom MC ab.

Hat er einen externen Bus, dann einfach ein popeliges Latch dran und
per Adressdekodierung den Speicher und externe IOs ausdekodieren.

von Michael F. (Gast)


Lesenswert?

ich hab mal folgendes gebastelt: ATmega162 +externer SRAM +LCD
für das lcd hab ich keine zusätzlichen leitungfen gebraucht, da man in
µC die Pins, die für die high-byte adresse benötigt werden, freigeben
kann. Also habe ich immer, wenn ich das LCD ansprechen wollte, die pins
freigegeben, das LCD angesteuert und danach die pins wieder
zurückgeschaltet.

Was du meinst sind aber vermutlich schieberegister bzw latches bzw
port-expander
was die einzelnen teile machen, kannst du im netz nachlesen, deshlab
nur zu nem latch etwas:
das ist ein chip mit normalerweise 8 eingängen und 8 ausgängen. dann
gibt es noch einen pin, mit dem man bestimmt ob die werte, die an den
eingängen liegen, direkt zu den ausgängen gegeben werden sollen oder ob
der aktuelle wert der ausgänge bestehen bleiben soll.

von Olaf (Gast)


Lesenswert?

hallo,


<von Chef:
<Hat er einen externen Bus, dann einfach ein popeliges Latch dran und
<per Adressdekodierung den Speicher und externe IOs ausdekodieren.


was meinst du mit externen bus?

was meinst du mit deiner aussage
<"einfach ein popeliges Latch dran und per Adressdekodierung den
<Speicher und externe IOs ausdekodieren."

meinst du das ich mit hilfe von programmiercode die pins dann umändern
kann z.B. schreiben in data oder adressierungsport?

habe angefangen µC zu programmieren und zwar ein PIC18xxx es macht viel
spass und jetzt ist mir da eine idee gekommen aber elektrotechnisch bin
ich überhaupt nicht informiert, wie man merkt.also bitte ich euch mir
das bischen näher zu bringen.

das mit dem latch werde ich mir gleich durchlesen.

Michael F. schrieb:
<das ist ein chip mit normalerweise 8 eingängen und 8 ausgängen. dann
<gibt es noch einen pin, mit dem man bestimmt ob die werte, die an den
<eingängen liegen, direkt zu den ausgängen gegeben werden sollen oder
<ob der aktuelle wert der ausgänge bestehen bleiben soll.

inwiefern bringt mich das weiter? ich muss doch zuerst die adresse
durch geben wo die daten gespeichert werden sollen (hi und low byte)
dann die hilfs bits zum schreiben setzen und dann meine daten ins
register schreiben.

danke euch
OLAF

von Peter D. (peda)


Lesenswert?

"was meinst du mit externen bus?"


Nun z.B. alle 8051 und einige AVRs (ATMega162) im DIP-40 haben einen
externen SRAM-Bus, d.h. dort angeschlossener SRAM kann direkt wie
interner SRAM angesprochen werden.

Das ist besonders vorteilhaft, wenn man in C programmiert (was man bei
größerem SRAM also größeren Programmen immer tun sollte).

Und da ist es typisch, das die Adressen gemultiplext werden, um Pins zu
sparen. Wie man dazu das Adreßlatch anschließen muß, steht im
Datenblatt.

Ob die PICs sowas auch können, weiß ich nicht.

Ist das nicht der Fall, dann muß man sich spezielle Transferroutinen
schreiben, die einzelne Bytes oder Blöcke vom internen SRAM in den
externen SRAM kopieren und umgekehrt.

Das macht natürlich die Verwaltung des zusätzlichen SRAMs wesentlich
komplizierter und vor allem langsamer.


Hat man keinen Memory-Bus, dann hängt es davon ab, wie oft und wie
schnell man auf den externen SRAM zugreifen will.

Am sparsamsten ist die Anbindung über SPI, d.h. die Adresse schiebt man
in ein oder zwei 74HC164 und die Daten in einen 74HC299.
Dann kommt man mit nur 5 Leitungen aus (SPI + /WR + /CE).


Wenn Du das NVSRAM verwenden willst, um Daten dauerhaft zu speichern,
wird das sehr kompliziert.
Ohne spezielle Schaltungskniffe werden unweigerlich Daten während des
Aus- und Einschaltens zerstört.
EEPROMs und Flash haben deshalb eine Software-Data-Protection, ich weiß
nicht ob die NVSRAMs sowas auch haben.


Peter

von Andi (Gast)


Lesenswert?

@Olaf: In was programmierst Du und wieviel SRAM benötigst Du?
Vielleicht wäre ja ein anderer µC eine einfachere Lösung.

MfG
Andi

von Olaf (Gast)


Angehängte Dateien:

Lesenswert?

ich programmiere mit assembler und möchte ein 32k sram benutzen. habe
gerade im data sheet nach geschaut und habe nichts gefunden mit memory
bus, serielle wie i2c usw. sind vorhanden. das wäre ja schön ein zu
haben der einfach komunizieren könnte wie Peter gesagt hat:

<.........DIP-40 haben einen externen SRAM-Bus, d.h. dort
<angeschlossener SRAM kann direkt wie interner SRAM angesprochen
<werden.

aber der code für den rest meines vorhabens steht schon fast und das
wieder alles neu zu programmieren für ein anderen µC wäre schlimmer.

bin mir nicht sicher deshalb poste ich mal die beschreibung zu diesen
PIC, vielleicht habe ich was übersehen?

OLAF

von geloescht (Gast)


Lesenswert?

Dieser Beitrag wurde auf Wunsch des Autors geloescht.

von Olaf (Gast)


Lesenswert?

Bitte?

von Harald (Gast)


Lesenswert?

Ohne die PIC - Familie näher zu kennen, fällt mir auf deinem geposteten
JPG der PSP - Parallel Slave Port auf.
Könnte das nicht die Lösung deines Problems sein ?

von Olaf (Gast)


Lesenswert?

Inwiefern?

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.