www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Externes RAM an 8515???


Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich empfange mit meinem Atmel 8515 Infrarotsignale. Da der 8515 nur
über sehr wenig Speicher verfügt möchte ich die Zeiten, die ich
gemessen habe schnell an den Rechner übertragen. Die UART ist dafür
leider zu langsam (muss ca alle 260us einen Wert abspeichern!).
Ich möchte daher die Daten zwischenspeichern. Am besten wäre sicherlich
ein externes FlashMemory. Benötige dafür aber 2 freie Ports (Port A und
D)! Diese Ports sind natürlich schon belegt!
Ein externes EEPROM wäre viel zu langsam! Benötige also irgendein
statisches RAM?!?
Hat jmd. Erfahrungen mit einem RAM Bautstein und kann mir eins
empfehlen?

Vielleicht hat ja jmd. auch eine andere Idee!?!?

Gruß,
Andi

Autor: Flite (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andi,

ich hab schon mal ein SRAM an den 8515 angeschlossen. Verwenden kannst
du jedes beliebige SRAM (ich glaub bis max. 64kB adressierbar).

Allerdings kannst du dann eben nur diese 64kB abspeichern und danach
musst du sie über das UART an den PC übertragen. Während dieser Zeit
kannst du natürlich keine IR Daten empfangen.

Der Anschluss eine SRAM an den 8515 ist im Datenblatt gut erklärt.

Kommt eben auf die Anwendung an, ob es was bringt oder nicht ...

Grüße
Flite

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Flite,

habe mir das gerade mal im datasheet angesehen. Ist es denn da nicht
auch so, dass ich die kompletten Ports A und C benötige???
Die hab ich nämlich nicht mehr frei!
64kB reicht vollkommen. Muss ca. 600 Byte speichern!

Andi

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ne Frage...

wie steht es denn sonst mit dem internal SRAM? Kann ich das nicht
verwenden?

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na klar kannst das interne RAM verwenden, wenn es gross genug ist. Wenn
du in C programmierst, einfach ein Array machen:

char werte[600];

und mit

int i;
i=0;
werte[i++]=deinmesswert;

speichern.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Fritz,

ich suche mich jetzt schon seit Stunden eine Erklärung wie ich einen
Wert in mein internes SRAM speicher!
Kannst Du mir viell in C kurz schreiben wie ich ins SRAM schreibe und
wie ich lese? Das wäre echt super... verzweifel hier nämlich schon
langsam.

Irgendwie muss ich ja die Adresse vom SRAM (z.B. 0x0060) und meinen
Wert angeben!?!

Gruß,
Andi

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dumme Frage:
Alle 260us einen Wert ? Wiso ist der UART zu langsam ???
115200Baud ergibt 11520Byte/s sind 86,8us/Byte
Und das ist wohl schneller als die 260us...

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Kannst Du mir viell in C kurz schreiben wie ich ins SRAM schreibe und
wie ich lese?"

Wie du schreibst steht ja oben.

Und lesen:

x=werte[i];

Wo das ganze im RAM steht braucht dich nicht zu kümmern, dass weiss der
Compiler.

Aber mach das Array nicht grösser als nötig, weil du sonst mit dem
Stack kollidierst.
Ich weiss nicht wieviel RAM der 8515 hat, aber du brauchst zumindest
1kB RAM wenn du 600Werte als Byte speicherst. Wenn es 16-bit Integer
sind, dann brauchst alleine 1200Byte fürs Array.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Benedikt,

laut datenblatt hat die UART bei 115200 Baud einen fehler von 7,8% (bei
8MHz). Ich arbeite daher mit höchstens 38400Baud.
Dazu kommt noch, dass ein Wert bei mir 16Bit groß ist.

Andi

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, scheiße... Sorry

ich habe die ganze Zeit gedacht, dass das interne SRAm mir noch
zusätzlich zur verfügung steht. Aber es ist dann so das alle Variablen
im SRAM gespeichert werden, ne?! Also wenn ich 512k SARAM habe, dann
kann ich auch nur so große Variablen anlegen!?
Und da das nicht reicht benötige ich noch ein externes oder wie steht
es mit dem internen EEPROM? Das ist dach zusätzlicher Speicher, oder?
Wie schnell ist denn da der Zugriff?!? Wrd mal wieder ins datatsheet
schaun...

Vielen Dank,
Andi

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay... hab schon gesehen.

EEPROM ist viel zu langsam (2.5 - 4ms)!

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andi:
Wäre es nicht einfacher, einen passenden Quarz für den 8515 zu benutzen
anstatt ein externes RAM anzuschließen? Und kannst Du die Daten nicht
platzsparender übertragen? Brauchst Du wirklich 16Bit pro Wert?

Markus

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Markus:
Die Idee mit dem Quarz ist mir auch schon gekommen.
Der 7.3728 wäre da nicht schlecht!
Bei den Werten handelt es sich um die Werte des Timer1 (16Bit).

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Meßwerte bekommst Du denn? Wenn Du z.B. nur Werte bis 4000
erwartest, dann reicht es ja, wenn Du 12 Bit überträgst. Als ich mal
ein IR-Signal analysiert habe, da hab' ich einen Timer-Interrupt mit
10kHz benutzt und dann die Signaldauer gemessen. Die Ergebnisse sind
dann automatisch mit 0,1ms Auflösung und in ein Byte passen bis zu
25,5ms. Das ganze hab' ich dann im RAM eines 2313 abgelegt, der ja
sogar nur 128Byte RAM hat.

Markus

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich mache das immer anderst:
Timer auf 10kHz, den logischen Zustand am Portpin lesen und 8 Werte zu
einem Byte zusammenpacken, so muss ich 1250Bytes/s übertragen, was auch
mit 38400Baud möglich ist...

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wollte mich nur noch mal kurz melden. Habe jetzt einen 7,3728 MHz Quarz
genommen, damit funktioniert es einwandtfrei! Habe es mit 180us
ausprobiert!

Gruß,
Andi

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.