mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT91SAM7S64 - Auslesen des Last Converted Data Register


Autor: Tim L. (oreas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich habe ein vermutlich relativ simples Problem:

Es geht um eine AD-Wandlung von einem Sensorwert von einem ADXRS300.
Nach der AD-Wandlung möchte ich gerne den Wert, der in dem Last 
Converted Data Register liegt in einer Variablen speichern um damit 
andersweitig zu arbeiten. Ich bin jetzt den ganzen Tag schon am suchen, 
ob es möglich ist den Wert aus dem Register auszulesen und in eine 
Variable zu speichern. Leider bin ich bisher nicht weiter gekommen und 
hoffe nun, dass einer von euch mir helfen kann.

Wäre für eine schnelle Antwort, vorzugsweise mit der Antwort "Ja, es 
geht so ..." dankbar. Für andere antworten auch ^^

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tim L. schrieb:
> Ich bin jetzt den ganzen Tag schon am suchen,
> ob es möglich ist den Wert aus dem Register auszulesen und in eine
> Variable zu speichern.

Ja, was sollte man denn mit dem Wert sonst noch tun können wenn
nicht auslesen und abspeichern?

Was genau hast du denn versucht?

Autor: Tim L. (oreas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte bisher versucht das Register direkt anzusprechen und in eine
unsigned int 
 zu speichern. Der Compiler hat auch net gemeckert, aber funktioniert 
hat es trotzdem net. Stand immer nur der Wert 1023 oder bei einem 
anderen Versuch immer nur 0 drinne.

Mein letzter Versuch sieht momentan so aus:
value= AT91C_ADC_LDATA;

Was natürlich sein kann, ist, dass ich mich einfach ein bischen blöd 
anstelle und vor der Lösung seit gestern hocke ...

Als Anmerkung am Rande: ich bin noch nicht so erfahren im Programmieren 
von Controlern.

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tim L. schrieb:

> Mein letzter Versuch sieht momentan so aus:
value= AT91C_ADC_LDATA;

Das Register heißt aber AT91C_ADC_LCDR.  Wofür der Name ADC_LDATA
überhaupt gut sein soll, erschließt sich mir nicht, die Definition
lautet auf 0x3FF.  Da es sich um einen 10-bit-ADC handelt, soll
ADC_LDATA (bzw. ADC_DATA) möglicherweise als Maske gut sein.

Wenn du mehr als nur ein Register zugreifst, könnte es sich übrigens
lohnen, die Strukturvariante zu benutzen:
  AT91PS_ADC adcp = AT91C_BASE_ADC;
...
  value = adcp->ADC_LCDR;

So, wie ich die Architektur des ARM verstanden habe, ist es ziemlich
aufwändig, eine 32-bit-Zahl (bspw. halt die Adresse des ADC_LCDR)
in ein Register zu laden.  Hingegen liegen die Basisadressen der
einzelnen peripherals allesamt so, dass sie sich mit einem einzigen
Befehl in ein Register laden lassen, und der anschließende Struktur-
zugriff lässt sich ebenfalls vom Compiler gut als offset-indirekte
Adressierung umsetzen.

Autor: Tim L. (oreas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

vielen vielen Dank!!! Funktioniert so, wie ich es will. Nun kann ich 
weiter basteln ^^

Danke an alle, die mir helfen konnten.

@Jörg: Hatte mir das falsche Register rausgesucht. Mit deiner Lösung 
läufts jetzt einwandfrei.

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.