Forum: Projekte & Code PWM- Controller 18- Kanal TWI- Bus Proj.


von Alex M. (Gast)


Angehängte Dateien:

Lesenswert?

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 :- )

von Alex M. (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Alex M. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
 die Firmware gibts jetzt in Version 1.1
Es wurden neue Befehle hinzugefügt.
Zusätzlich wurde die Beschreibung gründlich überarbeitet.

von Alex M. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Alex M. (Gast)


Lesenswert?

;----------------------------------------------------------------------- 
---------------
;                    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

von Alex M. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Alex M. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Filth _. (filth)


Lesenswert?

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

von delicious cake (Gast)


Lesenswert?

hallo,

mir gefällt das projekt grundsätzlich sehr gut. wäre es möglich den 
source code online zu stellen?

danke

von Rene B. (themason) Benutzerseite


Lesenswert?

@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

von Alex M. (Gast)


Lesenswert?

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.

von Alex M. (Gast)


Lesenswert?

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

von Alex M. (Gast)


Lesenswert?

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
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
Noch kein Account? Hier anmelden.