Guest
#2100186
Hi All,
i am currently reading different adc values fromm a Atmega32. The ADC
Value should ne used to look into a LUT and then display the Result out
of the Table via RS232.
The Table looks like
//**********************************************************************
*********************************************************
// NTC Tabelle
unsigned long
ntctable[911]={525,427,380,350,329,313,300,289,279,271,264,258,252,247,2
42,
238,234,230,227,223,220,217,215,212,209,207,205,203,201,199,197,195,193,
192,190,188,187,185,184,
182,181,180,179,177,176,175,174,173,172,171,170,169,168,167,166,165,164,
163,162,161,160,160,159,
158,157,156,156,155,154,153,153,152,151,151,150,149,149,148,148,147,146,
146,145,145,144,143,143,
142,142,141,141,140,140,139,139,138,138,137,137,136,136,135,135,134,134,
134,133,133,132,132,131,
131,131,130,130,129,129,129,128,128,127,127,127,126,126,126,125,125,124,
124,124,123,123,123,122,
122,122,121,121,121,120,120,120,119,119,119,119,118,118,118,117,117,117,
116,116,116,116,115,115,
115,114,114,114,114,113,113,113,113,112,112,112,111,111,111,111,110,110,
110,110,109,109,109,109,
108,108,108,108,107,107,107,107,107,106,106,106,106,105,105,105,105,104,
104,104,104,104,103,103,
103,103,102,102,102,102,102,101,101,101,101,101,100,100,100,100,100,998,
996,994,992,990,988,987,
985,983,981,979,977,975,973,971,969,967,966,964,962,960,958,956,954,953,
951,949,947,945,944,942,
940,938,937,935,933,931,930,928,926,924,923,921,919,918,916,914,913,911,
909,907,906,904,903,901,
899,898,896,894,893,891,890,888,886,885,883,882,880,878,877,875,874,872,
871,869,868,866,864,863,
861,860,858,857,855,854,852,851,849,848,846,845,843,842,840,839,837,836,
835,833,832,830,829,827,
826,824,823,822,820,819,817,816,815,813,812,810,809,808,806,805,803,802,
801,799,798,797,795,794,
792,791,790,788,787,786,784,783,782,780,779,778,776,775,774,772,771,770,
768,767,766,765,763,762,
761,759,758,757,756,754,753,752,750,749,748,747,745,744,743,742,740,739,
738,736,735,734,733,732,
730,729,728,727,725,724,723,722,720,719,718,717,716,714,713,712,711,709,
708,707,706,705,703,702,
701,700,699,697,696,695,694,693,691,690,689,688,687,686,684,683,682,681,
680,679,677,676,675,674,
673,672,670,669,668,667,666,665,663,662,661,660,659,658,657,655,654,653,
652,651,650,649,647,646,
645,644,643,642,641,640,638,637,636,635,634,633,632,631,629,628,627,626,
625,624,623,622,621,619,
618,617,616,615,614,613,612,611,610,608,607,606,605,604,603,602,601,600,
599,597,596,595,594,593,
592,591,590,589,588,587,585,584,583,582,581,580,579,578,577,576,575,574,
572,571,570,569,568,567,
566,565,564,563,562,561,560,558,557,556,555,554,553,552,551,550,549,548,
547,546,545,543,542,541,
540,539,538,537,536,535,534,533,532,531,530,528,527,526,525,524,523,522,
521,520,519,518,517,516,
515,514,512,511,510,509,508,507,506,505,504,503,502,501,500,499,498,496,
495,494,493,492,491,490,
489,488,487,486,485,484,483,482,480,479,478,477,476,475,474,473,472,471,
470,469,468,467,465,464,
463,462,461,460,459,458,457,456,455,454,453,451,450,449,448,447,446,445,
444,443,442,441,440,438,
437,436,435,434,433,432,431,430,429,428,426,425,424,423,422,421,420,419,
418,417,415,414,413,412,
411,410,409,408,407,406,404,403,402,401,400,399,398,397,395,394,393,392,
391,390,389,388,387,385,
384,383,382,381,380,379,377,376,375,374,373,372,371,369,368,367,366,365,
364,362,361,360,359,358,
357,356,354,353,352,351,350,348,347,346,345,344,343,341,340,339,338,337,
335,334,333,332,331,329,
328,327,326,325,323,322,321,320,318,317,316,315,314,312,311,310,309,307,
306,305,304,302,301,300,
299,297,296,295,293,292,291,290,288,287,286,284,283,282,281,279,278,277,
275,274,273,271,270,269,
267,266,265,263,262,261,259,258,257,255,254,252,251,250,248,247,246,244,
243,241,240,239,237,236,
234,233,231,230,228,227,226,224,223,221,220,218,217,215,214,212,211,209,
208,206,205,203,202,200,
199,197,195,194,192,191,189,188,186,184,183,181,180,178,176,175,173,171,
170,168,166,165,163,161,
159,158,156,154,153,151,149,147,146,144,142,140,138,136,135,133,131,129,
127,125,123,122,120,118,
116,114,112,110,108,106,104,102,100};
and the function the get the adcvalue :
uint16_t adcwert(uint8_t kanal)
{
uint16_t wert = 0; //Variable für Ergebnis
deklarieren
ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); //ADEN aktiviert
überhaupt erst den internen ADC-Wandler, ADPS2 bis ADPS0 stellen den
verwendeten Prescaler ein, denn die Wandlerfrequenz muss immer zwischen
50 und 200 kHz liegen! Der Prescaler muss bei 16MHz also zwischen 80 und
320 eingestellt werden, als einzige Möglichkeit bleibt hier 128 (=alle
auf 1).
ADMUX = kanal;
//ADMUX = (1<<REFS1)|(1<<REFS0); //Einstellen der
Referenzspannung auf "extern", also REFS1 und REFS0 auf "0" - daher
auskommentierte Zeile
ADCSRA |= (1<<ADSC); //nach Aktivierung des ADC wird
ein "Dummy-Readout" empfohlen, man liest also einen Wert und verwirft
diesen, um den ADC "warmlaufen zu lassen"
while(ADCSRA & (1<<ADSC)) {} //auf Abschluss der
Konvertierung warten
wert = ADCW; //ADCW muss einmal gelesen werden,
sonst wird Ergebnis der nächsten Wandlung nicht übernommen.
/* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden
Wandlungen */
wert = 0;
for(uint8_t i=0; i<4; i++)
{
ADCSRA |= (1<<ADSC); //eine Wandlung "single conversion"
starten
while(ADCSRA & (1<<ADSC)) {} //auf Abschluss der Konvertierung
warten
wert = wert + ADCW; //Wandlungsergebnisse aufaddieren
}
ADCSRA &= ~(1<<ADEN); //ADC deaktivieren
wert = wert/4; //Durchschnittswert bilden
return wert;
}
the adcvalue call works fine with
analog=adcwert(i); //Messung Analogport [i]
utoa(analog, wort, 10); sendUSART(wort);sendUSART("\r\n");
//Ausgabe:"[Analogwert] = "
but my call
sendUSART(ntctable[adcwert(i)]);
directing to the table doesnt show any result at all and i currently
dont know whats wrong with it.
Anybody who can help me out ?