Forum: Compiler & IDEs 16bit Variable auf 2 Ports aufsplitten


von Julien M. (ljminti)


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

von Thomas Müller (Gast)


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

von Julien M. (ljminti)


Lesenswert?

Ja genau so war des gedacht:)
Danke funktioniert gut!

Gruß Julien

von Max (Gast)


Lesenswert?

Das ist ja interessant,

Bei meinem Projekt benötige ich eine 32bit Soft-PWM auf 4 Ports.
Kann ich das auch irgendwie lösen?
Oder geht da der µC in die Knie?

gruß

von Karl H. (kbuchegg)


Lesenswert?

Sicher kannst Du das loesen.
Alles eine Frage welche PWM Frequenz du brauchst
und mit welcher Taktfrequenz der AVR läuft.

von Max (Gast)


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?

von Karl H. (kbuchegg)


Lesenswert?

100 Hz PWM ?
Probiers einfach aus. Wenn du fuer ne SoftPWM den
Takt soweit runter teilst, dass du eine 100 Hz PWM
kriegst, hat dein AVR genug Zeit um in der Zwischenzeit
ne Menge teuflisch schwierige quadratische Gleichungen
zu loesen :-)

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.