PWM Signal einlesen

OP #1059215
Guten Abend und noch ein Problem

wie schon gesagt würde ich gern ein PWM Signal einlesen mit meinem 
Atmega 32.

ich hatte mir so ein kleines Programm zusammengestellt, was vielleicht 
nicht die beste  Lösung ist aber naja.

ich wollte nur mal Fragen ob das so rein theoretisch funktionieren 
könnte, weil es praktisch noch nicht so richtig läuft. ( beim 
compilieren werden keine Fehler angezeigt.


#include <avr/io.h>
#include <util/delay.h>

#define PWM PINA0
#define f 16.2

unsigned char zaehler1 = 0;
unsigned char zaehler2 = 0;
float ergebnis;
float T;
float high;

int main (void)

{
                  //auf eingang schalten

PORTA=0x00;
DDRA=0x00;            /* PIN PB0 auf Eingang (Taster)            */


while(1){

zaehler1=0;             //zaehler auf null setzten
zaehler2=0;

while(PWM==1)
{
};                               //warten bis eine 0 kommt
                                     //und eine neue messung losgeht
while(PWM==0)                         //warten bis eine 1 kommt
{
zaehler1 ++;                           //zahler alle 2 hochsetzen
_delay_us(2);
};

while(PWM==1 )                         //warten bis eine 0 kommmt
{
zaehler2 ++;
_delay_us(2);
}
ergebnis=(zaehler1/zaehler2);
T=1/f;                                 // T = Periode
high=T/ergebnis;                      // high = Dauer des HIGH Signals

_delay_ms(20);
}



Ich danke für jede Hilfe.
Gast #1059225
Die erste while ist schon mal nichts. Wenn du auf 0 warten willst, aber
schon 0 hast geht er gleich weiter. Stört aber nicht, da die schleife
sowieso wegoptimiert wird (kein befehl in der Schleife).

T kann oben als #define gerechnet werden.

Genauigkeit ist so nur mangelhaft, such mal nach Timer und 
Frequenzmessung.

Es wäre hilfreich wenn in der Frage z.B. das Signal erklärt wird,
also Frequenz der PWM, und der einsatzfall.

gruß hans

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.