mikrocontroller.net

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


Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann halt PIC12Fxxx !

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

Und hat auch nur 8 Pin;)

Hans

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ZackZack (Gast)
Datum:

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

Einfach aufbohren!

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Vlad Tepesch (vlad_tepesch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

MfG Spess

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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) ;)

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nu gut... Aber Du hast trotzdem keine 3 Kanaele zu 16 Bit :P

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.