www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik zu wennig pins


Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chef (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Olaf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: geloescht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser Beitrag wurde auf Wunsch des Autors geloescht.

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte?

Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Inwiefern?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.