Hallo, ich beginne gerade mit einen Atmega8 und hab da ein Verständnis
Problem mit den verschiedenen modis.
Ich möchte gerne das eine bestimmte Zeit (hier:100us) der timer 2
Ausgang auf high geht und dann für (900us) auf low geht. Mach ich das
jetzt mit ocr2? also den Pegel Wechsel. Und wo trage ich die max
Laufzeit ein.also für die ganze Periode
Anfänger schrieb:> Hallo, ich beginne gerade mit einen Atmega8 und hab da ein Verständnis> Problem mit den verschiedenen modis.
Dann ändere das. Lies' das Datenblatt einfach so oft, bis du's begriffen
hast.
Anfänger schrieb:> Was hat Faulheit mit Missverständnis zutun?
Du könntest vorhandenen Code zeigen, um zu beweisen dass du schon was
gemacht hast.
Dann könntest du sagen was der Code tut, was er stattdessen tun soll und
die Forenmitglieder sagen dir dann, wo der Fehler ist.
Du bist hier reingekommen, hast uns zu verstehen gegeben dass du vom
Timer nicht die geringste Ahnung hast und bist dann noch pampig geworden
als man dich darauf hingewiesen hat.
c-hater schrieb:> Dann ändere das. Lies' das Datenblatt einfach so oft, bis du's begriffen> hast.
@Anfänger: Mach dir nichts draus. So ist er immer, wenn seine Domina
frei hat.
Anfänger schrieb:> Mach ich das> jetzt mit ocr2? also den Pegel Wechsel. Und wo trage ich die max> Laufzeit ein.also für die ganze Periode
Das kann der Atmega8 mit Timer2 nicht.
Entweder nagelst du die alte Gurke an die Wand und besorgst dir einen
Atmega 48/88/168/328 oder nimmst den Waveform Mode 14 oder 15 des
Timer1.
Natürlich bekommt man das auch mit Timer2 hin. Dazu müsstest du die
Zeiten im CTC Mode mit Pin Toggle im OCR2 immer hin- und herschalten.
Hi Anfänger,
Stichwort PWM Mode mit einer Zykluszeit von 1ms = 900µs+100µs einstellen
und dann in das OCR2X Register 10% des Timer2 Preload Werts setzen.
Der Timer2 Preload richtet sich natürlich nach dem AVR Takt, dem Timer2
Prescaler und dem Timer2 Preload, dazu steht ein Formel im Datenblatt.
Ok ?
Anfänger schrieb:> Was hat Faulheit mit Missverständnis zutun?
Wenn das Missverständnis eben darauf basiert, dass offensichtlich
Faulheit vorliegt. Die Timer des Mega8 sind recht triviale Hardware, es
gibt nicht nur das Datenblatt, sondern Hunderte andere Quellen im
Internet, die den Umgang damit mehr oder weniger gut erklären. Wenn man
sich auf den Arsch setzt und den Kram wirklich verstehen will, kann man
das an einem Nachmittag schaffen.
Wer den Nachmittag nicht opfert, ist schlicht eins: stinkendfaul. Ende
der Ansage.
Karl M. schrieb:> Ok ?
Ne, das kann der Timer2 nicht. Der Timer2 des Atmega8 ist in etwa so
beschränkt, wie einige Beiträge in diesem Thread.
c-hater schrieb:> Ende der Ansage.
Na hoffentlich.
Also kann ich dort nur den fast pwm Mode nutzen sprich ich kann sagen
0-ocr2 ist high
Und von
Ocr2 bis 255 ist low
Aber ich kann nicht sagen von
0-Ocr2 high
Und von
ocr2 - zähle nur bis 130.
Hab ich das richtig verstanden.
Anfänger schrieb:> Also kann man beim timer2 nicht wie beim timer1 eine feste> Obergrenze> für den Zähler des Timers nutzen. Also zählt er immer bis 255
Ja. Den Top kannst du nur im CTC Mode einstellen. Mit ein wenig
Softwareunterstützung kanst du deine Zeiten auch damit erzeugen.
Die Atmega 48/88/168/328 können diesen PWM Mode mit allen 3 Timern.
Software seitiges wäre dann via interrupt denk ich mal auf 100us pro
interrupt und dann per if Anweisung von 0-10 zählen und nur bei 0 auf
high bei 1 auf low und bis 10 nix machen.
Anfänger schrieb:> Software seitiges wäre dann via interrupt denk ich mal auf 100us pro> interrupt und dann per if Anweisung von 0-10 zählen und nur bei 0 auf> high bei 1 auf low und bis 10 nix machen.
Ja, ginge auch. Geht aber einfacher.
Du lädst in OCR den Wert für 100µs, wenn er hochgelaufen ist, toggelt
der Pin und der Timer löst einen Interrupt aus. In der ISR setzt du dann
den Wert im OCR auf 900µs. Dann läuft er hoch, toggelt, Interrupt, OCR
auf 100µs und so weiter und so fort.
Anfänger schrieb:> Ok dann werd ich den mal nutzen. Wie heißt diese Funktion eigentlich die> der timer machen muss um top einstellen zu können?
Das sind die Waveform Modes. Dafür gibt es Tabellen im Datenblatt.
Thomas E. schrieb:> Karl M. schrieb:>> Ok ?>> Ne, das kann der Timer2 nicht. Der Timer2 des Atmega8 ist in etwa so> beschränkt, wie einige Beiträge in diesem Thread.>>> c-hater schrieb:>> Ende der Ansage.>> Na hoffentlich.
Und was war falsch in seiner Antwort ?
Soll er dem TO das DaBla vor dem Schlafen vorlesen ?
Entweder man hat es einigermassen kapiert, dann probiert man rum
bis es klappt oder man hat es nicht kapiert, dann wird nochmal im
DaBla nachgeschaut oder bisschen an der Tante Google rumgeritten -
es gibt mehr als genug Beispiele im Net.
Marc V. schrieb:> Soll er dem TO das DaBla vor dem Schlafen vorlesen ?
Nein. Ausdrucken, zusammenrollen und dir in eine rückseitige
Körperöffnung stecken. Eine echte Win-Win-Situation.
Marc V. schrieb:> Und was war falsch in seiner Antwort ?> Soll er dem TO das DaBla vor dem Schlafen vorlesen ?
Du meinst das Datenbuch ;). Muss er nicht, aber wenn man es nicht direkt
versteht, kann man versuchen es zu erklären oder patzig reagieren.
Der Spruch, lies das Datenblatt ist langsam durch. Man kann und muss
darauf verweisen, aber patzig ist nicht nötig und arrogant.
Grüsse,
René
Thomas E. schrieb:> Nein. Ausdrucken, zusammenrollen und dir in eine rückseitige> Körperöffnung stecken. Eine echte Win-Win-Situation.
Tja, das ist dein Niveau.
Aber, das was dich zur Ekstase bringt, ist für normale Menschen keine
Win-Win-Situation...
Anfänger schrieb:> Netter Umgangston hier.
Das musst du nicht ernst nehmen.
Manche meinen wohl, dass sie damit als Cracks angesehen werden. Es nervt
aber nur.
Grüsse,
René
Ich hab mal eine Frage zu den Registern es gibt ja 3 Stück zum
einstellen für die PWM ocr tcnt ICr was machen die genau?
Ocr ist doch Zeitpunkt des Pegel Wechsels von high auf Low am ocr Pin
icr ist top einstellen und tcnt?
Dieter schrieb:> Ocr ist doch Zeitpunkt des Pegel Wechsels von high auf Low am ocr Pin> icr ist top einstellen und tcnt?
TCNT ist die Uhr, mit der verglichen wird. Wenn OCRxx = TCNTx passiert
etwas. Top ist im Normalzustand das Ende des TCNT-Registers, also 255
oder 65535. Mit OCRxA oder, falls vorhanden, ICR kann man diesen Topwert
auch individuell festlegen. Dann läuft der TCNT nur bis zu diesem Wert
und geht dann wieder auf 0.
Legt man den Topwert mit OCRxA fest, wird der laufende TCNT mit OCRxB
verglichen. Benutzt man ICR, kann sowohl mit OCRxA als auch mit OCRxB
verglichen werden. In diesem Fall hat man 2 PWM-Kanäle.
Der Unterschied zwischen ICR und OCRxA liegt darin, daß die beiden
8-Bit-Register des ICR nacheinander beschrieben werden, die des OCRxA
gleichzeitig. Ändert man im laufenden Betrieb den Topwert, kann das im
ersten Fall zu unerwünschten Effekten führen.