AVR Software PWM mit mehr als 8 channeln

Gast #1011818
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
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
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
#1023557
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
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.