Funktion : Timer_T1GetPM Kategorie: Programmierung C (von Wojtek - 26.09.2005 21:39) | ||
| ||
Hi ! versuche mit SMT160-30 Temperatur zu messen. Daführ Test Programm: word PM_WERT; // globale Variablendeklaration word PT_WERT; char temp_txt[10]; //------------------------------------------------------------------------------ // Messungen // void Timer1_ISR(void) { int irqcnt; PM_WERT=Timer_T1GetPM(0); // Pulsweite messen irqcnt=Irq_GetCount(INT_TIM1CAPT); // Interrupt Request Counter } void Timer2_ISR(void) { int irqcnt; PT_WERT=Timer_T1GetPM(1); // Periode messen irqcnt=Irq_GetCount(INT_TIM1CAPT); // Interrupt Request Counter } //------------------------------------------------------------------------------ // Hauptprogramm // void main(void) { byte n; word i; float temp; // Timer_T0PWM(32,PS_256); // Pulsgenerator // Puls=4,34 µs*32= 139 µs // Periode=4,34 µs*256= 1111 µs while (1) { Irq_SetVect(INT_TIM1CAPT,Timer1_ISR); // Interrupt Service Routine def. PM_WERT=0; Timer_T1PM(PS_1); // Messung initialisieren und starten while (PM_WERT==0); // Pulsbreite messen Irq_SetVect(INT_TIM1CAPT,Timer2_ISR); // Interrupt Service Routine def. Timer_T1PM(PS_1); // Messung initialisieren und starten PT_WERT=0; while (PT_WERT==0); // Periode messen Msg_WriteHex(n); // Werte ausgeben Msg_WriteChar(SPACE); Str_WriteWord(PM_WERT,10,temp_txt,0,8); Msg_WriteText(temp_txt); Msg_WriteChar(SPACE); Str_WriteWord(PT_WERT,10,temp_txt,0,8); Msg_WriteText(temp_txt); Msg_WriteChar(SPACE); temp = (PM_WERT * 1.0) / (PT_WERT * 1.0); temp=(temp - 0.320)/0.00470; Str_WriteFloat(temp,10,temp_txt,0); Msg_WriteText(temp_txt); Msg_WriteChar(CR); for (i=0;i<10000;i++); // Delay 500ms n++; } } aber die Ergebnise kan ich mir kaum erkleren: 00D6 00006723 00004547 246.50152 ????? 00D7 00002147 00004555 32.20216 OK 00D8 00002165 00004559 32.95421 OK 00D9 00002163 00004556 32.92734 OK 00DA 00002161 00004555 32.85611 OK 00DB 00006721 00004561 245.44259 ????? 00DC 00002157 00004552 32.73567 OK 00DD 00002154 00004554 32.55123 OK und ab etwa 40 Grad kommt nur : 00A8 00006655 00004449 250.17910 00AA 00006668 00004467 249.51586 00AC 00006583 00004430 248.08605 00AD 00006627 00004441 249.41094 00AE 00006633 00004395 253.02447 ????????????????????????????????????????????????????? | ||
Antwort schreiben Antworten: Re: Funktion : Timer_T1GetPM (von Peter S - 5.10.2005 22:41) Re: Funktion : Timer_T1GetPM (von Wojtek - 11.10.2005 15:26) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum