Anbei mal ein Lauflicht mit PWM aufm AT89C2051
1 | if( --pwm[0] == 0 )
|
2 | PWM0 = 0;
|
wird aufm 8051 compiliert in die DJNZ-Instruktion, welche nichtmal
Flags verändert.
Dadurch ist der Software-PWM Interrupt sehr schnell.
Aufm AVR ist das dann umständlicher, aber das sollte er durch mehr MIPS
wieder kompensieren können (notfalls Interrupt in Assembler).
Schwerer wirds aber, wenn daneben noch andere Sachen gemacht werden
sollen.
Aufm 8051 gibt man einfach dem PWM-Interrupt die hohe Priorität und gut
is. Dann können andere Interrupts ruhig langsamer sein, ohne die PWM zu
stören.
Aufm AVR wirds dagegen haarig (Priorität in Software nachbilden).
Peter