Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Funktion : Timer_T1GetPM Kategorie: Programmierung C (von Wojtek - 11.10.2005 15:26)
Als Antwort auf Re: Funktion : Timer_T1GetPM von Peter S - 5.10.2005 22:41
Ich nutze:
C-Control Pro Mega32, CC-Pro 32 Application Board
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  
> > ?????????????????????????????????????????????????????
> >


    Antwort schreiben


Antworten: