Daten vom ADC in externen Speicher schreiben

OP #213763
Lesenswert?
• ▲
▼
Hallo,

vielleicht könnt Ihr mir helfen. Möchte die Daten, die ich von einem
AD-Wandler kriege, in einen externen 32k Speicher schreiben. Ich
benutze den MSC1210Y4, einen µC mit integriertem ADC. Bin mit der
Materie aber noch nicht vertraut und finde keine Infos mehr im Netz.

Gruß
Menolix
#213766
Lesenswert?
• ▲
▼
Ohne jetzt den Controler und Hardware grossartig zu kennen würde ich
folgendermaszen vorgehen:

1. Hardware inititialisieren (ADC, Interrupts, Stack etc)
2. ADC wert anfragen
3. warten auf ADC bis Wert fertig
4. ADC Wert holen
5. ADC Wert in speicher schreiben.
6. zurück zu 2

Das wäre der einfachste Weg.
OP #213767
Lesenswert?
• ▲
▼
so denke ich auch.
nur der Schritt von 4 nach 5 ist mir nicht ganz klar.
ich habe den Wert vom Typ float in der Variablen temp. Wie schaffe ich
es jetzt, diesen Wert in einen externen 32K (HY62256A) Speicherbaustein
zu schreiben. Es ist alles wie vorgesehen angeschlossen. der /OE an A15,
also P2.7 (oder P2_B7)

Menolix
#213769
Lesenswert?
• ▲
▼
Das Letzte mal, das ich es mit einem 8051 zu tun hatte, ist knapp 10
Jahre her. Man möge mir eventuelle Fehleinschätzungen verzeihen.

Wenn ich mich richtig erinnere, Adressiert der 8051 den externen
Speicher über das 8-bitRegisterpaar H und L. Ich weiss nicht, ob der
assembler dir diesen Umstand abnimmt.

Ich würde sagen, dir bleiben 2 möglichkeiten: a.)du rechnest der
Floatwert so um, das er in ein byte past. b.) du nimmst den float wert
selbst, zeigst mit einem char-pointer drauf und speicherst die
einzelnen Bytes ab.

zu a.)
Liegt der float wert beispielsweise innerhalb von 40.5 und 100, würde
ich ihn so umscalieren, das er in ein unsigned char reinpasst (0-255)
(unsigned char)byteval=(float)floatval-40.5*4.2857;

zu b.)
ist das float-typ beispielsweise 4byte gross:
unsigned char *bytes=(unsigned char)&floatvar;
for (cou=0;cou<4;cou++) {
   *EXTMEM=*bytes;
    bytes++;
}

Hoffe, das hilft ein wenig....zumindest als gedankenschubser...
OP #213770
Lesenswert?
• ▲
▼
macht nichts... die Idee ist gut. Punkt b klingt vielversprechend. Werde
es damit mal versuchen.

Sollten andere dies lesen, habe mich im letzen Posting vertan.

The extern memory is an HY62256A.
/OE is connected to /RD
/WE -> /WR
/CS ->  A15 (or P2.7 P2_B7)

Vielen Dank erstmal, die nächsten Fragen kommen bestimmt ;-)

greetings
Menolix
#213773
Lesenswert?
• ▲
▼
Ich vermute mal, der Wickenhäuser hält sich an den Quasi-standard Keil,
dann ist das Zauberwort "xdata".

D.h. alle Variablen, die als xdata deklariert werden, landen im
externen RAM.

Allerdings ist float Perlen vor die Säue !

Der ADC wird ja wohl kaum float ausgeben, d.h. Du sparst massig
Speicherplatz und CPU-Zeit, wenn Du die Werte genau so abspeicherst,
wie der ADC sie liefert (2 Byte = unsigned short).


Peter
#213776
Lesenswert?
• ▲
▼
"Aber mit "Perlen vor die Säue" irrst Du Dich, da der ADC 24 Bit
hat,
und ich brauche jedes einzelne davon :-)"

float sind 4 Byte, 24 Bit nur 3 Byte, Du kannst also locker 25%
sparen.

Auch ist die Frage, was Du hinterher machen willst, d.h. ob die
float-Werte überhaupt benötigt werden.
Z.B. Werte anzeigen geht auch prima in long, oder gleitendes Mittel
über 256 Werte usw.


Peter
Gast #213778
Lesenswert?
• ▲
▼
Ja, es stimmt. Habe zwar im Studium programmieren gelernt, ist aber
schon ein bißchen her. Aber das mit den 3 Byte 3*8 = 24 und nicht 32,
ist schon klar.

Arbeite mich gerade in ein neues Projekt ein, dass mit
µC-Programmierung zu tun hat.

Wenn Ihr noch weitere Infos habt, oder ne Webseite kennt, wo ich gute
Infos finde, wäre Euch sehr dankbar.

Menolix

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.