Speicherbausteine Grundkenntnisse

Gast #5107649
Lesenswert?

Hallo,
Ich benötige für einen Atmel ATTiny84 einen externen Speicherbaustein. 
Das ganze soll so aussehen, dass der ATTiny84 gelegentlich Daten zum 
Speicherbaustein schickt und die dann gespeichert werden soll. Dabei 
kann es auch vorkommen dass der ATTiny84 auch mehrmals hintereinander 
Daten schickt, dabei sollen die alten aber nicht verloren gehen. Und der 
Speicherbaustein soll auch von einem anderen Atmel Chip zur Verfügung 
gestellt werden, damit der die Daten lesen kann.D.h dass der ATTiny84 
nur schreibt und der andere nur ließt. Das ganze sollte innerhalb von 
ein paar ms passieren, also entweder ein lesezyklus oder schreib zyklus. 
Sobald der andere Atmel Chip die Daten hat soll er die Daten auf dem 
Speicherbaustein löschen (oder auch nur Überschreiben, damit der 
Speicherbaustein länger funktioniert), damit keine Komplikationen 
entstehen. Der Speicherbaustein sollte eine Kapazität von 54 kb haben. 
Ich weiß das die alle mithilfe von Adressen über die SDA und SCL Leitung 
kommunizieren können. Doch ich habe keine Ahnung welcher 
Speicherbaustein sich am besten eignet und wie das ganze Funktioniert, 
also wie man auf den Speicherbaustein zugreift und dem die Daten 
aufspielt.
Vielen Dank
#5107657
Lesenswert?

T800w schrieb:
> Doch ich habe keine Ahnung welcher
> Speicherbaustein sich am besten eignet

Der, den du am billigsten kaufen kannst.

Ein mögliches 64k SPI RAM wäre z.B.
http://ww1.microchip.com/downloads/en/devicedoc/22126c.pdf

Falls der Inhalt auch bei Stromausfall erhalten bleiben soll,
könnte man FRAM einsetzen:
http://de.farnell.com/cypress-semiconductor/fm25cl64b-g/fram-64k-spi-8soic/dp/2077755

Denn Flash-Baustein sind meist grösser, haben blöde Betriebsspanugnen 
und wird bei Millisekunden eventuell knapp
AT25DF256-XMHNGU-B (niedrige Spannung)
oder
S25FL128SAGMFI003
#5107663
Lesenswert?

Also möchtest du
2x Master (ATtiny & anderer Ateml Chip)
1x Slave (Speicher)
aufbauen?

Wenn der eine nur schreibt und der andere nur liest...
warum sendet dann der ATtiny die Daten nicht direkt an den anderen Chip.

Wenn es blöd läuft, dann versuchen beide gleichzeitig auf den Speicher 
zuzugreifen und dann funktioniert weder schreiben noch lesen.

Ich würde da anders herangehen.
#5107672
Lesenswert?

T800w schrieb:
> Ich weiß das die alle mithilfe von Adressen über die SDA und SCL Leitung
> kommunizieren können

Da hast du etwas falsch verstanden.

SDA und SCL gehören zum I2C-Bus.
Und bei weitem nicht alle Speicherbausteine nutzen diesen Bus.

Über die von dir angesprochenen Adressen werden die einzelnen Bausteine 
an sich angesprochen.
Das ist wie in einem Raum, in den dich jeder hören kann. Da musst du 
auch eine Person konkret ansprechen und ihr sagen "Werner, merk dir mal 
die Zahl 42 an Position 1!".
Folglich wird sich nur Werner diese Zahl an dieser Position merken, auch 
wenn jeder mithören konnte.


T800w schrieb:
> (oder auch nur Überschreiben, damit der
> Speicherbaustein länger funktioniert),
Jede Schreib-Operation (Löschen gehört auch dazu) verringer die 
Lebenszeit deines Chips. Typischerweise liegen die Zyklen bei so 
100.000, können aber auch deutlich mehr sein. Das hängt auch von der Art 
des Speichers (Flash, E(E)PROM, etc.) ab und lässt sich im Datenblatt 
finden.

Ein ATTINY84 klingt so, dass du grundsätzlich wenig Pins verwenden 
möchtest, da bietet sich in der Tat ein Speicher mit I2C an.

Wie es mit I2C-Flash-Speichern aussieht weiß ich nicht genau, aber die 
Ergebnisse bei Google sind recht mager - spontan habe ich nur EEPROMS 
gesehen, die haben aber Schreibzeiten im Bereich weniger ms.
Ob das reicht musst du wissen.

Alternativ bieten sich natürlich SPI-Flashs an. Die lassen sich einfach 
ansprechen und sind sehr schnell im Schreiben. Die brauchen aber vier 
Leitungen zum Lesen bzw. drei zum Schreiben. Ob das auch noch Okay für 
dich ist musst du wissen.
#5107754
Lesenswert?

@ T800w (Gast)

>Ich benötige für einen Atmel ATTiny84 einen externen Speicherbaustein.
>Das ganze soll so aussehen, dass der ATTiny84 gelegentlich Daten zum
>Speicherbaustein schickt und die dann gespeichert werden soll. Dabei
>kann es auch vorkommen dass der ATTiny84 auch mehrmals hintereinander
>Daten schickt, dabei sollen die alten aber nicht verloren gehen. Und der
>Speicherbaustein soll auch von einem anderen Atmel Chip zur Verfügung
>gestellt werden, damit der die Daten lesen kann.D.h dass der ATTiny84
>nur schreibt und der andere nur ließt.

Wenn möglich, erledigt man das mit EINEM Controller und nicht zwei.
#5107781
Lesenswert?

Keine Ahnung, ob die I²C Schnittstelle des ...84 Multimasterfähig ist.
Wenn nicht, solltest Du - nach Murphy - davon ausgehen, dass beide 
Prozessoren gleichzeitig am Speicher rumfummeln wollen.

Das aber lässt sich nur sinnvoll verhindern, wenn Du eine 
"Sicherungsleitung" ins System einfügst, die den Verkehr regelt. Z.B. 
über eine pulled up connection. Oder Du bestimmst einen der Beiden zum 
Massa und der "sagt" (Output) was Sache ist und der Andere darf Fragen 
(input). Ist aber eine Krücke.

Die Datenorganisation geschient am einfachsten in einem Ringpuffer. Wer 
schreibt, fummelt am "Ende-Zeiger" rum, wer liest, am Anfangszeiger. So 
kann jederzeit festgestellt werden ob und wie viele Daten im Topf sind 
oder wieviel freier Platz noch da ist. Wichtig ist dabei nur, dass immer 
ein "bisschen" Platz im Puffer ist. Denn mehr wie voll ist meist 
problematisch.
#5107939
Lesenswert?

Sebastian S. schrieb:
> Die Beschreibung bei Reichelt ist ja echt lustig!
>
> "It provides reliable data retention for 151 years"
>
> Also nicht nur 150 Jahre, sondern volle 151 Jahre.

150 hören sich eben nach Marketing geschreibsel an.
Aber 151, das wirkt wie tatsächlich und wissenschaftlich korrekt 
ermittelt.

Mr. Spock hat ja auch nie gesagt "3 Stunden", da waren es "3 Stunden, 2 
Minuten und 12 Sekunden".

:-D
#5107979
Lesenswert?

T800w schrieb:
> D.h dass der ATTiny84
> nur schreibt und der andere nur ließt.

Das ist ein typischer Anfängerfehler, daß sie meinen, es wird einfacher, 
je mehr CPUs man benutzt. Das Gegenteil ist der Fall.
Vernetzung ist die hohe Schule der Programmierung, davor sollte man also 
erstmal lernen, eine CPU zu programmieren.

Wenn Du nen AVR mit 64KB SRAM brauchst, nimm z.B. einen ATmega162 und 
pappe 64kB SRAM dran. Der Schaltplan dazu steht im Datenblatt:
"Figure 12. External SRAM Connected to the AVR"
#5108032
Lesenswert?

@André R. (andr_r619)

>Mal eine Zwischenfrage an der Stelle: Wie schnell ist dann eigentlich
>der Zugriff auf den externen Speicher?

Welcher Prozessor und welcher Speicher? Wenn du externen SRAM am AVR 
meinst, so ist der pro Zugriff um 1-3 Takte langsamer.

> Genau so viele Taktzyklen wie intern?

Nein. Interner RAM ist fast immer am schnellsten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren