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: > Ach schön so geht man im Forum also mit fragen um. Ja Faulheit wird hier nur mässig unterstützt.
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.
:
Bearbeitet durch User
Thomas E. schrieb: > @Anfänger: Mach dir nichts draus. So ist er immer, wenn seine Domina > frei hat. :)
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
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.
Wie sieht es mit atmega16 aus kann der das den? Oder ein 644PA die beiden hätte ich noch hier.
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.
Beim 16er weiß ich das nicht. Aber der 644 kann das mit allen 3 Timern.
Ok dann werd ich den mal nutzen. Wie heißt diese Funktion eigentlich die der timer machen muss um top einstellen zu können?
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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é
Netter Umgangston hier. Probieren ist gut aber erklären und Verständnis bringt mehr.
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.
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.