Hallo zusammen. Ist es möglich mit den Timern im ATMEGA32 zwei Takte (Rechtecksignale) auszugeben, die genau um 180° Phasenverschoben sind? Da es ja nur 2 8 bit Timer gibt (besser wären 2 16 bit Timer) sollte es mit den beiden 8 bit Timern realisiert werden. Wäre es ein Ansatz den zweiten Timer einfach nach der halben Periodendauer meiner Frequenz einzuschalten? Oder gibt es eine andere Möglichkeit? Danke euch.
Warum schaltest du nicht einfach nen Inverter an einen Outpin ? .. oder verwendest z.B. einen Tiny 25 . Der hat nämlich OC1A und /OC1A Ausgänge Gruss K.
Geht schon. Timer1, PWM mit Top ICR1 OCR1A inverted, OCR1B non inverted Frequenz stellst du mit Vorteiler und ICR1 ein, OCR1A=OCR1B=1/2ICR1
Inverter geht nicht, da ich den Takt ab und zu auschalten muss und dann müssen beide Ausgänge auf low sein. Aber die Idee mit OCR1A invertiert und OCR1B nicht invertiert klingt vielversprechend. Dann brauch ich auch nur einen Timer. Super. Danke erstmal.
Takt habe ich erzeugt mit Timer 1 an OCR1A und OCR1B. Aber wie gekomme ich nun B invertiert?
Stefan_KM schrieb: > Takt habe ich erzeugt mit Timer 1 an OCR1A und OCR1B. Aber wie gekomme > ich nun B invertiert? Indem du den Mode mit COM1B1/COM1B0 entsprechend Datenblatt passend setzt
Ok, habe ich gemacht. Habe jetzt an A ein high Pegel und an B ein low Pegel. Aber kein Takt in sicht. Ich habe in ICR1 0x0100 stehen. Aber der Takt liegt nicht an? Was habe ich vergessen?
OK, sorry. Habe folgendes gemacht: TCCR1A=0xB2; TCCR1B=0x11; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x05; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
Du musst natürlich auch in OCR1A/B was reinschreiben. Sonst hast du 0% PWM. Was bei non-inverted-PWM dauerhaft L, bei inverted-PWM dauerhaft H bedeutet :-)
Ich habe jetzt jeweils FF rein geschrieben. Kein Wirkung. Als ob ich vergessen habe den Timer zu starten.
Tja, ein Wert oberhalb des Zählbereichs (ICR1=0x0005) hilft nicht wirklich :-)
Dann habe ich wohl den Zusammengang noch nicht verstanden. Da werde ich nochmal das Datenblatt anschauen müssen. :-)
Der Timer läuft vo 0 bis ICR1 und zurück. (bei fast-PWM folgt auf den top-Wert direkt wieder 0) Erreicht der Zählerstand nun den OCR-Wert, wird der Ausgang direkt von der Hardware gesetzt/gelöscht. Da beide den gleichen Wert haben, passiert das gleichzeitig, aber gegenphasig. ICR1=0x0080 OCR1A=0x0040 OCR1B=0x0040 kann sein, dass die OCR-Werte noch um 1 korrigiert werden müssen, um ein 50:50-Signal zu erhalten, müsste ich nachschauen.
Ich habe den phase and frequency correct PWM gewählt. Ich bekomme an den Ausgängen den Takt wie gewünscht auch gegenphasig. Ich habe aber noch nicht verstanden wie das intern abläuft und wo der Unterschied zu den anderen Modi ist Auf jeden Fall habe ich jetzt versucht wie bereits erwähnt den Takt in betimmten Intervallen ab- und wieder anzuschalten. Ich halte dazu den Timer an in dem ich den Prescaler mit 0 0 Lade. Anschließend gebe ich die PORT PIN Funktion wieder frei (in meinem Fall an A und B low). Wenn ich den Takt wieder zuschalte gehe ich in umgekehrter Reihenfolge vor. Wenn ich mir nun die Signale auf dem Oszi anschaue, kann dieser das Signal nicht mehr richtig triggern. Ist es ein Problem wenn die Aus- Dauer länger ist als die An- Dauer? Irgendwie scheint der Zeitpunkt des Ein- und Ausschaltens immer ein anderer zu sein. Muss ich eventuell noch das Zählregister TCNT löschen?
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.