Guten Tag Ich verwende einen ATtiny24 um mittels PWM Daten quasi-analog (tastverhältnis der PWM) kontinuirlich zu übertragen. Die PWM wird mittels compare match mit neuen Tastverhältnissen gefüttert und arbeitet im toggle-Modus. In einigen Betriebszuständen muß aber dass Senden der Daten für kurze Zeit unterbrochen werden. Die einfachste Methode währe m,einer Meinung nach einfach den PWM Ausgang als Eingang zu deffinieren. Gibt es irgend welche Dinge die dagegen sprechen diese Methode zu verwenden um den PWM-Ausgang stumm zu schalten und was muß ich dabei beachten? (Abgesehen davon dass die Änderung der Datenrichtung nur bei einem deffiniertem Pinzustand geschehen darf.)
Es kann doch nicht sein dass noch keiner ein Projekt hatte bei dem er ein PWM Signal kurzzeitig deaktivieren musste. Oder kann/will mir einfach keiner etwas genaueres sagen?
Du könntest auch einfach im TCCRnA den Compare Output Mode auf normal Port operation zu stellen.
Wenn du einen sicheren Pegel an dem Pin brauchst, ist Eingang bzw.Tri-state doch höchstwahrscheinlich verkehrt (da hängen doch nur noch mehr Eingänge dran, oder?). Also: am einfachsten scheint mir: - Trenne die PWM von dem Pin (OCnxy-Bits des Timers) - Schalte den Ausgang auf den richtigen Pegel (falls nötig) rtfm, Jörg
>Wenn du einen sicheren Pegel an dem Pin brauchst, ist Eingang >bzw.Tri-state doch höchstwahrscheinlich verkehrt (da hängen doch nur >noch mehr Eingänge dran, oder?). Ja. es hängt an der anderen Seite ein Eingang dran. Aber wenn man den internen pull up aktiviert müsste der Pegel doch stabil sein oder habe ich da etwas übersehen? Hängt der PWM etwa mit dem Pul up zusammen und aktiviert / deaktiviert ihn immer? Dass mit dem Abdrehen des Compare und des PWM-Ausgangs hatte ich schon ausprobiert. Doch da wird mir leider beim Reaktivieren des PWM das Signal invertiert da dass Ganze im Togglemodus arbeitet. Desswegen müsste ich irgendwie ein Dummy-Erreignis erzeugen dass mir das PWM-Signal wieder zurückdreht. Bzw. müsste ich einen PWM-Takt warten und dann die PWM nochmal ab und anschalten. Gibt es eine bessere Methode ein invertiertes PWM-Signal zu korrigieren als folgendes? °Beim Reaktivieren des PWM wird einmalig ein sonst nicht verwendeter Interrupt wie z.B. Pegeländerung an einem Interuptpin aktiviert und in diesem die PWM einmal aus und eingeschalten. °Nach dem Reaktivieren wird eine Wartefunktion eingefügt, nach der die PWM aus und eingeschalten wird.
Hallo Barny, suuuper Idee. Da haben in den letzten 40 Jahren Kohorten von Entwicklern daran gearbeitet analoge Signale zu digitalisieren um sie mit geringst möglichen Fehlern zu übertragen und da kommst du nun auf die grandiose Idee digitale Signale, denn nichts anderes sind deine PWM Werte, auf analogem Wege zu senden. Das wird sicherlich höchst präzise. Ich bin mal gespannt, ob du uns auch verrätst, wieviele zig Meter deine Übertragungsstrecke lang ist. Und nun soll dieses <Zitat> "Senden der Daten für kurze Zeit unterbrochen werden." Wie bitte schön "unterbricht" man ein analoges Signal. Legt man es auf GND? Legt man es auf Vcc? Behält man den letzten analogen Wert bei? Ist das Signal dann überhaupt unterbrochen? Ich glaube, dieser Thread wird wieder lustig.
Barny schrieb: > Es kann doch nicht sein dass noch keiner ein Projekt hatte bei dem er > ein PWM Signal kurzzeitig deaktivieren musste. Warum sollte man eine PWM denn abschalten? Eine LED sollte nicht flackern, das wirkt unprofessionell. Ne PWM frißt ja keine CPU-Zeit, es gibt also keinen Grund, sie nicht durchlaufen zu lassen. Und je nach PWM-Mode lassen sich andere Timeraufgaben weiterhin benutzen. Was allerdings sehr ungewöhnlich ist, eine PWM zur Datenübertragung zu nutzen. Es ist viel einfacher und sicherer, Daten bitweise zu übertragen, ala UART, 1-Wire, IR usw. Peter
@gatsby >Da haben in den letzten 40 Jahren Kohorten von Entwicklern daran >gearbeitet analoge Signale zu digitalisieren um sie mit geringst >möglichen Fehlern zu übertragen und da kommst du nun auf die grandiose >Idee digitale Signale, denn nichts anderes sind deine PWM Werte, auf >analogem Wege zu senden. Das verwendete Protokoll ist nicht auf meinem Mißt gewachsen und auch nicht gerade dass Jüngste. Dass analoge Signal nennt sich PPM. Mir währe auch I2C, SPI oder USART lieber, aber die Schaltung die mit dem Signal versorgt wird ist nicht von mir und die will nun mal PPM haben. >Das wird sicherlich höchst präzise. >Ich bin mal gespannt, ob du uns auch verrätst, wieviele zig Meter deine >Übertragungsstrecke lang ist. Ich habe nie behauptet dass die Übertragung präzise ist. Dass Signal wird ca. 0,02m weit übertragen. Es könnten aber auch ca. 20mm sein ;o) >Und nun soll dieses <Zitat> "Senden der Daten für kurze Zeit >unterbrochen werden." >Wie bitte schön "unterbricht" man ein analoges Signal. Legt man es auf >GND? >Legt man es auf Vcc? Behält man den letzten analogen Wert bei? Ist das >Signal dann überhaupt unterbrochen? Es wird einfach aufgehört das Signal zu generieren und man geht einfach in einen deffinierten Zustand. Und wenn man den letzten analogen Wert senden würde, würde man ja weiterhin mittels PWM ein Signal generieren da ja dass analoge Signal nicht über Spannung sondern über die Zeit gesteuert wird. Desswegen ist eigentlich absolut egal ob jetzt GND oder VCC anliegt. Es darf nur keine Pegeländerung auftreten. @Peter Dannegger >Warum sollte man eine PWM denn abschalten? >Eine LED sollte nicht flackern, das wirkt unprofessionell. Bei dem generierten Signal hantelt es sich um ein Datensignal. Da flackert keine LED. >Ne PWM frißt ja keine CPU-Zeit, es gibt also keinen Grund, sie nicht >durchlaufen zu lassen. >Und je nach PWM-Mode lassen sich andere Timeraufgaben weiterhin >benutzen. Es geht mir nicht darum CPU-Zeit zu sparen, sondern dass in bestimmten Betriebszuständen kein Signal ausgegeben wird. Wenn man den PWM-Ausgang auf Eingang schaltet läuft ja auch alles weiter. Bei diesen Betriebszuständen handelt es sich um den Fehlerfall. Und zwar wenn über die Sensoren bzw. die Eingangssignale ungültige Werte ermittelt werden oder sonst etwas nicht stimmt.
Halt doch einfach den Timer an.
Hallo Barny, analoge Signale sind analog und das gibt es nicht <Zitat>"Dass analoge Signal nennt sich PPM." Ein analoges Signal entsteht, wenn man z.B. ein PWM Signal über einen Tiefpass schickt. PWM ist ein digitales Signal. Genau wie PPM. PPM = Pulse-Phasen-Modulation oder Pulse-Pausen-Modulation (Goggel ist dein Freund). Das sind alles digitale Signale, die analoge Werte widerspiegeln.
Clock source auf 000 stellen. Das habe ich gemacht.
Barny schrieb: > Bei dem generierten Signal hantelt es sich um ein Datensignal. > Da flackert keine LED. Ich wollte nur auf eine gängige PWM-Anwendung hindeuten. Es kann also durchaus richtig sein, daß Du der erste bist, der eine so ungewöhnliche Anwendung implementiert. Und das bezog sich auf Deine Aussage: > Es kann doch nicht sein dass noch keiner ein Projekt hatte bei dem er > ein PWM Signal kurzzeitig deaktivieren musste. Es kann eben doch sein. Wenn der Toggle-Mode Probleme macht, warum benutzt Du ihn dann überhaupt? Benutz doch einfach den "inverting mode" oder "non-inverting mode". Peter
@ H.j.Seifert & Anon Ymous Leider werden die beiden Timer mehrfach verwendet. Desswegen kann ich die nicht abdrehen ohne alles stillzulegen. @gatsby Ich weis dass das Signal dass ich generiere digital ist weil man mit dem Mikrokontroller dass Signal nicht analog erzeugen kann. Aber 1000 Abstufungen auf 1ms kommt der analogen Version schon verdammt nahe. Dass Protokoll stammt aus einer Zeit in der es noch keine Mikrokontroller gegeben hat und so gut wie alle Signale analog übertragen wurden. Aber genau genommen liefert ein D/A Wandler auch nur digitale Signale, auch wenn es 8,10,16,... Bit breite Abstufungen gibt. Schau dir doch bitte einmal die Deffinition von digital/analog an. Deiner Logik nach müsste also auch ein FM-Funksignal digital sein ;) Digital bedeutet dass die betrachtete Größe im betrachteten Bereich eine endliche Anzahl von Zuständen hat und somit zählbar ist. Analog bedeutet dass die betrachtete Größe im betrachteten Bereich unendlich viele Zustände annehmen kann. Mehr sagt analog/digital nicht aus. Es hat also überhaupt nichts mit Spannung/Strom zu tun. Beispiele für Analog/Digital: Dass Rechnen/Zälen mit Fingern ist digital. Die Frequenz eines Schwingkeises den man mit einem Trimmpoti einstellt ist analog. Die Helligkeit der Raumbeleuchtung ist digital (Schalter ein/aus) Die Helligkeit des Sonnenlichts dass den Erdboden an einem Ort erreicht ist analog. @ Peter Dannegger >Ich wollte nur auf eine gängige PWM-Anwendung hindeuten. >Es kann also durchaus richtig sein, daß Du der erste bist, der eine so >ungewöhnliche Anwendung implementiert. Es gibt mindestens 2 ähnliche Schaltungen die eine vergleichbahre Funktionalität haben. Wenn man sich die Schaltung anschaut, schat es aber ganz so aus als ob da das Signal rein softwaremäßig generiert wird. Eigentlich ist das PWM Modul die vernünftigste Lösung um ein solches Signal zu erzeugen. Denn da hat man mehr Zeit für andere Aufgaben übrig und es ist weit genauer als wenn man es in der Hauptschleife erzeugt. >Wenn der Toggle-Mode Probleme macht, warum benutzt Du ihn dann >überhaupt? >Benutz doch einfach den "inverting mode" oder "non-inverting mode". Danke für den Tipp. Ich werd mal schaun ob ich damit mehr Glück habe.
Ich habe eine provisorische Lösung für dass Problem gefunden als ich endlich mal von der Leitung gestiegen bin. Da ich einen Ringspeicher verwende um das PWM-Modul mit Daten zu versorgen, reicht es vor dem Reaktivieren des PWM Moduls die Variable die die aktuelle Position im Speicher enthält um 1 zu ändern und dass generierte Signal passt.
Barny schrieb: > Es gibt mindestens 2 ähnliche Schaltungen die eine vergleichbahre > Funktionalität haben. > Wenn man sich die Schaltung anschaut, schat es aber ganz so aus als ob > da das Signal rein softwaremäßig generiert wird. Schön für Dich. Wir wissen jedoch nicht, welche Schaltungen Du Dir gerade anschaust. Es ist müßig, auf Schaltungen zu verweisen und sie nicht zu posten oder zu verlinken. Peter
>Schön für Dich. >Wir wissen jedoch nicht, welche Schaltungen Du Dir gerade anschaust. >Es ist müßig, auf Schaltungen zu verweisen und sie nicht zu posten oder >zu verlinken. Entschuldigung. Mein Hinweis auf die käuflichen Versionen waren nur dazu gedacht darauf hinzuweisen dass ich nicht der Einzige bin der so eine Schaltung baut. Eine Verlinkung auf die Onlinegeschäfte der Anbieter der käuflichen Version hätte eigentlich nichts gebracht, da man keine Deteils sieht und auch die Produktbeschreibung ist dort sehr wage. Und da mein Problem bei einer Zusatzfunktion gelegen ist die keine der beiden Produkte unterstützt, ist es sicher nicht so tragisch. Die Schaltung läuft inzwischen mit den provisorischen Verbesserungen stabil. Danke vielmals für eure Hilfe
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.