mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tabelleneinsprung in C realisieren?


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin, moin zusammen.
Ich möchte gerne meine ADC Messwerte über einen Tabelle in scalierte 
Werte umwandeln. Dazu habe ich eine Tabelle mit zwei Spalten und 1023 
Zeilen erstellt. In der ersten Zeile steht das ADC Digit in der zweiten 
der zugehörige Wert scaliert.
Ich möchte nun in C eine Funktion schreiben die den ADC Wert bekommt und 
den zugehörigen Wert ausgibt. Wie realisiert man das in C? Über eine for 
Schleife, oder besser eine if Schleife usw. habe wenig Erfahrung mit C 
deshalb diese vielleicht auch triviale Frage.
MfG Stefan

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
neuer_wert = grosses_array[ alter_wert ];
mehr nicht.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieviele Werte kann ADC annehmen? 1024 (10 Bit), dann brauchst du doch 
nur eine Spalte...

type_of_irgendwas skalierter_wert[1024] = { /* ... */ };
type_of_irgendwas mein_skalierter_messwert;
unsigned int adc_messwert; /* 0..1023 valid */

mein_skalierter_messwert = skalierter_wert[adc_messwert /* zur 
Sicherheit: % 1024 */];

Gruß
anderer Stefan

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne habe nur einen Nutzbaren bereich von ca. 300 digits. Ist für ne 
Temperaturmessung.
Hatte das jetzt so angedacht

signed int ADC2Deg(unsigned int ADC)
{
Temp=Tabelle[ADC][1];
}

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Stefan

>Ne habe nur einen Nutzbaren bereich von ca. 300 digits. Ist für ne
>Temperaturmessung.

Dann brauchst du nur ein Array mit 300 Elementen und einer Spalte.
Etwa so.

int ADC2Deg[300]={1,2,3,4,5};

Die Intitialisierung muss du natürlich noch vervollständigen.

>Hatte das jetzt so angedacht

>signed int ADC2Deg(unsigned int ADC)
>{
>Temp=Tabelle[ADC][1];
>}

Im Prinzip richtig, aber du brauchst nur eine Spalte. Du solltest dir 
aber im klaren darüber sein, dass so eine Tabelle auf einem kleinen uC 
ziemlich ins Gewicht fällt. Das Verfahren ist zwar sehr schnell, 
verbaucht aber viel Speicher. Für eine langsame Temperaurmessung ist es 
meist besser eine Formel zu verwenden.

MFG
Falk


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.