Hallo zusammen, bin ein absoluter Rookie auf dem Gebiet der Mikrokontrollerprogrammierung und arbeite mich gerade in deren Funktionsweise ein. Nun möchte ich gerne mit einem ATtiny13 zwei PWM Signale generieren, dass ganze soll in Assembler programmiert werden. Kann mir evtl einer helfen bzw. hat jmd einen funktionsfähigen Beispielcode ? Wäre um jede Hilfe dankbar. Vielen Dank im Vorraus. Jörg
> Nun möchte ich gerne mit einem ATtiny13 zwei PWM > Signale generieren, dass ganze soll in Assembler programmiert > werden. Der Tiny13 hat doch einen Timer mit 2 Compare-Einheiten, die direkt die PWM-Ausgänge (OC0A, OC0B) schalten können. Einzelheiten findest du im Datenblatt des Tiny13 ab Seite 55. Die Register und deren Bits sind ab Seite 66 erklärt. Wie du die einzelnen Bits konfigurieren musst (also welcher PWM-Mode), ist von deiner konkreten Anwendung abhängig. Einen Motor kannst du im Fast-PWM-Mode steuern, einen Servoimpuls erzeugst du am besten per Software-PWM. ...
@unbekannt: JA, die forensuche hab ich benutzt und alle beiträge bis 2003 durchforstet.... @HanneS: das datenblatt hab ich auch mehrfach gelesen. nur ist es so, dass wenn man noch NIE etwas mit assembler programmiert hat, dann fällt es schwer das sofort auf anhieb zu coden. von daher fragte ich nach einem beispielprogramm....
> nur ist es so, > dass wenn man noch NIE etwas mit assembler programmiert hat, dann > fällt > es schwer das sofort auf anhieb zu coden. von daher fragte ich nach > einem beispielprogramm.... Also wenn dir die Beispiele in der Codesammlung und im AVR-Tutorial nicht zusagen oder nicht reichen, dann kannst du dich auch gern mal hier umsehen: www.hanneslux.de/avr/ Mit Tiny13 habe ich zwar auch noch nichts gemacht, aber etwas Einblick in AVR-ASM kannst du dort schon bekommen. Fang am besten hier an: http://www.hanneslux.de/avr/divers/index.html ...
Sehr feiner Link. Vielen Dank. Denke, dass mir das weiter helfen wird. Allein schon die Erklärungen auf deutsch sind prima.
Hab nun zwei PWM Signale generiert, die jeweils mit der Frequenz der internen clk, sprich 37,5kHZ laufen. Der nächste Schritt wäre nun die beiden PWM Signale versetzt voneinander zu betreiben und eine gewisse Totzeit zwischen ihnen herzustellen. Hat da evtl jemand einen Tipp für mich wie ich das mit Assembler programmieren kann ?
Es fehlt mir nur noch eine Totzeit zwischen den Signalen. Hab da aber noch eine allgemeine Frage zum ATtiny 13. Er schwingt in der Regel mit einer Frequenz von 9,6MHz. Ich habe mich nun schon für den Fast-PWM Mode entschieden und erreiche damit eine Frequenz von etwa 37,5kHz. Würde aber gerne eine Frequenz von 50kHz haben. Ist das überhaupt möglich ????
Schau Dir mal den Modus Fast PWM mit OCRA als TOP Value an (WGM Modus Nr. 7). Damit kommste im Prinzip auch höher, allerdings dann mit geringerer Auflösung. Sonst gibts bei 9,6MHz keine Möglichkeit.
Das sieht dann nicht so gut aus, werde dann wohl auf einen anderen ATtiny zurückgreifen müssen. Hast du denn eine Idee, wie ich eine Totzeit zwischen meine PWM Signale einbauen kann ?
90°Phasenverschiebung könnte man dadurch hinbekommen, dass man in der ISR des ersten Timers den 2. startet. Fällt natürlich flach, wenn man nur einen Timer benutzt.
Hab jetzt 180° Phasenverschiebung erzeugt, da dies für mein Gegentaktsignal notwendig ist. Momentan habe ich allerdings einen Tastgrad von 50%, sprich keinerlei Totzeit. Dies wäre nun noch einzubringen, nur weiss ich noch nicht wie das zu implementieren ist.
stimmt... müssen natürlich 180° sein... Sonst müsste man die Startwerte der Timer (Low-Phase, wenn sie die "Standby-Phase" ist) so wählen, dass die Totzeit erreicht wird. Beim ersten Interrupt muß man sie dann auf die "richtige" Zeit einstellen.
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.