16bit Variable auf 2 Ports aufsplitten

OP #363500
Lesenswert?

Momentan möchte ich eine Soft-PWM erzeugen.
Mit 8bit funktioniert das wunderbar. Innerhalb des Timer overflow ISR
habe ich eine schleife, um zu testen ob die einzelnen Bits eines Ports
gesetzt werden oder nicht. Anschließend wird dann ja auch die Variable
an den Port übergeben. Wenn ich allerdings das ganze auf 16 Kanäle
erweitern möchte könnte ich ja 2 schleifen a 8bit verwenden. Allerdings
erscheit das mir nicht sehr vorteilhaft.
Gibt es möglichkeiten das ganze in einer 16bit variablen auszuwerten
und  dann dies irgendwie auf 2 oder mehr ports aufzusplitten?
Ist sicher auch für die Prozessorauslastung besser.

Andere Alternativen sind natürlich auch gerne willkommen :)

Gruß Julien
Gast #363501
Lesenswert?

Quelltext?

Wenn ich dich richtig verstehe, hast eine Variable mit 16Bit-Breite und
willst die auf 2 Ports verteilen.

->würde ich auf die Schnelle so machen
int pwm-output;
PORTA = pwm-output;           //ersten 8 Bits
PORTB = pwm-output >> 8)      //oberen 8 Bit nach rechts verschoben

Anonsten bitte nochmal das Problem näher beschreiben.

Grüße
Gast #363505
Lesenswert?

Benötige PWM-Frequenz: ca. 100Hz
Verwende einen AVR mit 16MHz

Ist es da vorteilhaft des über eine 32bit variable zu lösen und dann
wie schon gesagt, die Bits immer weiter zu schieben?

Oder gibts da noch ne bessere, evtl. auch schnellere Lösung?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren