www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Testmuster in Daten-RAM schreiben


Autor: Frank Klier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag miteinander,

ich hoffe, ich finde hier eine Antwort auf meine Frage.

Ich möchte ein ausgewähltes Testmuster in den Daten-RAM des
Mikrocontrollers schreiben.

Was muss ich tun, damit mir das gelingt?

Ich sage schon mal vielen Dank.

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist ein Testmuster?
Einige Leute hier versuchen "Testmuster" (Samples) von IC's bei
Herstellern oder Distributoren zu "schnorren"...

Falls du aber normale Daten (Registerinhalte) mit dem SRAM tauschen
willst, dann schau dir mal die Transferbefehle an, die im Datenblatt
aufgelistet sind. Das sind eine ganze Menge, da man das SRAM auf
verschiedene Art und Weise ansprechen kann. Die meisten fangen mit LD
oder ST an...

...

Autor: Frank Klier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte nicht "schnorren". Bin Student und möchte ne Aufgabe lösen.
Also ganz normal auf den Controller zugreifen.

Kannst du mir denn einen Befehl nennen, mit dem ich unter C
Registerinhalte auslesen kann?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne daß Du den Controller, den verwendeten C-Compiler und das nennst,
was für Dich ein "Register" sein mag, kann diese Frage nicht
beantwortet werden.
War die Frage vor zwei Postings in diesem Thread nicht auch eine etwas
andere?

Autor: Frank Klier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich arbeite mit dem 80C537 von Infineon und einem dafür kompatiblen
C-Compiler.

Weißt du, wie man eine Bitfolge(Testmuster) in den Daten-RAM dieses
Controllers schreiben kann?

Autor: toddoy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
pass auf Ich würde das so machen:

#define anz_datem  xxx
byte * ptr;
byte * ptr_AnfDaten;
ptr = malloc(xxx);
ptr_AnfDaten  = ptr;
int i=0;
for(i=0;i< max ;i++,ptr++)
{
// hier solltest du die Testdaten generieren
*ptr = Testmuster; // hier schreibst das Testmuster ins ram
}

Autor: Frank Klier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon mal vielen Dank. Es ist aber trotzdem immer schwer sich in die
Syntax eines anderen reinzuversetzen.

Könntest du es noch mal kurz kommentieren.

Z.B. Was soll der Ausdruck "xxx" bedeuten? Was macht malloc?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
xxx ist durch eine Dezimalzahl zu ersetzen, die die Größe des
Speicherblocks angibt.

malloc ist eine Funktion, die Speicher auf dem Heap belegt, und der
liegt im RAM. Daher ist der Rückgabewert ein Pointer auf eben das
Daten-RAM.

Allerdings:

Bevor Du hier noch weitere Fragen über C stellst, rate ich Dir
dringend, Dir ein Buch über C anzuschaffen und durchzulesen. Der K&R
(Kernighan & Ritchie, Programmieren in C, zweite Auflage, Hanser
Verlag) ist da anzuraten.

Autor: Frank Klier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hat im direkten Sinne nichts mit C-Programmierung zu tun. Malloc ist
eine spezifische Funktion, die nur in Verbindung mit
Controller-Programmierung verwendet wird.

Trotzdem danke für den Buch-Tipp.

Hab trotzdem noch mal ne Frage zur Syntax (die allerletzte). Was soll
ich an die Stelle schreiben, wo der Kommentar steht: // hier solltest
du die Testdaten generieren. Was meint "toddoy" damit?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Das hat im direkten Sinne nichts mit C-Programmierung zu tun.
  Malloc ist eine spezifische Funktion, die nur in Verbindung
  mit Controller-Programmierung verwendet wird."

Ich fass' es nicht. Wie kommst Du denn auf diese völig irrige
Annahme?

Bevor Du hier noch weitere Fragen über C stellst, rate ich Dir äußerst
dringend, Dir ein Buch über C anzuschaffen und durchzulesen.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Meide malloc auf Mikrocontrollern,
2. Meide malloc auf PCs,
3. MEIDE malloc!

Wie man ein Muster ins RAM schreiben kann, um beispielsweise
Kollisionen zwischen zwei Datenbereichen feststellen zu können, kannst
Du im GCC-Forum nachlesen. Da hat Peter Dannegger eine schöne Lösung zu
geschrieben.

Evtl. hilft Dir das ja weiter:

http://www.mikrocontroller.net/forum/read-2-133551...

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.