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
@Michael Reinelt (fisa) >Reicht es dafür, einfach den Pin per DDR von Aus- auf Eingang >umzuschalten? Nein. Du musst die COMxy Bits löschen, dann wird der OCR Ausgang vom Timer getrennt.
Michael Reinelt schrieb: > Reicht es dafür, einfach den Pin per DDR von Aus- auf Eingang > umzuschalten? Jap. Ggf. koennte man aber noch zudem (nach den "als Input setzten") den Timer ausschalten. Dies reduziert Verbrauch und EMV. Beim Einschalten wieder erst Timer an, dann DDR... MfG
Michael Reinelt schrieb: > Reicht es dafür, einfach den Pin per DDR von Aus- auf Eingang > umzuschalten? Falk Brunner schrieb: > Nein. Stephan B. schrieb: > Jap. Hmmm...
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
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.
"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.
@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.
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
Hallo nochmal. In meinem kleinen Bsp. fuer tinyUSBboard (atmega8) funktioniert es wie von mir zuvor beschriben. Quellcode haengt bei. MfG
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.
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...
MWS schrieb: > 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. Nein, der Pullup wird immer nur über das PORTx.y Bit gesteuert, nicht über die Alternativ-Funktion.
Danke euch allen! ich glaub ich hab gelesen was ich lesen wollte :-) Und ja, ich will den Ausgang wirklich hochohmig. Die 400Hz sollen per Kondensator als Tonsignal aufgeschaltet werden, und da will ich ohne Ton wirklich hochohmig. lg Michi
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.
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"
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.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.