Forum: Mikrocontroller und Digitale Elektronik Tabelleneinsprung in C realisieren?


von Stefan (Gast)


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

von Tobi H. (tobi-) Benutzerseite


Lesenswert?

neuer_wert = grosses_array[ alter_wert ];
mehr nicht.

von Stefan (Gast)


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

von Stefan (Gast)


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];
}

von Falk B. (falk)


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


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.