www.mikrocontroller.net

Forum: Compiler & IDEs Software-PWM


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

warum liefert das folgende Programm Vcc/2 am Ausgang, obwohl das
Tastverhältnis Vcc/3 liefern sollte?

#include <avr/io.h>

void delay_us (unsigned short us);

void delay_us(unsigned short us) {
     while ( us ) us--;
}

int main (void) {

  unsigned char t_ein = 100;       //liefert 2,6V am Ausgang
  unsigned char t_aus = 50;
  unsigned char x = 0;

  outp (0xFF, DDRB);

  for (;;) {

    while (x<t_ein) {
      outp(0x00, PORTB);
      delay_us (100);
      x++;
    }
    x = 0;
    while (x<t_aus) {
      outp(0xFF, PORTB);
      delay_us (100);
      x++;
    }
  }
}

Autor: Volker Kattoll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich dein Prg so sehe, würde ich sagen du hast ein am Ausgang ein
Tastverhältnis von 2/1.

Womit hast du die Spannung gemessen? Mit normalen Voltmeter?
Kontrolliere deine erzeugten Impulse mit einem Oszi.
Dort solltest du das Taktverhältnis sehen.
Ich bin mir nicht sicher, aber ich glaube ein Voltmeter verfälscht die
Ergebnisse gewaltig, wenn die Messspannung nicht konstant und
sinusförmig ist, daher könntest du zu falschen Messergebnissen kommen.

Autor: Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Schleife hat x schon den Wert t_aus, den es bis t_ein hochzählt.
Ausnahme: beim 1. Durchlauf ist x = 0.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank für die Resonanz. Der Fehler lag darin, dass ich x nach der
zweiten while-Schleife nicht wieder auf 0 gesetzt habe. Jetzt liefert
das Multimeter (sponsored by ALDI --> für den Anfang reicht es ;-)
allerdings 1,7V bei DC und 3,4V bei ner AC Messung?! Letzteres käme ja
dem gewünschten Ergebnis nahe. Ich werde mir jetzt mal nen Tiefpass
basteln und schauen, ob ich auch 3,4 Volt Gleichspannung raus bekomme.

Schönen 2. Advent noch,

Alex

Autor: Volker Kattoll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, Rainer hat natuerlich Recht.

Erst Kopf einschalten, dann antworten!

Volker

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.