www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM Signal einlesen


Autor: Axel Leibold (axelleibold)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Linker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.