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.
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.