Forum: Projekte & Code 18- Kanal PWM Controller TWI(IIC)Interface FW. V.3


von Alex M. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Community,
ich möchte Euch meine neue Firmware vorstellen.

Demovideo: http://www.youtube.com/watch?v=-x_dNv0tyAg


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
@ 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
● 186 Byte SRAM für eigene Datenspeicherung
● Über TWI- Bus zugängliche und veränderbare Hardware Einstellungen
─ TWI- Slave Adresse, Standart SLA= 0x7A
─ Clock Select Bytes Timer 1, 2 (PWM- Frequency)
─ Auflösung 16- Bit PWM
─ Auflösung 8-Bit Software PWM
─ Alle Hardware Einstellungen lassen sich im EEPROM
über einen einzigen Befehl abspeichern.
─ Alle PWM- Kanalwerte lassen sich im EEPROM
über einen einzigen Befehl abspeichern.
─ „Preload- Funktion“ für gespeicherte PWM- Kanalwerte


Mit freundlichen Grüßen
Gtf

von Manni (Gast)


Lesenswert?

Alles schön dokumentiert vom H/W und S/W Entwickler. Doch:

1) Was macht das Ding für den Nutzer wirklich? Den ersten Satz den ich 
im PDF Manual lese, heißt:

"In dieser Tabelle kann man sehen welche Register zu welchen Gruppen 
gehören.
Dies ist von Bedeutung wenn die Befehle 0x3A, 0x3B ausgeführt werden."

Damit kann ein Nutzer nicht viel anfangen.

2) Wo ist der Source Code?

Vielleicht reichst du das noch nach, damit auch wir was damit anfangen 
können und wieder was dazu lernen können.

Gruß
Manni

von Alex M. (Gast)


Lesenswert?

Hallo Manni,
eine durchaus berechtigte Frage von dir, was das Ding macht?
Was du mit damit anstellst ist voll und ganz deine Entscheidung :- ) .

Ich habe diese Firmware(PWM18) in einem Modellauto eingesetzt wo die
ganze Beleuchtung mit PWM- Signalen gesteuert wurde. Zwei Scheinwerfer, 
vier Blinker,
zwei Bremsleuchten, Rückwertsgang und Innenlicht.
Für all das habe ich 11- PWM Kanäle gebraucht. Ein üblicher AVR µC hat 
nun mal keine 18- PWM Ausgänge.


Die Firmware hat keine definierte Bestimmung in irgendeiner Schaltung
eine und dieselbe Funktion auszuführen.

Die Firmware erzeugt nun mal 18-PWM Kanäle und wird am IIC- Bus 
angebunden.
Dementsprechend wird ein Master zur Ansteuerung benötigt.

Bei der Entwicklung wollte ich nicht irgendeinen Codeschnipsel 
schreiben, sondern eine komplette Blackbox (IC) zu entwickeln die ohne 
weitere Codeanpassungen betriebsbereit ist.

Was die Manual angeht da haste vollkommen recht, für mich ist diese zwar 
total klar und verständlich, aber für Außenstehende wahrscheinlich doch 
nicht so ganz :- )
Irgendwie krieg ich den Bogen nicht raus. Was könnte ich anders machen 
um diese noch attraktiver zu gestalten?

Ein weiteres Demovideo2 Welleneffekt
http://www.youtube.com/watch?v=b9uOKFne1uc

von Vorname N. (tys)


Lesenswert?

Also, ich hab die etwas ältere Version aufgebaut und war schwer 
begeistert von Funktion und der Dokumentation. Wirklich gut!

von Alex M. (Gast)


Lesenswert?

@ Vorname Nachname
Danke für die Blumen :- )
Die ältere Version hat an sich auch gut funktioniert. Leider kam es 
gelegentlich vor, dass die Slaveadresse aus dem EEPROM verschwand, aus 
welchen Grund auch immer. Und dies ist äußerst ärgerlich, wenn der Chip 
in einer Schaltung steckt und keine ISP- Schnittstelle vorhanden ist.Von 
daher habe ich die Routine zum ändern der Slaveadesse etwas sicherer 
gemacht. Und zusätzlich wurde die Software PWM Interruptzeit reduziert 
als auch der TWI- Driver umfangreich überarbeitet. Dass währen die 
größten Veränderungen.



Gruß
gtf

von Alex M. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Community,
hab da mal was zur Firmware Vorgeschichte.
Technisch bedingt darf ich nur einen Interrupt im gesamten Programm
ausführen. Dieses Interrupt ist für den Timer in CTC- Modus reserviert.
Der Timer erzeugt die Software PWM.
Daraus entstand das Problem dass die TWI- Schnittstelle ohne Interrupt
auskommen musste.
Trotz der hohen Geschwindigkeit innerhalb der Main treten gelegentlich
Kommunikationsfehler auf.
Um einen Überblick über die Kommunikationsfehler zu verschaffen habe ich
eine kleine BENCHMARK bzw. ausgeführt.

Zu Testaufbau:
;---------------------
IIC- Teilnehmer:
Master Controller: m168
IIC- LCD- Display (Dient zur Statusausgabe)
IIC- RTC Bausteil ( hat nichts mit der Benchmark zutun)
IIC- Matrix Key ( Ist für die Menüführung zuständig)
IIC- PWM18 Controller @8MHz internal RC( Testgerät)

Benchmark Testkonditionen:
;-------------------------
 IIC: BUS Frequenz: 100KHz
 Es werden 21Byte mit einer Wiederholfrequenz von 10Hz übertragen. Dabei
Zählt der Master alle gesendeten Pakete als auch alle Fehlversuche.
Die Fehlversuche geben eine Auskunft wie viele Pakete beim Slave nicht
eintreffen konnten.

Eine Mögliche Fehlerquelle für die Auftretenden Kommunikationsfehler
könnte mein Testaufbau sein. Im Testaufbau werden sämtliche IIC-
Teilnehmer über 3,5mm Kopfhörerstecker Verbunden(ist mir peinlich) ;- )

Die Ergebnisse können auch im Anhang betrachtet werden.
;-------------------
Das Ergebnis:
;-------------------
Gesendete Pakete: 20595
Nicht eingetroffene Pakete:  28
Prozentualer Verlust: 0,136%
Felercodes: 0x20, andere Fehlercodes wurden nicht registriert.
Datasheet Code 0x20: SLA+W has been transmitted; NOT ACK has been
received




Also ich kann mit dem Ergebnis leben :- )

Wünsche Euch noch einen schönen Abend.
Gruß
gtf

von Helmut H. (der_andere)


Lesenswert?

Hallo Alex,
tolles Projekt und gute Erklärung.

Klar, dass man nicht auf Anhieb alles versteht, aber beim Ausprobieren 
merkt man doch wie toll und easy das Teil ist.

Respekt und danke für`s teilen.

von Alex M. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Community,
eine neue Version der PWM 18 Firmware Version 7 ist fertig geworden.

Diese Firmwareversion ist quasi der kleine Bruder der Version 3. Die 
dritte
Version erlaubt es sämtliche Parameter im EEPROM- Speicher zu sichern, 
und
im Einschaltmoment wieder zu laden(preload).
Diese Version(7) besitzt keine EEPROM- Speichermöglichkeiten.

Somit wurden der Code und die Anleitung noch paar Kilo leichter :- )

Dadurch dass die EEPROM Speicherfunktionen weggefallen sind, ist die 
EEPROM Programmierung überflüssig geworden.

In Anhang ist eine ZipDatei mit den Flashdateien für ATMEGA8.
Die Dateien weisen auf die Firmwareversion und die IIC-Slaveadresse hin.
Beispiel: PWM18_V7_SLA_0x0A.HEX

Viel spaß damit.

MFG
gtf

von Alex M. (Gast)


Lesenswert?

Helmut Holm schrieb:
> Hallo Alex,
> tolles Projekt und gute Erklärung.
>
> Klar, dass man nicht auf Anhieb alles versteht, aber beim Ausprobieren
> merkt man doch wie toll und easy das Teil ist.
>
> Respekt und danke für`s teilen.


Danke Helmut,
es freut mich, wenn jemand davon nutzen hat.

Gruß
Alex

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.