Forum: Mikrocontroller und Digitale Elektronik AVR Software PWM mit mehr als 8 channeln


von Froghut (Gast)


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

von Paul H. (powl)


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

von Björn V. (froghut)


Lesenswert?

hi,

das klingt ja mal Spitze!
Intresse bestünde immernoch, geb doch einfach nochma bescheid, hier im 
Forum oder wie auch immer, wenn du was fertig hast, wäre super!
Danke schonmal

Björn

von Paul H. (powl)


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

von Paul H. (powl)


Angehängte Dateien:

Lesenswert?

Huch, Anhang vergessen.

Das ganze gibt übrigens ein Stromanschlusspanel für meinen PC hinten an 
dem ich 5V und 12V abgreifen und per Software Steuern kann. Ist ganz 
Praktisch für 5V und 12V Verbraucher wie meine Schaltungen, Lampen, 
TFT-Monitor, ext. TV-Karte, Minilötkolben, Lüfter.

lg PoWl

von Paul H. (powl)


Lesenswert?

So, fertig

ist in der Codesammlung

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.