Forum: Mikrocontroller und Digitale Elektronik parallele SRAM Bausteine (nennt man das so ?) in Bascom


von (unknown) (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend,

ich bins mal wieder :) habe eine Grundsatzfrage und komm mir ganz arg 
blöd vor, das überhaupt fragen zu müssen. Ach ja, ich programmiere in 
Bascom. Im Anhang findet ihr einmal das Datenblatt des TIMEKEEPER SRAM 
M48T08-150PC1 und das Datenblatt des ZEIT-SRAM DS1643.Folgendes Problem 
stellt sich bei mir:

Hab ne kleine Platine in unserem E-Schrott gefunden (Firma), einen aus 
der Elektronikabteilung gefragt, der sagt, ist noch gut und lauffähig, 
entspricht aber nicht mehr den neuen Standarts -> darf also nicht mehr 
verwendet werden in medizinischen Geräten. Gut, gleich mit heim genommen 
und mal die IC's angeschaut. Zum einen ist ein ZPSD302B-70J von ST 
drauf, der kann anscheinend programmierbare IO-Ports und EPROM und SRAM 
bereitstellen (Brauch ich aber nicht, ist nur der Gesamtheit halber 
erwähnt). Dann viel Kleinscheiß in SMD natürlich, Widerstände, 
Kondensatoren und der ganze Mist.

Und eben der schon oben genannte TIMEKEEPER SRAM CHIP M48T08-150PC1. Der 
wäre äußerst interessant für mich, weil ich gerade an einer VFD-Uhr am 
basteln bin, schön mit DCF77 Abfrage und so. Jetzt würde ich nur eben 
gerne diesen TIMEKEEPER verwenden. Es gibt bei mir nur das Problem, dass 
ich überhaupt keine Ahnung habe, wie ich generell einen SRAM anschließe 
und anspreche.

Die Adresspins geh ich mal davon aus, dass ich über entsprechende Pegel 
an den Pins die direkte Adresse des Bytes angebe, was ich in paralleler 
Form dann an den D0-D7 Pins finde. Ist das so richtig ? Jetzt hab ich 
nur das Problem dass dieser TIMEKEEPER 13 Adresspins hat. Ich dachte 
immer, dass die Adresse 8 bit lang ist, daher komm ich mit den 13 bit's 
im Moment nicht klar.

Zweitens hätte ich noch ein anderes Denkproblem. Wie errechne ich die 
Adresse und wie muss ich das dann in Bascom angeben ? Da ich bei 
Assembler nicht mal die leiseste Ahnung hab und den Wald vor lauter 
Bäumen nicht seh, und bei C es nicht viel besser aussieht, bin ich auf 
den Basic Dialekt mit Bascom eingestiegen und bisher hab ich noch alles 
lösen können. Außerdem kenn ich Basic halt auch noch vom Commodore C64 
und vom alten programmierbaren Taschenrechner, ein Sharp, meines Vaters, 
daher ist die Basicverwurzelung sehr stark bei mir.

Sorry, euch mit so was doofem Stören zu müssen, aber ich hab leider 
keine mir verständliche Erklärung für diese (parallelen) SRAM Chips im 
I-Net gefunden.Falls ich bei der Suche blind gewesen sein sollte, tut es 
mir leid.

Danke und schöne Woche,

euer Chris Kleile

P.S.: Ich würde mich freuen, wenn ich nicht einfach nur eine vorgekaute 
Lösung kriege, das hilft mir wenig. Ich würde mich gerne privat einfach 
weiterbilden, daher bitte nur Erklärungen oder Links zu Erklärungen, 
keine fertig programmierten Vorlagen für den Chip oben.

von hdd (Gast)


Lesenswert?

Die Adresse ist immer so lang dass du damit den kompletten verfügbaren 
Speicher adressieren kannst. In dem Fall sind das 8kB ld(8192) = 13, das 
heißt du brauchst 13 Leitungen um jedes Byte eindeutig ansprechen zu 
können.

Die Adresse an der du etwas speichern willst gibtst du einfach auf 
deinen Ausgangsport aus und setzt entsprechend dem Datenblatt die 
Lese-Leitung und nach einer bestimmten Zeit liegt das gewünschte Byte an 
DQ0-DQ7 an.
Du kannst auch Adressleitungen einfach auf einen festen Pegel legen wenn 
du nicht den kompletten Speicher brauchst, dann spart du Portpins. 
Willst du z.B. nur 8Bit-Adressen, dann legst du z.B. A8-A12 auf Low und 
verbindest nur A0-A7 mit einem Port deines Controllers. Allerdings hast 
du dann natürlich nur noch 2^8 = 256Byte zur Verfügung.
Laut Datenblatt liegen die Daten der integrierten Uhr einfach an den 
Adressen 1FF8-1FFF und können wie normale Daten gelesen werden. Daher 
wäre es vielleicht sinnvoll, die hohen Adressleitungen auf High zu 
legen, sonst kommt du nicht an die Uhr ran wenn du nicht alle 
Adressleitungen mit dem Controller verbindest.

Die Adressen wo du deine Daten ablegst denkst du dir dann selber in 
deinem Programm aus und schreibst die einfach auf den bzw. die 
Ausgangsport(s) an denen die Adressleitungen des Bausteins hängen.

von (unknown) (Gast)


Lesenswert?

hdd schrieb:
> Laut Datenblatt liegen die Daten der integrierten Uhr einfach an den
> Adressen 1FF8-1FFF und können wie normale Daten gelesen werden. Daher
> wäre es vielleicht sinnvoll, die hohen Adressleitungen auf High zu
> legen, sonst kommt du nicht an die Uhr ran wenn du nicht alle
> Adressleitungen mit dem Controller verbindest.
>
OK, das hört sich ja alles doch ganz gut an. Aber wie geb ich diese 
Adressen 1FF8 bis 1FFF im Bascom an ? Dort kann ich einen Port ja nur so 
hochziehen:
PORTC = &B11111111

Jede 1 steht ja für einen Pin.

Wie mach ich das dann ?


Vielen Dank !!


Chris Kleile

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Chris Kleile schrieb:
> Aber wie geb ich diese
> Adressen 1FF8 bis 1FFF im Bascom an ? Dort kann ich einen Port ja nur so
> hochziehen:
> PORTC = &B11111111

Genauso.
1
Dim Adresse As Word At 60
2
Dim AdresseLow As Byte At 60 Overlay
3
Dim AdresseHigh As Byte At 61 Overlay
4
5
Adresse = &H1FF8
6
7
PORTA = AdresseHigh
8
PORTB = AdresseLow


Gruß
Jonathan

von (unknown) (Gast)


Lesenswert?

Super danke ! freu

danke euch zwei, das wars was mir gefehlt hat ! Dankeschön !!

Schönen Abend und schöne restliche Woche,

euer Chris Kleile

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.