Zitat Zitat von RP6fahrer Beitrag anzeigen
Meine Frage aber an White_Fox ist, mit welchem Controller kann man acht PWM-Kanäle unabhängig voneinander steuern? Geht das mit einem Atmega?
Das kann jeder Controller, der über einen Timer und einen Port mit acht Pins verfügt...oder mehr. Du mußt die PWM halt in Software programmieren. Der ATMega8 kann das dann auch. Mit 16MHz Taktfrequenz kriegst du in Software eine PWM-Frequenz von etwas über 240Hz raus und für 8MHz (interner Takt) 120Hz, das müsste für deine Eisenbahn dicke reichen. Notfalls brauchst du noch ne Glättungsdrossel und eine Freilaufdiode, letztere solltest du sowieso haben.

In Software würde das so aussehen:
1. Timer konfigurieren, kein Vorteiler
2. Für jeden PWM-Kanal brauchst du ein eigenes Register, in dem du das Pulsweitenverhältnis speicherst.
3. Die PWM-Interrupt-Routine benötigt ebenfalls ein eigenes Register zum Hochzählen und würde so aussehen:
  • Portregister einlesen
  • ALLE PWM-Pins auf LOW setzen
  • Zählregister der Interrupt-Routine inkrementieren
  • Jedes Kanal-Register mit dem Zählregister vergleichen, bei größer/gleich: entsprechenden PWM-Kanal auf HIGH
  • Portregister am Port ausgeben
  • Interuptroutine beenden