Hallo, seit einiger Zeit suchte ich einen PWM- Kontroller mit möglichst vielen Outputs. Es gibt da die PIC Lösung, da ich aber PIC’s nicht mag entschloss ich mich meine eigene PWM- Kontroller FW. zu schmieden. Von NXP gibt’s was gutes, aber den hab ich erst gesehen wo ich mit meiner FW fast fertig war :- ). Mein Ziel war es einen PWM- Kontroller mit einer nicht all zu komplizierten Bedienung, und ohne überflüssigen Schnick Schnack ala Fading und weis der Geier was zu realisieren. Hier im Forum gibt’s zwar viele Codesamples mit Soft- PWM, aber sehr wenige Projekte die vollständig sind. Ich biete euch einen PWM- µController auf Basis von ATMEGA 8 als komplettes Projekt an. Um die Firmware auszuprobieren sollte die Flash und EERPOM Dateien geflasht werden. . Und noch was mein Deutsch inkl. English ist stark verbesserungswürdig. Kritik ist willkommen, jedoch nicht erwünscht :- ) Hier mal die Features im überblick: ● TWI- Interface, Auto Increment ● Watchdog Überwachung ● Insgesamt 18- Frei wählbare PWM- Kanäle 16x Kanal (8-Bit) Software PWM, Variable Auflösung 2-8 Bit @ 16MHz Crystal Clock and 8- Bit Resolution = 245Hz PWM- Frequency 2x Kanal 16- Bit Hardware PWM(Fast PWM), Variable Auflösung 2-16 ● 512 Byte TWI- SRAM noch nicht umgesetzt !!!!!!!!!!!! ● 256 Byte TWI- E²PROM noch nicht umgesetzt !!!!!!!!!!!! ● CRC 8,16?? Serial or Table Realisierung noch nicht umgesetzt !!!!!!!!!!!! ● Über TWI- Bus zugängliche Hardware Einstellungen ─ TWI- Slave Adresse, Standart SLA= 0x7A ─ Clock Select Bytes Timer 1, 2 (PWM- Frequency) ─ Auflösung 16- Bit PWM(ICR1) ─ Auflösung 8-Bit Software PWM ─ Interruptzeit für Software PWM(!) ● Alle Hardware Einstellungen lassen sich im EEPROM über einen Befehl abspeichern. ─ „Power Up Load“ gespeicherte PWM – Werte nach Reset laden(EEPROM), oder by default alle Kanäle mit 0 initialisieren. Viel spaß damit :- )
Hier ein weiterer Code mit dem sich die Funktionalitäten des PW18 prüfen lassen. Die Funktionalität lässt sich mit Mega 16 und STK 500 Prüfen. Tasten für SWITCH 0-7 einfach mit PortA verbinden. Demo Funktionen: Taste 7: Schreibe an PWM-Kanal 1 = HEX: 8 Taste 6: Schreibe an PWM- Kanal 7,8 = HEX: 8 Taste 5: Lese Kanal 1 und gebe über COM mit 19200 KBaud aus Taste 4: Lese Kanal 1-8 und gebe über COM mit 19200 KBaud aus Taste 3: Taste 2: Taste 1: Taste 0: So Art Dauerblinken Kanal 1-18 wird dabei mit ansteigenden Werten beschrieben, in Endlosschleife.
Hallo, die Firmware gibts jetzt in Version 1.1 Es wurden neue Befehle hinzugefügt. Zusätzlich wurde die Beschreibung gründlich überarbeitet.
Hallo, in der PWM18 FW. gab’s ein Paar gravierende Fehler im Slave Transmitter Modus. Diese wurden jetzt beseitigt. Zwei neue Befehle sind hinzugekommen. 1) TWI- SRAM ( Zugesicherter Bereich im SRAM) 2) TWI- EEPROM (Zugesicherter Bereich im EEPROM) Die Beschreibung wurde noch mal aufgebohrt da ich die vorherigen Versionen echt Abstoßend fand :- ) . Sourcecode in ASM. gibt’s jetzt auch noch dazu, inklusive 2x PAP Mehr hab ich nicht. I know mein Source ist doof kommentiert :- ) Viel spaß damit
;----------------------------------------------------------------------- --------------- ; Bitte Immer die Neuste Version Benutzen ; Zum Teil kommen noch recht hässliche Fehler bis Fehlerchen hoch. ;----------------------------------------------------------------------- --------------- Good News: ;---------------- Nach einer Vermessung der Interruptzeiten habe ich festgestellt dass die längste Interruptzeit 96x Clock Cycles braucht. Somit läuft alles reibungslos auch wenn das Register „PWM_vs_Calc“(neu PWM_vs_BUS) einen Wert von 128 (Hex:80) hat. Um den neuen Wert abzuspeichern sollte der Befehl 0xDD + ‚S’ ausgeführt werden. Das gute daran alle Funktionen laufen weiterhin stabil, und die Software PWM Frequenz steigt von ;--------------------------- 127 Hz auf 252 Hz ;--------------------------- und das bei 8MHz Internal RC. Bei einem Crystal mit 16- MHz währen das 500Hz Zu erwähnen sei das die Software PWM immer noch im 8-Bit Modus läuft. Bei 7- Bit wurde sich die Frequenz verdoppeln u.s.w
Hallo Community, die Firmware V1.3 hat bedauerlicherweise erst jetzt ihren Finale Grande Status erreicht. Es sind einige Hilfreiche Funktionen hinzugekommen und zusätzlich wurden die alten Bugs beseitigt. Die höchst wahrscheinlich endgültigen Features: ● TWI- Interface, Auto Increment ● Watchdog Überwachung ● Insgesamt 18- Frei wählbare PWM- Kanäle 16x Kanal (8-Bit) Software PWM, Variable Auflösung 2-8 Bit @ 8MHz Internal RC and 8- Bit Resolution = 128- 250Hz PWM- Frequency @ 16 MHz Crystal Clock and 8- Bit Resolution = 250- 500Hz PWM- Frequency 2x Kanal 16- Bit Hardware PWM(Fast PWM), Variable Auflösung 2-16 ● 480 Byte TWI- SRAM ● 384 Byte TWI- E²PROM ● Über TWI- Bus zugängliche Hardware Einstellungen ─ TWI- Slave Adresse, Standart SLA= 0x7A ─ Clock Select Bytes Timer 1, 2 (PWM- Frequency) ─ Auflösung 16- Bit PWM(ICR1) ─ Auflösung 8-Bit Software PWM ─ Interruptzeit für Software PWM(!) ● Alle Hardware Einstellungen lassen sich im EEPROM über einen einzigen Befehl abspeichern. ─ „Power Up Load“ gespeicherte PWM – Werte ;----------------------------------------------------------------------- --------------------- 1) Im Anhang sind die neuen Hex und EEP- Dateien. 2) Die Bedienungsanleitung wurde aktualisiert. 3) Und das Programm PAP wurde entsprechend FW. 1.3 geändert. Das PAP für TWI- Programm ist gleich geblieben. Weiterere PAP’s werden im laufe der Zeit erstellt. 4) Eine EXCEL Tabelle zur errechnung der Software- PWM gibt’s jetzt Auch noch dazu. ;----------------------------------------------------------------------- --------------------- Viel spaß damit
Hallo, ein weiteres Update wurde durchgeführt. Es sind keine sicherheitsrelevanten Veränderungen getroffen worden. Neues: 1)Die Firmware Version kann jetzt ausgelesen werden. Ein Beispiel zum auslesen der FW. Version ist im Bereich CMD- Beispiele vorhanden. Die Manual wurde etwas vereinfacht. Die EEPROM- Datei bleibt dieselbe wie bei Version 1.3 Die HEX- Datei steigt auf Version 1.4 auf. Gruß GTF
Hallo Alex, Tolles Projekt! ich würde das Ganze gerne ausprobieren. Verstehe ich das richtig, dass ich "PWM_18_V1.4_.hex" auf den "PWM-Atmega" flashen muss und diesen dann per I2C mit einem weiteren steuern kann? Grüße Alex
hallo, mir gefällt das projekt grundsätzlich sehr gut. wäre es möglich den source code online zu stellen? danke
@alex l schönes pwm-projekt. ich hätte da noch vllt eine kleine anregung (ich hab mir das projekt in der gänze noch nicht angeschaut). und zwar würde ich vllt wenn noch 2-4 pins frei sind im startup diese abfragen und daraus eine alternative sla-adresse generieren (z.b. 0x70,0x72,0x74,0x76,...). hat den vorteil das man mit mehreren atmegas an einem twi-bus ein vielfaches von 18-pwm-kanälen (und ein vielfaches des sram und eeprom bereiches) nutzen kann. gruß rene
Alex G. schrieb: > Hallo Alex, > > Tolles Projekt! > ich würde das Ganze gerne ausprobieren. > > Verstehe ich das richtig, dass ich "PWM_18_V1.4_.hex" auf den > "PWM-Atmega" flashen muss und diesen dann per I2C mit einem weiteren > steuern kann? > > Grüße > Alex Hi Alex G. Es müssen beide Dateien PWM_18_V1.4_.hex und m8_def_config_EEP.hex geflash werden! Die EEPROM- Datei beinhaltet die Konfigurations- Parameter unter anderem SLA. ;XXXXXXXXXXXXXXX @ delicious cake Der Source wurde in einem meiner Posts reingestellt. Doch diese Firmware wird nicht mehr weiter entwickelt! Ich habe da eine neue Version ohne TWI- EEPROM, und mit nur noch 190 Byte SRAM. Die Firmware wurde neu aufgelegt und die Geschwindigkeit nochmal optimiert. Bei bestehender Interesse wird diese hochgeladen.
Rene Böllhoff schrieb: > @alex l > > schönes pwm-projekt. > ich hätte da noch vllt eine kleine anregung (ich hab mir das projekt in > der gänze noch nicht angeschaut). und zwar würde ich vllt wenn noch 2-4 > pins frei sind im startup diese abfragen und daraus eine alternative > sla-adresse generieren (z.b. 0x70,0x72,0x74,0x76,...). hat den vorteil > das man mit mehreren atmegas an einem twi-bus ein vielfaches von > 18-pwm-kanälen (und ein vielfaches des sram und eeprom bereiches) nutzen > kann. > > gruß > rene Hallo Rene, ist zwar eine tolle Idee von dir, doch leider wurden alle bis auf den letzten Pin verbraucht. Um eine derartige Funktion umzusetzen müsste mindestens ein Kanal wegfallen. Doch die Slaveadresse lässt sich in der Software ändern, und im EEPROM abspeichern. Notfalls kannst die EEPROM Datei in AVR- Studio laden und den Wert 0x7A unter Adresse 0x15(SLA) zu einem beliebigen Wert ändern Gruß gtf
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Hallo Community, ich möchte euch mitteilen dass an dieser Firmware nicht mehr weitergearbeitet wird. Die Firmware wurde eingestellt, weil der Code aus meiner Sicht nicht gut genug war! Die gute Nachricht ist, dass ich an einem weiteren Code gearbeitet habe der all die Kinderkrankheiten der Vorgänderversion ausbügelt. Die wichtigsten Register haben immer noch dieselbe Pointeradresse! Für die neue Firmware wurde ein neuer Thread eröffnet. Link: http://www.mikrocontroller.net/topic/159658#1516760 An den Administrator wurde eine Nachricht versendet, mit der Bitte diesen Thread zu löschen. Mit freundlichen Grüßen Gtf
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.