Forum: Mikrocontroller und Digitale Elektronik PWM Sam7s Invertieren


von mikronoob (Gast)


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?

von Stephan W. (sir_wedeck)


Lesenswert?

Hi,
wie wäre es mit den Timern? Wenn noch welche frei sind....

Wenn ich mich noch richtig erinnere kannst du mit einen Timer, ein Pos. 
und ein Neg. Signal erzeugen und hättest noch 3x 2 Outputs.

Stephan

von mikronoob (Gast)


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?

von Stephan W. (sir_wedeck)


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

von mikronoob (Gast)


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.

von Stephan W. (sir_wedeck)


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

von mikronoob (Gast)


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?

von mikronoob (Gast)


Lesenswert?

Hat den keiner noch einen Tipp für mich?

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.