Genau, oder eben einen 8 Bit Port und 8 Widerstände vom I²C Chip "opfern", nicht elegant aber in der Not frisst der Teufel Fliegen.
Gruß Richard
Werbung
Genau, oder eben einen 8 Bit Port und 8 Widerstände vom I²C Chip "opfern", nicht elegant aber in der Not frisst der Teufel Fliegen.
Gruß Richard
Und warum dann nicht gleich einen ATMEGA 8 als PWM Quelle verwenden ?
Der kann dann die PWM Signale für die LED's erzeugen. Eventuell könnte man noch einen ULN2803 als Treiber nachschalten.
Letztlich dürfte dasauch die preiswertese Lösung sein.
Als Verbindung zwischen dem Steuercontroller und dem Dimm- Controller würde ich SPI verwenden, weil das einfacher zu handeln ist als TWI ( I²C ).
Beide Schnittstellen sind als Hardware in den ATMEGA Controllern eingebaut.
Das Protokoll kann man sich dann selber ausdenken. Also entweder alle 8 Dimmwerte nacheinander übertragen, oder ein Kanalbyte gefolgt von einem Wertbyte bei Bedarf senden.
Eine weitere Möglichkeit wäre Dich am DMX 512 Protokoll ( serielle Schnittstelle ) zu orientieren.
Dadurch wäre dann die Ansteuerung von 512 Kanälen möglich und die Dimm Controller wären auch als abgesetzte Einheit über größere Entfernungen ( mehrere Hunder Meter ) ansteuerbar.
Es gibt da also eine Menge möglicher Lösungen.
so... habe jetzt ein paar Ports der m32 frei gemacht ;-> Welche sind jetzt genau PWM-Ports (ohne software-pwm?) ? Wie kann man von da aus eine Led dimmen?
mfG
Philip
Geändert von AsuroPhilip (16.07.2011 um 19:40 Uhr)
Beim ATMEGA 8 Dil Variante sind das.
OC1A = PIN 15
OC1B = PIN 16
OC2 = PIN 17
Diese 3 Pins können als PWM arbeiten.
OC1A und OC1B laufen mit dem Timer 1
OC2 mit Timer 2
Bei einem anderen Controller nach OC Pins suchen.
Die Timer werden für den entsprechenden PWM Mode konfiguriert und die OCx Pins aktiviert und ein passender Prescaler gewählt.
Je nach dem Wert den man ins Comparematch Register schreibt kommt dann eine entsprechende Pulsweite raus.
Man kann gerade Timer 1 sehr vielseitig PWM- mässig programmieren. Vom 8Bit PWM bis 16Bit PWM ( 9 und 10Bit gehen auch soweit ich weiss ) ist da einiges möglich. Auch ein Ausgangssignal mit 50% Duty Cycle und änderbarer Frequenz.
Fast PWM solltest Du nicht machen, weil da keine Werte mit 0 ( = kein Signal ) möglich ist.
Initialisierungsstrings müsste ich jetzt zusammensuchen, da ich jetzt nicht ganz genau weiss was Du konkret brauchst hilft Dir das auch wenig.
Alles läuft dann in Hardware und benötigt deshalb keine zusätzliche Rechenleistung mehr, ausser zum Schreiben der Comparematch Register.
Danke schonmal, aber ich meinte die pins vom atmega32. Hast du ein Beispielcode?
Lesezeichen