Forum: Mikrocontroller und Digitale Elektronik attiny 3 16bit PWM kanäle mit 8bit timer


von Vlad T. (vlad_tepesch)


Lesenswert?

hi,
attiny mit 3 16bit PWM kanäle mit 8bit timer

hat sowas schon mal jemand Programmiert und wär bereit den Code zu
posten.

hab mir das so vorgestellt:
pwm-werte größe nach sortiert.

im 8bit-timer-überlauf:
8bit-variable inc (highbyte der 16bit PWM).
wenn highbyte der pwm und des pwmwertes des ersten listenelementes
gleich, den output-compare aktivieren.

im output compare entsprechenden pin toggeln und auf den nächstgrößeren
wert schauen, ob ebenfalls in diesem 8bit-zyklus dran, falls ja neuen
outputcompare setzen sonst nixmachen

beim überlauf der pwm-highbyte-variable, rücksetzen der pins

prinzipiell sollte es ja so gehen, aber der Teufel liegt ja bekanntlich
im Detail, gleiche pwm-werte, zu geringe differenzen zw. zw pwm-werten,
so dass die isr noch nicht fertig ist, ...

Und wenn jemand ds schon mal gemacht hat, wärs blöd, wenn ich mich hier
stundenlang quäle.


warum ich sowas machen will?
es gibt keine 8-pin-tinys mit 16bit timer ;-(

hab in einer liste zwar welche gefunden attiny4 attiny5 und attiny9. nur
sind die nicht sehr verbreitet und haben auch kaum speicher.


MfG,
Vlad

von hans (Gast)


Lesenswert?

Dann halt PIC12Fxxx !

16 Bit Timer mit Compare, dann geht Soft-PWM mit Sortierung.

Und hat auch nur 8 Pin;)

Hans

von Vlad T. (vlad_tepesch)


Lesenswert?

das würde aber
eine völlig andere Toolchain und einarbeitung, sowie ein anderes 
Programmiergerät erfordern.
Das wollt ich vermeiden.

Ich war bloß ehrlich ziemlich  verwundert, als ich festgestellt hab, 
dass es keinen kleinen tiny mit nem 16 timer gibt.

von ZackZack (Gast)


Lesenswert?

Im Tutorial gibt es einen Software PWM:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM

Einfach aufbohren!

von avr (Gast)


Lesenswert?

Auch als "avr" ist der Picvorschlag gut.

Aber jetzt zur Frage : Wozu 3 x 16 Bit PWM bei max. 6 I/O

Welche Frequenz wird benötigt.

Vermutung : Tiny als RGB-Ansteuerung mit SPI

avr

von Vlad T. (vlad_tepesch)


Angehängte Dateien:

Lesenswert?

ZackZack schrieb:
> Im Tutorial gibt es einen Software PWM:
> http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM
>
> Einfach aufbohren!
die dort vorgestellte softwarePWm ist recht ungeeignet.
da die ja nur im Timeroverflow arbeitet, hat die ja quasi schon einen 
vorteiler von 256. wenn man dann noch bis 2^16 zählt hat man bei 8Mhz 
einen halben PWM-Zyklus pro sekunde.


avr schrieb:
> Auch als "avr" ist der Picvorschlag gut.
>
> Aber jetzt zur Frage : Wozu 3 x 16 Bit PWM bei max. 6 I/O
>
> Welche Frequenz wird benötigt.
>
> Vermutung : Tiny als RGB-Ansteuerung mit SPI
RGB-Ansteuerung ja, spi nein.

is für ne kleine Lampe mit verschiedenen Programmen und nem schalter zur 
bedienung.
(einzelfarben, helldunkel-fading jeder einzelfarbe, farbwechsel, 
helldunkel-gefadedeter Farbwechsel + variabler sleep-timer)


mein erster entwurf ist nen tiny13.
da is allerdings nur ne 8bit soft pwm einfachster art (in etwa wie in 
dem Artikel oben und ohne Berücksichtigung einer logarithmischen 
Kennline.

wollte jetzt aber ein zweites Modell bauen und dies korrigieren.

Da es auch eine Miniversion geben sollte, halt so ein kleiner 
Controller.
für die zweite Version wollte ich nen tiny25 nehmen, da der tiny13 bis 
auf ein paar bytes komplett voll ist.

von spess53 (Gast)


Lesenswert?

Hi

>Ich war bloß ehrlich ziemlich  verwundert, als ich festgestellt hab,
>dass es keinen kleinen tiny mit nem 16 timer gibt.

Die Kleinsten haben einen -> ATTiny4/5/9/10

MfG Spess

von Vlad T. (vlad_tepesch)


Lesenswert?

Vlad Tepesch schrieb:
> hab in einer liste zwar welche gefunden attiny4 attiny5 und attiny9. nur
> sind die nicht sehr verbreitet und haben auch kaum speicher.

von spess53 (Gast)


Lesenswert?

Hi

Dann nimm halt einen ATTiny24/44. Sind in SMD auch nicht viel grösser 
als ein 8-Pin-Dip.

MfG Spess

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Mehr als 2 Kanaele pro Timer (also zwei fuer den 16-Bit und 2 fuer den 
8-Bit) wirst Du allerdings auch nicht haben. Fuer eine LED-Ansteuerung 
brauchst Du allerdings auch keine 16-Bit-PWM (das ist overkill). Ich hab 
eine Ansteuerung mit einem Tiny2313 realisiert mit 4 Kanaelen (blau gibt 
es bei der LED zwei mal). Den Code stell ich Dir zur Verfuegung wenn Du 
magst.

Greets,
Michael

von Vlad T. (vlad_tepesch)


Lesenswert?

@spess:
mit smds löten steh ich auf Kriegsfuss.

Michael G. schrieb:
> Mehr als 2 Kanaele pro Timer (also zwei fuer den 16-Bit und 2 fuer den
> 8-Bit) wirst Du allerdings auch nicht haben.
Ich brauch auch nur einen hardwaretimer
> Fuer eine LED-Ansteuerung
> brauchst Du allerdings auch keine 16-Bit-PWM (das ist overkill).
die 16btit brauch ich, damit die Helligkeitsänderungen und damit die 
farbübergänge linear wirken.
Da die Farbübergänge extrem langsam sein sollen >2 min für einen 
HUE-Durchlauf reichen auch keine 10 bit, es sollen schon 256 abstufungen 
sein.

> Ich hab
> eine Ansteuerung mit einem Tiny2313 realisiert mit 4 Kanaelen (blau gibt
> es bei der LED zwei mal). Den Code stell ich Dir zur Verfuegung wenn Du
> magst.
Bracuh ich nicht, trotzdem danke.
>
> Greets,
> Michael

Ich seh schon, scheint noch niemand gemacht zu haben.
werd mich mal dran versuchen.
Wenn mit das Ergebnis gefällt und der Code aufgeräumt wurde werd ich ihn 
hier eventuell posten.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Hm ich glaub ich verstehe Dein Problem nicht, mehr als 256 Abstufungen 
pro Kanal wird Dir selbst die beste LED nicht bringen (eher weniger), 
geschweige denn wirst Du bei hoeheren Aufloesungen dort etwas sehen. Das 
heisst Du verzoegerst jede Abstufung enstprechend lange und dann kannst 
die ganze Schese problemlos so weit hinaus zoegern wie Du es haben 
willst.

Ueberleg mal: bei 8 Bit pro Kanal reden wir hier von 24-Bit-Farben, 
d.h. die beruehmten 16.7 Millionen Farben. Wieviele Farben moechtest Du 
denn mit Deiner LED aufloesen? Das ist doch Unfug(tm) ;)

von Vlad T. (vlad_tepesch)


Lesenswert?


von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Nu gut... Aber Du hast trotzdem keine 3 Kanaele zu 16 Bit :P

von spess53 (Gast)


Lesenswert?

Hi

>@spess:
>mit smds löten steh ich auf Kriegsfuss.

Falls du dein Hobby noch längere Zeit beibehalten willst, solltest du 
schon mal anfangen zu üben.

MfG Spess

von Ulrich (Gast)


Lesenswert?

Für LEDs muß es kein echtes 16 Bit PWM sein. Vemutlich sind 16 Bit auch 
nicht nötig, aber das ist eine andere Diskussion. Mann könnte den LEDs 
ein 8 Bit PWM Signal geben und dieses 8 Bits PWM Signal noch einmal 
Softwaremäßig umschalten ähnlich wie Software PWM. Dadurch hat man im 
Wesenlichen die volle Frequenz des Hardware PWM, und trotzdem 16 Bit 
(oder mehr) Auflösung. Man hat nur die volle Auflösung nicht nach einem 
Puls, sondern erst im Mittel nach 256 Pulsen, die dafür aber schneller 
kommen.

Hardwaremäßig sollte man dafür PWM Kanäle haben, die den PWM Wert 
puffern, so dass man nicht genau abpassen muß, wann man ins Register 
schreiben darf.

Die LEDs können durchaus 256 Abstufungen in der Helligkeit Widergeben. 
Bei linearer Teilung sind die unteren Stufen auch schon mal störend 
grob.

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
Noch kein Account? Hier anmelden.