Also gut. Der Begriff PWM (Pulsweitenmodulation) sollte dir in diesem Zusammenhang vielleicht ein Begriff sein. Ansonsten klick einfach mal drauf, dann landest du im entsprechendem Wiki Beitrag.

Die Problematik bei einer Software PWM ist die, das ich mich effektiv selbst um das kümmern muss, was mir sonst die Hardware abnimmt.

Praktisch zähle ich in einer Timer Interuptroutine eine Variable hoch und vergleiche diese mit den entsprechenden Werten für die einzelnen Kanäle.

Nimmt man einmal an, das der Mikrocontroller mit 16 MHz läuft, ich eine PWM mit einer Auflösung von 8 Bit haben möchte welche 500 mal je Sekunde Refresht wird, dann habe ich in etwa die folgenden Eckdaten:

Fosz = 16.000.000 Hz
Fpwm = 500 Hz
Aufl. = 256

Zeit zum Refresh der 16 Kanäle: 16000000 Hz / (500 Hz * 256) = 125 Takte

Wenn man nun bedenkt, das der µC nebenbei noch ein paar andere Dinge erledingen soll (z.B. Komunikation über die USART oder Tastenabfrage ... what ever ) kann man davon ausgehen, das man nicht mehr als die Hälfte der 125 Takte dafür verwenden sollte (bleiben rund 62 Takte) . Bedenkt man weiterhin, das auch der Sprung in die ISR, sowie die Sicherung des Statusregisters ein paar Takte frisst bleiben vielleicht 45 Takte übrig.

Würde die ganze Sache nun mehr als die besagten 125 Takte benötigen würde dieses den µC mehr oder weniger komplett blockieren.
(der µC kommt dann aus der Interupt Routine heraus, führt einen weiteren Befehl aus und landet wieder in der Interupt Routine ...)

Das ist das was ich in diesem Zusammenhang als zeitkritisch bezeichne.
Bascom sichert übrigens (per default) sämtliche Register (ob nun nötig oder nicht ...) und das SREG damit braucht diese Programmiersprache nur dafür das es mal eben in einer Interuptroutine ist schon alleine so um die 130 Takte.
Wie genau sich das bei C verhält ist mir nicht bekannt.

Der Vorteil an Assembler ist im Übrigen, das nur du bestimmst, wo sich welche Daten befinden ... also z.B. in Registern oder im RAM

So, ich hoffe nun einmal, das es das war was du nun wissen wolltest, wenn nicht schrei einfach

Grüße,

da Hanni.