AVR Software PWM mit mehr als 8 channeln

Gast #1011818
Lesenswert?

Hi,

Ich weiss das es schon Software-PWM's für mehr als 8 channel gibt (z.B. 
von atmel etc), allerdings hätte ich gerne das in dem Artikel 
Soft-PWM beschriebene erweitert, weil das ja doch recht performant 
ist =)
Ich bin zwar kein Programmieranfänger, allerdings komme ich aus der 
Windows-Welt (C#), und dieses hardware-nahe programmieren fällt mir 
teilweise noch ein bisschen schwer. Grade das oben erwähnte Soft-PWM 
verstehe ich zwar vom Prinzip her, vom Code her wills mir aber leider 
noch nicht wirklich in den Kopf. Deswegen meine Frage:
Hat vielleicht schon jemand das im Artikel beschriebene Soft-PWM so 
erweitert das man mehr als 8 Kanäle benutzen kann, falls nicht 
vielleicht hat ja jemand lust drauf, oder will mal jemand den 
source-code im Artikel noch ausführlicher kommentieren um ihn Anfängern 
noch begreiflicher zu machen?

Danke schonmal,

Björn
#1022665
Lesenswert?

Falls es dir nicht zu spät ist.. ich bin gerade an sowas dabei.

Man kann soviele Channels definieren wie man möchte. Jedem Channel kann 
man einen Port und einen Portpin zuteilen.

Ich werde mich melden wenn ich fertig bin und interesse besteht.
lg PoWl
#1023554
Lesenswert?

So, hier ein erster Vorgeschmack. Hab es nun erstmals zum Laufen 
gebracht. Das ganze ist für einen ATmega8. Geschaltet werden im Moment 
noch nicht die PORTs sondern nur die DDRs, weil ich damit die Gates von 
Feldeffekttransistoren auf Masse ziehe um mir nen zusätzlichen 
Transistor pro FET zu sparen. Kann man leicht umändern indem man die 
DDRs standardmäßig mit 0xFF besetzt und alle DDRB und DDRC Anweisungen 
durch PORTB und PORTC ersetzt.

Um weitere Ports hinzuzufügen muss man ein wenig umprogrammieren, ist 
aber mit ein bisschen Copy&Paste schnell erledigt.

Das ganze Ding kann man per RS-232 Steuern. Es hört auf

on <Channel>
off <Channel>
pwm <Channel> <PWM-Value>

also z.B.

pwm 1 100
pwm 2 150

Habe heute leider keine Zeit mehr. Am Code gibt es sicher noch eine 
ganze Menge zu verbessern und zu optimieren. Morgen bastel ich mal eine 
Standalone-Demo, u.A. eine für einen ATmega16 in dem ich dann einen 
Sinusartigen PWM-Verlauf auf 32 LEDs darstellen werde.

Ach ja, die PWM läuft bei 8 Mhz internem RC-Oszi mit 244Hz (!!) 
Eventuell sind sogar 488Hz drin, hab noch nicht gemessen wie lange die 
ISRs brauchen ;-)

lg PoWl

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren