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 > Hallo, > bin ein neuling bei der ccontrol pro, > > habe nach dem Puls und Periodenmessdemoprogramm einen UTI Baustein am den IC von Timer3 gehängt. > es hat nicht funktioniert. > Habe zum Testen wieder Timer1 Frequenzgenerator und Timer3 Pulsmssung zusammengehängt und einige > Teile vom UTI Programm belassen. > > // Dieses Demo Programm ist nur für Mega128 > #ifdef MEGA32 > #pragma Error " Timer3 nur für Mega128 " > #endif > > // Deklaration der Formatierungsvariablen > #define SPACE 0x20 > #define CR 13 > #define PORT_UTI 2 // Port C > #define PORTDIR_UTI 0x07 // UTI1=PortC.0, UTI2=PortC.1, UTI3=PortC.2 > > int n, m; > word PM_Wert, T_OFF1, T_OFF2, T_REF, T_X0, T_X1, T_X2; // globale Variablen > char str[20]; > > //------------------------------------------------------------------------------ > // Messung > // > void Timer3_ISR(void) > { > PM_Wert=Timer_T3GetPM(); // Messwert auslesen > n++; > Irq_GetCount(INT_TIM3CAPT); // Interrupt zurücksetzen > } > > //------------------------------------------------------------------------------ > // Hauptprogramm > // > void main(void) > { > n=0; m=0; PM_Wert=0; > Irq_SetVect(INT_TIM3CAPT,Timer3_ISR);// Interrupt Service Routine definieren > > Timer_T1PWM(256,72,PS_1024); // Pulsgenerator > // Puls=69,4 µs*72= 5 ms > // Periode=69,4 µs*256= 17,7ms > Port_DataDir(PORT_UTI,PORTDIR_UTI); > Timer_T3PM(0,PS_64); // Pulsmessung initialisieren und starten > Port_Write(PORT_UTI,0x01); > // die Messung beginnt hier > // Timer Output verbinden mit ICP (input capture pin) Timer1 > while (1) > { > label1: > switch(n) > { > case 1: > T_OFF1=PM_Wert; > break; > case 2: > T_OFF2=PM_Wert; > break; > case 3: > T_REF=PM_Wert; > break; > case 4: > T_X0=PM_Wert; > break; > case 5: > T_X1=PM_Wert; > break; > case 6: > T_X2=PM_Wert; > break; > } > Msg_WriteText("TOFF1"); > Msg_WriteWord(T_OFF1); > Msg_WriteChar(SPACE); > Msg_WriteText("PM"); > Msg_WriteWord(PM_Wert); // Wert ausgeben > Msg_WriteChar(SPACE); > Msg_WriteInt(n); > if (n!=6) goto label1; // fürs testen > Msg_WriteWord(PM_Wert); // Wert ausgeben > Msg_WriteChar(SPACE); > Msg_WriteInt(m); > Msg_WriteChar(SPACE); > Msg_WriteInt(n); > Msg_WriteChar(SPACE); > Msg_WriteWord(T_OFF1); > Msg_WriteChar(SPACE); > Msg_WriteWord(T_OFF2); > Msg_WriteChar(SPACE); > Msg_WriteWord(T_REF); > Msg_WriteChar(SPACE); > Msg_WriteWord(T_X0); > Msg_WriteChar(SPACE); > Msg_WriteWord(T_X1); > Msg_WriteChar(SPACE); > Msg_WriteWord(T_X2); > Msg_WriteChar(SPACE); > Msg_WriteChar(CR); > > AbsDelay(500); // Delay 500ms > n=0; > } > } > > > hier nun die Ausgabe: > Interpreter gestartet - 4kb RAM > TOFF10 PM0 0PM0 0TOFF10 PM0 0TOFF10 PM0 0TOFF10 PM0 0TOFF10 PM0 1TOFF10 PM0 1TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 > 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 PM1152 2TOFF10 > > Anscheinend kommt das Programm nur 2mal in die interruptoutine und die Werte werden an T_OFF1 > auch nicht übergeben. > Habe die caseabfrage auch in der interruptroutine gehabt, hat auch nicht gfunkt. > wenn berechnungen eingebaut werden z. B.: PM_WERT=PM_Wert*4.64 kommt null raus. > > Vielleicht kann mir jemand weiterhelfen? > > Gruß > Josef