PWM Sam7s Invertieren

Gast #2020552
Lesenswert?
• ▲
▼
Hallo,

habe auf meinen sam7s-ek eine PWM auf drei Kanälen am laufen. Jetzt 
brauche ich noch drei weitere Kanäle, wobei jedweils nur immer das 
invertierte Signal auf jeweils einem Pin ausgegeben werden soll. Gibt es 
da eine einfache Möglichkeit, da ja nur 4 Kanäle zur Verfügung stehen?
Gast #2020589
Lesenswert?
• ▲
▼
Also ich benutze bei allen drei Signalen bisher den selben PWM - Timer. 
SO das alle die selbe Periodenlänge haben. Später soll halt nur jeweils 
der Duty Cycle unterschiedlich sein. Kann ich denn jeden Ausgang als PWM 
Ausgang definieren und wenn ja wie?
#2020617
Lesenswert?
• ▲
▼
>bisher den selben PWM - Timer
was meinst du damit????

Jeder PWM-Channel hat seinen eigenen Clk und muss selbst eingestellt 
werden!
siehe PWM Channel Mode Register (Register Name: PWM_CMR[0..X-1])!

Für den PWM-Pins stehen Ports wie: PWM0 -> PWM3 (Peripheral B, 
PA11-PA14)
als Beispiel.

Für die Timer-Pins stehen die Ports wie: TIOA0 -> TIOA2 (TIOBx)

Stephan
Gast #2020634
Lesenswert?
• ▲
▼
Ja, also die PWM-Channels wurden auch jeweils eigenständig eingestellt 
und haben alle einen eigenen Timer, so wie es im Beispiel vom Atmel

    PWMC_ConfigureChannel(CHANNEL_PWM_LED0, AT91C_PWMC_CPRE_MCKA, 
AT91C_PWMC_CALG, 0);
    PWMC_SetPeriod(CHANNEL_PWM_LED0, MAX_DUTY_CYCLE);
    PWMC_SetDutyCycle(CHANNEL_PWM_LED0, MAX_DUTY_CYCLE/2);

Dieses jeweils für drei Kanäle. Und dann jeder Kanel aktiviert.

PWMC_EnableChannel(CHANNEL_PWM_LED0);

So habe ich an drei Pins meine PWM, wobei ich jetzt einfach die selben 
Signale noch einmal nur Invertiert benötige.
#2020695
Lesenswert?
• ▲
▼
>haben alle einen eigenen Timer
gut, jetzt reden wir von den gleichen Dingen.

Da du nur 4 HW-PWM Channels hast, kannst du nur diese benutzen.
Aber: Die HW-Timer selber können auch als PWM Generator genutzt werden.

siehe DB, Kapitel 33 Timer Counter:
1
The Timer Counter (TC) includes three identical 16-bit Timer Counter channels.
2
Each channel can be independently programmed to perform a wide range of functions including
3
frequency measurement, event counting, interval measurement, pulse generation, delay timing
4
and pulse width modulation.

vielleicht würde das für dich gehen.

Stephan
Gast #2021089
Lesenswert?
• ▲
▼
Das ist ja ziemlich umständlich, da ich ja eigentlich nur das 
invertierte Signal jedes Channels benötige. Vor allen dann wenn ich 
später mit interrupts arbeite und den duty cycle ständig ändere! Gibt es 
da nich doch eine andere einfachere Möglichkeit?

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.