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

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