www.mikrocontroller.net

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


Autor: Julien M. (ljminti)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Julien M. (ljminti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja genau so war des gedacht:)
Danke funktioniert gut!

Gruß Julien

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.