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?
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.
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.
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