AVR: PWM "takten"

OP (Firma: Brainit GmbH) #3205046
Lesenswert?

Hallo zusammen,

ich werd grad aus dem Datenblatt des ATmega328P nicht ganz schlau, und 
hoffe auf eure Hilfe: mit einem Timer im PWM-Modus und dem Output 
Compare Ausgängen möchte ich ein Rechtecksignal (~400 Hz) erzeugen, 
soweit kein Problem, schon tausendmal gemacht. Nun soll dieses Signal 
selbst ein- und ausgeschaltet werden (mit ca. 1 Hz), im eingeschalteten 
Zustand sollen die 400Hz am Pin anliegen, im ausgeschalteten Zustand 
soll der Pin hochohmig sein.

Idealerweise soll beim Umschalten der Timer nicht angefasst werden, 
sondern einfach weiterlaufen.

Reicht es dafür, einfach den Pin per DDR von Aus- auf Eingang 
umzuschalten?


Danke, Michi
#3205213
Lesenswert?

Wenn der PIN kein OUTPUT mehr ist, laueft die PWM zwar weiter - wird 
aber nicht mehr nach aussen gelegt.
Da bin ich mir eigentlich ziemlich sicher.
(Habe frueher immer vergessen PORTs auf Ausgang zu schalten und mich 
dann immer gefragt warum nichts passiert. Schmerzlernen also!)

Im Zweifel teste es doch einfach mal...

MfG
Gast #3205236
Lesenswert?

Stephan B. schrieb:
> Wenn der PIN kein OUTPUT mehr ist, laueft die PWM zwar weiter - wird
> aber nicht mehr nach aussen gelegt.
> Da bin ich mir eigentlich ziemlich sicher.

Der dürfte dann die PWM immer noch über den internen Pullup treiben, d.h 
da geht schon noch was raus, wenn auch nur mit geringer Leistung. Ob die 
nachfolgende Stufe das dann verwertet, kommt sehr auf deren 
Eingangsempfindlichkeit an.

Falk hat bereits die korrekte Vorgehensweise beschrieben.
#3205238
Lesenswert?

"The COMnA1:0, COMnB1:0, and COMnC1:0 control the Output Compare pins 
(OCnA,
OCnB, and OCnC respectively) behavior. If one or both of the COMnA1:0 
bits are writtento one, the OCnA output overrides the normal port 
functionality of the I/O pin it is connected to. If one or both of the 
COMnB1:0 bits are written to one, the OCnB output overrides the normal 
port functionality of the I/O pin it is connected to. If one or both of 
the COMnC1:0 bits are written to one, the OCnC output overrides the 
normal port functionality
of the I/O pin it is connected to. However, note that the Data Direction 
Register (DDR) bit corresponding to the OCnA, OCnB or OCnC pin must be 
set in order to enable the output driver."

Ok, dann reicht wohl wirklich, DDRx zu ändern, wenn man nur auf Tristate 
umschalten will.
#3205242
Lesenswert?

@MWS (Gast)

>> Wenn der PIN kein OUTPUT mehr ist, laueft die PWM zwar weiter - wird
>> aber nicht mehr nach aussen gelegt.
>> Da bin ich mir eigentlich ziemlich sicher.

>Der dürfte dann die PWM immer noch über den internen Pullup treiben,

Theoretisch möglich, praktish eher unwahrscheinlich. Muss man mal 
prüfen.
Gast #3205252
Lesenswert?

Hi
>>Der dürfte dann die PWM immer noch über den internen Pullup treiben,

>Theoretisch möglich, praktish eher unwahrscheinlich. Muss man mal
>prüfen.

Unter den 'Alternate Functions of Port B' Steht auch z.B.:

OC1A, Output Compare Match output: The PB1 pin can serve as an external 
output for the
Timer/Counter1 Compare Match A. The PB1 pin has to be configured as an 
output (DDB1 set (one)) to serve this function. The OC1A pin is also the 
output pin for the PWM mode timer
function.

MfG Spess
Gast #3205280
Lesenswert?

Spess53 schrieb:
> Unter den 'Alternate Functions of Port B' Steht auch z.B.:
>
> Timer/Counter1 Compare Match A. The PB1 pin has to be configured as an
> output (DDB1 set (one)) to serve this function.

Ja, richtig, der Pullup ist unabhängig davon, er kann bei OCnx = Eingang 
umgeschaltet werden.

Zusätzlich steht's auch noch bei der Timer-Beschreibung:
> The Data Direction Register bit for the OC1x pin (DDR_OC1x) must be set
> as output before the OC1x value is visible on the pin.
Gast #3205337
Lesenswert?

Michael Reinelt schrieb:

> Reicht es dafür, einfach den Pin per DDR von Aus- auf Eingang
> umzuschalten?

Ja.

Allerdings (daher rührt wohl auch zumindest ein Teil der gegenteiligen 
Meinungen, diese Leute haben wohl das Problem einfach nicht erkannt): 
Der Pin wird dadurch wirklich nur hochohmig.

Das ist unkritisch, wenn ein Stromverbraucher an den Pin angeschlossen 
ist, etwa eine LED oder ein bipolarer Transistor. Da kommt kein Strom 
mehr, also Ende der Geschichte.

Wenn aber als Treiber ein FET angeschlossen ist und im Moment des 
Hochohmig-Schaltens dieser FET angesteuert war, dann BLEIBT er erstmal 
angesteuert. Das Signal behält nämlich sein Potential, weil an beiden 
Enden jetzt was hochohmiges ist. Und das tut es für seeehr lange Zeit.

Ist der FET z.B. das Schaltglied eines DC-Wandlers, führt das in aller 
Regel dazu, daß irgendwas abraucht. Es sei denn, man hat das Problem 
erkannt und mit einem Widerstand von ca. 100k Richtung "inaktives 
Potential" für diesen Fall vorgesorgt...
OP (Firma: Brainit GmbH) #3205638
Lesenswert?

Peter Dannegger schrieb:
> In der NF-Technik ist hochohmig unerwünscht.
> Es gibt reichlich Bands, die Aufnahmen versaut haben, weil sie
> irgendeinen offenen Eingang vergessen haben, runter zu regeln.
> Rauschen, Brummen, Schaltimpulse als Hintergrund sind dann die Folge.

Da hast du recht, aber da mach ich mir weniger Sorgen: "dahinter" sind 
alte analoge Telefone, und die sind hoffentlich niederohmig genug.

Es geht um die Einspeisung von Signaltönen (Frei, besetzt, ruft) in 
meine "Micro-Telefonanlage"
OP (Firma: Brainit GmbH) #3205985
Lesenswert?

Peter Dannegger schrieb:
> Michael Reinelt schrieb:
>> Es geht um die Einspeisung von Signaltönen
>
> Dann ist es günstiger, das Siganl definiert auf low zu setzen. Dazu
> änderst Du einfach den Pinmodus von toggle auf clear bzw. zurück. Der
> Vorteil ist, daß Du dann immer ganze Perioden schaltest.
> Schaltest Du asynchron, gibt es Schaltknackser.

Hey, geniale Idee... Danke!

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