Forum: Mikrocontroller und Digitale Elektronik PWM --> Frage zum Programm


von Samy (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend

Das wird jetzt ein schwieriges Anliegen. Kurze Vorgeschichte à habe vor
geraumer Zeit ein Programm geschrieben, dass auf 8 Kanälen PWM erzeugen
soll (Lüftersteuerung für AVR8515).
Mit Hilfe dieses Forums und div. Codevorlagen hat es dann
funktioniert.


Gut jetzt (halbes Jahr später) wollte ich es umschreiben auf den Atmega
16 à gut geht dank diesem Forum à  da ist mir jetzt aber leider ein
Codebereich ins Auge gefallen, den ich nicht mehr verstehe!!!!

TIMER0_OVF:

in sregtemp, sreg           ;SREG sichern
inc pwz                          ;PWMzähler erhöhen
cpi pwz, pwu                ;PWM-Zählumfang erreicht
brne TIMER0_1
clr pwz

TIMER0_1:

;PWM ausgeben
reti

Als erstes à teilweise geklaut bei Mr. Peter Dannegger à laut meinen
Unterlagen!!!

Bezogen auf den Anhang!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


SREG sichern lassen wir mal weg!
Der AVR schaut jetzt à PWM Zählumfang erreicht à nein à PWM-Schleife
ausführen usw.
PWM Zählumfang erreicht à ja à auf null setzen à PWM-Schleife
ausführen.

Das macht keinen Sinn!!
Wenn er sagen würde PMW Zählumfang erreicht à nein à Sprung sonst wo
hin und PWM-Schleife nicht ausführen à PWM Zählumfang erreicht à ja à
PWM ausführen ..

Das macht Sinn, da die PWM Frequenz beeinflusst werden kann.

Ich verstehe diesen Code nicht mehr!! Da dieser Code hier im Forum bei
div. Fragen einfach übernommen wurde kommt mir die Frage à ist der Code
i.O. und ich versteh es einfach nicht, oder sonst was.

Bin euch echt dankbar für Hilfe à dieser Codebereich sollte eigentlich
schon lange funktionieren, dass ich andere Sachen machen kann!

Echt Danke an alle für Hilfe!!

von Andi K. (Gast)


Lesenswert?

Das ist völlig in Ordnung.
Mittels des PWM-Zählers (PWZ) wird ja immer in Verbindung mit den
Registern Solln (Soll0, Soll1...Soll7) verglichhen, ob einer der Kanäle
an- oder ausgeschaltet werden muß.
Wenn eine PWM-Periode zu ende ist, was von PWU bestimmt wird, beginnt
die PWM-Periode von vorne.
Die eigentliche PWM-Funktion fehlt ja in Deinem Programm völlig.
Ich denke mal, Du hast das damals auch noch nicht verstanden, vom
Algorythmus her.

MfG
Andi

von Samy (Gast)


Lesenswert?

Guten Abend

Als erstes mal Danke für die Antwort.

Sorry für die Frage --> die Antwort gelesen --> auf meinen Code
geschaut --> und sofort ist der Groschen gefallen(wie ein
Vorschlaghammer).

"Ich denke mal, Du hast das damals auch noch nicht verstanden, vom
Algorythmus her."

Nicht ganz --> einfach Code abschreiben und gut --> ne das ist nett
mein Ding.
War gestern wohl etwas vernebelt im Hirn.

Danke nochmal!!

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.