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 > DANKE ! > hilft aber nicht viel weiter :( > wan solte die neue Softwareversion erscheinen ? > > Gruss Wojtek > > > > > Hallo, > > > > wir haben etwas Zeit gebraucht, aber wir haben herausgefunden, das bei kleinen Zeiträumen > > manchmal der Interpreter Interrupt zu langsam war. WIr haben in der neuen Softwareversion > > jetzt die Logik mit in den Atmel Interrupt Routine eingebaut. Zeiträume >=10 µs sollten jetzt > > ohne Probleme messbar sein. > > > > > > Gruss Peter > > > > > 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 > > > ????????????????????????????????????????????????????? > > >