Forum: Compiler & IDEs pwm einlesen und genau bestimmen


von mex (Gast)


Lesenswert?

hallo zusammen

auf einem atmega48 lese ich ein pwm signal ein. timer1 läuft mit cpu 
clock 20mhz und ich verwende folgende sequenz. dabei setze ich den timer 
auf null, starte ihn, bei der ersten wechselnden flanke lese ich ihn aus 
- ohne zu stoppen - und bei der zweiten flanke stoppe ich und lese aus. 
die abweichungen  sind eigentlich minim. trotzdem würde ich gerne wissen 
ob dieses vorgehen korrekt ist oder ob es noch bessere varianten gibt.

vielen dank


      TCNT1H = 0;      // order important
      TCNT1L = 0;
      while ( READ_PIN( TEMP_IN ) )
        ;
      while ( !READ_PIN( TEMP_IN ) )
        ;
      TCCR1B = ( 0 << CS12 | 0 << CS11 ) | ( 1 << CS10 );  // prescale 
and start timer
      while ( READ_PIN( TEMP_IN ) )
        ;

      t1l = TCNT1L;    // order important
      t1h = TCNT1H;

      while ( !READ_PIN( TEMP_IN ) )
        ;

      TCCR1B = 0;      // stop timer

      t2l = TCNT1L;    // order important
      t2h = TCNT1H;

von Εrnst B. (ernst)


Lesenswert?

Du könntest das Timing auch mit dem InputCapture modul messen. Könnte 
noch etwas genauer werden, und braucht weniger Rechenzeit.


Oder: RC an das PWM signal und mit dem AD-Wandler einlesen?

/Ernst

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.