Software PWM meckert

  • Hallo Leute,
    Ich habe heute Abend mal versucht mir eine SW PWM zu programmieren.


    Hier erst mal der Code:


    Die Werte für die Funktion werden nicht mehr benutzt. Wenn ich die Funktion pwm1 aufrufe, funktioniert die PWM einwandfrei. Das gleiche passiert wenn ich die Funktion pwm2 aufrufe. Aber wenn ich beide wie im Programm aufrufe, dann leuchten die LEDs nicht wie gewollt mit ihren jeweiligen Werten, sondern fast gleich hell.


    Habt Ihr irgendwelche Lösungsvorschläge?


    Gruß Frank

  • Hiho
    // falsch!
    was mir aufgefallen ist, du rufst die beiden Funktionen nacheinander auf:
    --> pwm1 wird abgearbeitet, pwm2 wird abgearbeitet
    ---> pwm1 macht was sie soll, bleibt dann stehen, jetzt wird pwm2 aktiv und macht was sie machen soll. Sobald pwm1 wieder startet macht pwm2 pause usw. das ganze in ziemlich hoher Geschwindigkeit, was für sich wieder eine art PWM ergibt
    Sieht dann praktisch so aus:
    pwm1: (____-----)__________(___------)__________(____-------)
    pwm2; _________(_____-----)_________(_____------)_________


    Wie man sehen kann hast du dann auf beiden Signalen nur noch deutlich weniger ON Zeit... Die Klammern sollen andeuten in welchem Bereich du gerade bist...

  • Hmm, ich kann zwar kein C aber ich sehe nicht wie du da irgendwo nen Timer startest oder abfragst und weiss auch nicht warum du die Delay eingebunden hast.
    In Basic sieht das so aus:

  • Das ganze scheint ja auch nicht über einen Timer zu laufen was schonmal schlecht ist. Sowie es aussieht schaltet das Programm in der endlosschleife die Ports immer 255 mal an und dann wieder 255 mal aus. Also irgendwie eine Seltsame Software PWM