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

Re: Timer mit 100µs Kategorie: Programmierung C (von PeterS - 8.07.2006 12:39)
Als Antwort auf Timer mit 100µs von Klaus B. - 3.07.2006 15:19
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128
Hi,

ich konnte mich wegen Urlaubs nicht um das Forum kümmern, deshalb verspätet:

Pack das "Port_WriteBit(1,1);  // Port 50 setzen" doch direkt in die ISR:

void Timer3_ISR(void)
{
     Port_WriteBit(1,1);  // Port 50 setzen  
      irq_GetCount(INT_TIM3COMPA);    
 }

das sollte min doppelt so schnell gehen wie die vorherige Methode. Wenn man den Wert von "irqcnt"
nicht braucht, kann man sich die Zuweisung auch sparen.

Man kann in einer Interruptroutine alles machen.

Gruss Peter

> Hallo,
> 2 Ports sollen nacheinander eingeschaltet werden (Differenzzeit).
> Die Zeit dazwischen 100µs, die Auszeit ist unkritisch.
> Bei 300µs ist Schlu�, kürzer geht offentsichtlich nicht. (Interpreter zu langsam?)
>
> Lä�t sich das Problem überhaupt lösen?
>
> GruÃ? Klaus
>
> void main(void)  
> {
> Port_DataDirBit(0,1);                   //Port PA.0 auf Ausgang
> Port_DataDirBit(1,1);                   //Port PA.1 auf Ausgang
> Port_WriteBit(0,0);                      //Ausgang PA.0 wird zurückgesetzt
> Port_WriteBit(1,0);
> Irq_SetVect(INT_TIM3COMPA,Timer3_ISR);
>
> while (true)
>     {
>           Timer_T3Time(30,PS_64);          // Differenzzeit 30 x 4,34µs
>            Port_WriteBit(0,1);                   // Port 51 setzen
>            busy=1;
>            while (busy==1);                      // warten auf IRQ
>            Port_WriteBit(1,1);                   // Port 50 setzen
>            Timer_T3Time(50,PS_64);        // Aus-Zeit  festlegen und Timer1 starten
>            busy=1;
>            while (busy==1);
>            Port_WriteBit(0,0);                   // Port 50 zurücksetzen
>            Port_WriteBit(1,0);                   // Port 51 zurücksetzen
>     }
>  }
>  
>  void Timer3_ISR(void)
>  {
>      int irqcnt;
>      busy=0;
>      irqcnt=Irq_GetCount(INT_TIM3COMPA);    
>  }


    Antwort schreiben


Antworten:

Re: Timer mit 100µs (von PeterS - 8.07.2006 13:06)
    Re: Timer mit 100µs (von Klaus B. - 10.07.2006 10:08)
        Re: Timer mit 100µs (von PeterS - 10.07.2006 10:39)
            Re: Timer mit 100µs (von Klaus B. - 10.07.2006 16:03)
                Re: Timer mit 100µs (von PeterS - 10.07.2006 17:53)
                    Re: Timer mit 100µs (von Klaus B. - 11.07.2006 7:43)
                       Re: Timer mit 100µs (von Klaus B. - 13.07.2006 6:44)