Forum: Mikrocontroller und Digitale Elektronik Tiny13 und FastPWM mode 7


von Dirk K. (wittekind)


Lesenswert?

Hallo zusammen,

kann mir jemand auf verständliche Art und Weise die Funktionsweise bzw. 
die Einrichtung des Mode 7 der FastPWM erklären?
Irgendwie komm ich mit dem Datenblatt nicht weiter, da dort (meiner 
Meinung nach) nur der mode 3 der FastPWM dargestellt ist.

Im Mode 7 steht einem ja ebenfalls (wie im Mode 3) ein Register OCR0A 
zur Verfügung um den Compare Match zu definieren. Der Unterschied ist 
aber im Mode 7, dass der Wert im OCR0A den Top-Wert des Zählers 
definiert. Er startet dann also wieder von vorn. Wie soll man denn aber 
dann eine PWM konfigurieren?? Wo soll denn dann noch der nötige 
CompareMatch für die Pulsweite definiert werden? Irgendwie ist mir genau 
das ein Rätsel. So wie ich diesen Mode gerade verstehe ist das für mich 
nichts anderes als ein CTC-Timer.
Für eine PWM bräuchte man doch aber eigentlich zwei Werte (einen für die 
"Periode" und einen für die Pulsweite), oder hab ich irgend etwas 
übersehen?

Beim Tiny15 hat man deswegen ja auch ein OCR1A und ein OCR1B.

Freu mich auf Eure Antworten.

von remo (Gast)


Lesenswert?

Laut meinem Datenblatt hat der Tiny13 auch zwei OCR register, ein OCR0A 
und ein OCR0B.
Problem damit gelöst?

ciao
Remo

von Dirk K. (wittekind)


Lesenswert?

Nö, isses nicht. Da das OCR0B für den zweiten PWM-Ausgang ist!!!!

von Branadic (Gast)


Lesenswert?

Ich glaube du hast die Aufgabe von OCR0A und OCR0B noch nicht so richtig 
verstanden, oder?
Das eine ist der Top-Wert, bis wohin der Counter zählen soll (Stichwort 
CompareMatch) das andere ist das Tastverhältnis der PWM (Verhältnis 
Pulslänge zu Pause). Beides gehört zu ein und derselben PWM. Die zweite 
PWM hätte demzufolge dann OCR1A und OCR1B, eben genauso unterschieden, 
wie auch Timer/Counter 0 und 1. Verstanden? Wenn nicht, Datenblatt noch 
mal lesen.

Greetings, Branadic

von Johannes A. (Gast)


Lesenswert?

Versuchen wir es nochmal so:
Was beim Tiny15 OCR0B machte, tut beim 13er das OCR0A, und umgekehrt. 
Entsprechend liegt auf dem Pin, der beim Tiny15 OCA war, beim Tiny13 
OCB.
Aber da der Tiny13 gegenüber dem 15 auch PWM-Modi mit festem TOP (0xFF) 
kann (z.B. Mode 3),  hat er noch einen zweiten OC-Pin für den A-Compare, 
den der 15 nicht hatte...

Gruß Johannes

von Dirk K. (wittekind)


Lesenswert?

Branadic wrote:
> Ich glaube du hast die Aufgabe von OCR0A und OCR0B noch nicht so richtig
> verstanden, oder?
> Das eine ist der Top-Wert, bis wohin der Counter zählen soll (Stichwort
> CompareMatch) das andere ist das Tastverhältnis der PWM (Verhältnis
> Pulslänge zu Pause). Beides gehört zu ein und derselben PWM. Die zweite
> PWM hätte demzufolge dann OCR1A und OCR1B, eben genauso unterschieden,
> wie auch Timer/Counter 0 und 1. Verstanden? Wenn nicht, Datenblatt noch
> mal lesen.
>
> Greetings, Branadic

@Branadic
Danke vielmals für deine Ausführungen. Mir sind die Funktionen von 
OCR1A/B sehr wohl bekannt - jedenfalls beim Tiny15. Schließlich kann ich 
beim Tiny15 meine PWM so konfigurieren wie ich es möchte. Leider verhält 
sich der Tiny13 mit seinen ZWEI OCR-Register für seine ZWEI PWM-Pins 
etwas anders und für mich so anders, dass ich deswegen hier nachfrage.
Aber hast du eigentlich mal das Datenblatt des Tiny DREIZEHN gelesen???? 
Ich kann dort leider keine Register OCR1A/B finden, die ja angeblich für 
den zweiten PWM-Ausgang zuständig sein sollen!!!!! Wenn diese Register 
vorhanden wären, hätte ich nämlich mein Problem nicht.
Des weiteren hättest Du Dir den Hinweis das Datenblatt noch einmal zu 
lesen ebenfalls ersparen können. Wie man im Starterthread erkennen kann, 
hab ich dieses gelesen und trotzdem - dafür entschuldige ich mich 
vielmals - kamen Unklarheiten auf, die ich hoffte mit Euch zu klären.

Ich bin mir nicht ganz sicher, ob man wirklich auf Fragen antworten 
sollte, wenn man sich seiner Erklärung nicht vollkommen sicher ist, weil 
man halt schon das gleiche Problem mit dem gleichen µC defintiv lösen 
konnte bzw. überhaupt weiß wie sich welcher µC verhält. Zumindest sollte 
man doch den Thread so aufmerksam lesen und den Ersteller nicht gleich 
vorverurteilen, weil er sein Problem nicht allein lösen konnte. Ich war 
immer der Meinung, dass Foren genau dafür da sind Hilfe zu bekommen. 
Aber anscheinend haben sich die Zeiten geändert.

@Johannes
Danke für Deine Erklärung. Das war die bisher sinnvollste Antwort, die 
gegeben wurde - und das ohne den Hinweis das Datenblatt noch einmal zu 
lesen :-). Denn wie schon einmal wiedergegeben: Irgendwie kam ich damit 
nicht weiter.
Den Unterschied der zwei Modi hab ich soweit auch verstanden. Aber 
könntest Du mir vielleicht noch einmal etwas genauer erklären, wie ich 
eine bestimmte Periode und eine Pulsweite mit dem Mode 7 einstelle?
Ich möchte den Pin0=OC0A verwenden, da der Pin1=OC0B (der ja ebenfalls 
ein PWM-Ausgang ist) als extInt-Pin fungieren soll.
Ich möchte also den Topwert nicht auf 0xFF haben, sondern auf einen von 
mir definierten Wert. Dafür nehme ich den Mode 7 und setze meinen 
gewünschten Topwert in das OCR0A register. Damit erreiche ich das jetzt 
die Rampe bei meinem definierten Wert überläuft und wieder von vorn 
beginnt. Somit stellt dieser Wert auch meine Periode dar. Mir ist aber 
immer noch nicht bewußt, wie ich jetzt die Pulsweite definieren kann?! 
Könntest Du mir da irgendwie weiterhelfen (- oder jemand, der sich 
ebenfalls die Mühe machen würde)?
Oder ist es beim Tiny13 so, dass wenn ich den Mode3 mit festen Topwert 
benutze die Pulsweite mit OCR0A einstelle und  wenn ich den Mode7 
benutze mit OCR0A den Topwert und mit OCR0B die Pulsweite einstelle, 
obwohl ich den Pin OCR0A verwende???? Das wäre natürlich eine 
Möglichkeit.






von Johannes A. (Gast)


Lesenswert?

Keine Chance... sobald OCRA den TOP macht, kannst Du mit dem Tiny13 auf 
OCA keine PWM mehr machen. Aber kannst Du statt INT nicht auch den PCINT 
benutzten, der ja auch auf anderen Pins funktioniert?

Wenn nicht, schlage ich vor, mal an den Tiny25/45/85 zu denken. Der hat 
noch ein drittes OCRC für den TOP, und dessen OC-Pins schneiden sich 
nicht mit dem INT.

Gruß Johannes

von Dirk K. (wittekind)


Lesenswert?

Johannes A. wrote:
> Keine Chance... sobald OCRA den TOP macht, kannst Du mit dem Tiny13 auf
> OCA keine PWM mehr machen. Aber kannst Du statt INT nicht auch den PCINT
> benutzten, der ja auch auf anderen Pins funktioniert?
>
> Wenn nicht, schlage ich vor, mal an den Tiny25/45/85 zu denken. Der hat
> noch ein drittes OCRC für den TOP, und dessen OC-Pins schneiden sich
> nicht mit dem INT.
>
> Gruß Johannes

Oh Mist verdammt. Dann ist der Tiny15 in dieser Hinsicht ja tatsächlich 
besser.
Den Tiny13 habe ich übrigens auch gewählt, weil man bei dem die 
PCINT-Pins maskieren kann. Das konnte wiederum der Tiny15 nicht, obwohl 
der auch den PinChange-Interrupt hat - halt bloß für alle Pins, 
dummerweise auch wenn die als Ausgänge definiert und gebraucht werden.
Schade, dass der Tiny13 sich jetzt so mit der PWM anstellt - dann kann 
ich den also doch nicht zu meinem Standardlieblingscontroller machen.
Na gut, aber nochmal zu deinem Vorschlag mit den PCInt statt INT. Dann 
hätte ich natürlich die Pins OCA und OCB frei. Aber habe ich mit dem 
nicht genau das gleiche Problem, wenn ich meinen eigenen Überlauf und 
Pulsweite definieren will? Verhält sich der in seiner Konfiguration 
prinzipiell anders als der OCA? Ich glaub nicht, bin mir da aber jetzt 
nicht sicher. Oder verstehe ich Deinen Gedankengang gerade nicht?

von Pierre (Gast)


Lesenswert?

Servus,

wie schaut es denn aus, wenn du einfach auf andere Typen aus der 
Tiny-Familie umsteigst? Ich denke da an Tiny 22, 25, 45 oder 85 auch 
alle im DIP8 oder SO8 Package. Alle samt haben sie 4 PWM-Ausgänge, da 
wird sicherlich auch einer mit den Anforderungen nach einem maskierbaren 
Interrupt dabei sein.

Gruß, Pierre

von Dirk K. (wittekind)


Lesenswert?

Hallo,

ja, das werde ich dann mal in Betracht ziehen. Mir ging es vorerst 
eigentlich nur um die Frage, ob es überhaupt möglich ist den Tiny13 
"PWM-technisch" so zu konfigurieren, wie mit dem Tiny15 - also sowohl 
Periode als auch Pulsweite oder ob ich einfahc nur zu doof war die 
entsprechenden Einstellungen zu finden.
Aber ich möchte mich trotzdem nochmal bei allen bedanken, die 
geantwortet haben.
Ich schau mich dann mal nach einen anderen Tiny um.

von Johannes A. (Gast)


Lesenswert?

Ich glaub, Du hast mich ein bisschen falsch verstanden :-)

Also wenn Du beim tiny13 OCRA für den TOP benutzt, kannst Du doch immer 
noch mit OCRB den PWM-Output machen...
Das ist doch nichts anderes, als wenn Du beim tiny15 OCRB für den TOP 
benutzt und mit OCA den PWM-Output machst, oder?

Aber eigentlich ist der Nachfahre des tiny15, wie der Name schon 
andeutet, eh der tiny25/45/85. Da hast Du dann auch wieder die PLL und 
den Verstärker für den ADC (hat der 13 beide nicht), dazu diverse neue 
Features (der zweite Timer mit Totzeit-Generator in der PWM und die 
GPIORs sind meine Favoriten), und OCA und INT liegen wieder auf 
denselben Pins. Und so viel teurer als der tiny13 ist der 25 auch nicht 
(bei reichelt 1,50 gegenüber 1,10 Euro).

Gruß Johannes

von Dirk K. (wittekind)


Lesenswert?

Hallo Johannes,

nö, nö. Ich glaub, ich hab dich schon verstanden. Hab wohl eher an Dir 
vorbei geredet. Wie auch immer.
Ich danke Dir jedenfalls für Deine Erklärungen. Ich hab mich 
mittlerweile auch schon ein bißchen mit der Tiny25/45/85 - Reihe 
befasst. Also bis jetzt ist die äußerst vielversprechend.

Grüße
Dirk

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.