ich grüble immer noch an der korrekten Programmierung des Timers meines Attiny13 (weil der so hübsch übersichtlich ist, ich den mit dem Uno programmieren kann und ich ein extra Programmiershield dafür gebaut habe ;))
Ziel: PWM mit einstellbarer Pulsbreite, Frequenz erstmal egal.
Jetzt hätte ich erwartet, dass da eine schmale Pulsbreite von ca. 25% rauskommt mit einer Frequenz von ca. 9,6Mhz/256 = 37kHz.
Tatsächlich kommt was halbwegs symmetrisches raus mit 70Hz
Bevor die alten Hasen jetzt wieder lachen: verkneift's euch und helft mir auf die Sprünge
Ja, die kürzlich vorgestellten Tutorials habe ich gelesen und meine auch sie verstanden zu haben.
Ich hab das jetzt nochmal gecheckt, aufgrund eines unsichtbaren Kommentars von Serenifly.
Für den Prescaler ist ja nur CS02 auf 1 gesetzt, die anderen beiden auf 0. Da ich damit schon lange rumexperimentiere muss ich da darauf achten, dass die Kombination stimmt.
Beim Setzen von Bits bleiben die anderen ja unverändert - hab ich mal gelernt.
Bin weiterhin so schlau wie vorher, und das richtige Datenblatt habe ich auch verwendet XD
Sorry, ich hatte es wieder gelöscht weil ich mich vertan hatte
Das (0<<CS01) hat mich verwirrt. Hatte übersehen, dass das auf 0 gesetzt war und gedacht dass es 1 wäre. Ich würde die zwei 0<<x weglassen. Das bringt nichts. Sollte aber auch nichts schaden...
Rein von der Theorie sollte es passen. PWM ist allerdings genau der Timer Teil mit dem ich micht nicht wirklich auskenne
Hast du mal andere PWM Modi ausprobiert?
Naja, weglassen ist nicht gut wenn man ständig am Prescaler spielt ]
Anderer Mode macht keinen Sinn (na gut, zum Testen schon) weil ich die Pulsbreite einstellen können möchte. Mode 3 kann das ja nicht.
Du kannst aber nur mit Mode 3 den Lastzyklus ändern, wenn ich die das Manual richtig verstanden hab. Mode 7 macht dir immer ein symetrisches Signal da du immer am Top schaltest und Top ist nunmal dein gesetzt ocr0a
Ich bin auch nicht so der timerexperte aber vielleicht hilfts
TOP is defined as 0xFF when WGM2:0 = 3, and OCR0A when WGM2:0 = 7
Demnach kannst du nur, wenn du keinen Lastcycle von 50% haben willst, nur WGM2:0 = 3 nehmen. Sonst trifft der ja den CompareMatch nie vor TOP. Dann musst du den Prescaler so wählen, dass die gewünschte PWM Frequenz = CPU-Frequenz / (Prescaler * (0xFF bzw 255 +1) .. also müsstest du hier eben den wgm ändern und den prescaler zu 1 setzen um dein gewünschtes resultat zu erziehlen.