Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > 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 > ?????????????????????????????????????????????????????