ich habe folgende Aufgabe. Ich muss eine PWM über eine Porterweiterung PCF874A2 an einem bestimmten PIN ausgeben. Wie PWM erzeugt wird weis ich. Da habe ich aber immer am Timerpin die PWM ausgegeben. Wie mach ich das jetzt aber über die Porterweiterung an einem anderen Port? Könnte mir da mal jemand einen Tipp geben?
ich habe folgende Aufgabe. Ich muss eine PWM über eine Porterweiterung
PCF874A2 an einem bestimmten PIN ausgeben. Wie PWM erzeugt wird weis
ich. Da habe ich aber immer am Timerpin die PWM ausgegeben. Wie mach ich
das jetzt aber über die Porterweiterung an einem anderen Port? Könnte
mir da mal jemand einen Tipp geben?
Über die Timer Interrupts. Der Timer kann nicht mehr direkt die HW steuern. Aber er kann bei erreichen des TOP Wertes (PWM Wert) und des MAX Wertes (Überlauf) einen Interrupt auslösen. Darin setzt und löscht du dann deinen Ausgang über I2C.
Alles in allem aber eine blöde Idee. Wenn dann direkt einen PWM Baustein an I2C. Denn so wird der PWM nicht besonders schnell oder schön.
zunächst vielen Dank für die Antwort.
Leider liegt die Schaltung nicht in meinen Einflussbereich.
Ich fand das ja auch nicht schön, aber da dieser Bereich galvanisch getrennt sein muss, geht es nun mal nicht anders und ich muss die Vorgaben der HW-Abteilung erst mal versuchen umzusetzen. Die Gedanken, die Sie äußerten, hatte ich auch und ich werde jetzt mal schauen was dabei rauskommt.
Nochmals vielen Dank.
Wie hoch soll denn die PWM Frequenz sein?
Bei 100kHz I2C Takt benötigt jeder Zugriff auf den 8574 mindestens 160µs, das wird also recht gemütlich.
Und falls noch weitere I2C Teilnehmer am selben Bus hängen, geht das völlig schief.
zunächst vielen Dank für die Antwort.
Leider liegt die Schaltung nicht in meinen Einflussbereich.
Ich fand das ja auch nicht schön, aber da dieser Bereich galvanisch
getrennt sein muss, geht es nun mal nicht anders und ich muss die
Vorgaben der HW-Abteilung erst mal versuchen umzusetzen.
Natürlich geht das anders. Ein zweiter µC wird anstelle des PCF874A2 via I2C angesteuert und erzeugt die PWM vor Ort.
Die offenbar vorgesehene galvanische Trennung der I2C-Schnittstelle hätte damit keine Probleme.
Was genau meinst Du mit "1 Hz PWM"?
Welche Auflösung soll die PWM haben? 8 Bit, 16 Bit?
Gab es da von NXP oder TI nicht einen Multikanal PWM LED Steuerbaustein mit I2C? Vielleicht könnte man den dazu mißbrauchen und dem Projekt unterjubeln und kann dann das PWM Signal autonom ausgeben. Weiß leider nicht mehr die Typenbezeichnung.
Aber ob der auf 1Hz runtergeht?
Evtl. kann der aber den bisherigen IO-Expander komplett ersetzen, HIGH und LOW werden dann als 0% und 100% PWM ausgegeben...
Evtl. kann der aber den bisherigen IO-Expander komplett ersetzen, HIGH
und LOW werden dann als 0% und 100% PWM ausgegeben...
Und wo ist da jetzt der Vorteil wenn er einen PCF8574 bereits drauf hat?
Du reißt einen Digital Baustein raus, machst einen PWM Baustein rein und benutzt dann den PWM Baustein als Digitalbaustein? Also da fällt mir wenig zu ein. Es geht bergab.
Hallo, das wird wohl nicht gehen,
da der PCF874A2 noch mehr schalten muss.
Einmal ein HL-Relais für Ansteuerung eines Heizelements und
dann noch ein Schutzrelais. Des weiteren noch ein Schatport.
Alles muss auch Reinforce isoliert sein zwischen MC und I2C-Baustein..
Alles muss auch Reinforce isoliert sein zwischen MC und I2C-Baustein..
Wo ist das Problem? Wenn dein I²C schon isoliert ist, kannst du auf die isolierte Seite doch auch einfach zwei oder einen anderen I²C-Portexpander hängen, ohne dass das was an der Isolation ändert.
Hallo, das wird wohl nicht gehen,
da der PCF874A2 noch mehr schalten muss.
Einmal ein HL-Relais für Ansteuerung eines Heizelements und
dann noch ein Schutzrelais. Des weiteren noch ein Schatport.
Alles muss auch Reinforce isoliert sein zwischen MC und I2C-Baustein..
Für was wird denn die 1 Hz PWM benötigt?
Ich finde das immer noch sehr langsam.
Und ignoriere bitte Ernst, der versteht nicht um was geht und tippt gerne wirres Zeug.
Mir ist schon klar dass du unnütze Fragen beantwortest die niemand gestellt hat.
Nur mit dem Anliegen des TE hat das nichts zu tun. Unterhalte dich doch mit Gerhard privat und lasse den Thread hier On-Topic.
Die PWM steuert ein HL-Relais, welches verschiedene Heizelemente
ansteuert für verschiedene Gräte.
Also eher sowas wie Wellenpaketsteuerung.
Wie gesagt: 1 Hz direkt über PCF8574 sollte locker gehen. Musst halt die SW entsprechend stricken und oft genug den I2C Zyklus fahren.
möchte den Beitrag hier zunächst beenden.
Mich interessierte, ob meine Gedanken bezüglich Timer mit IR
auch von anderen so gesehen werde. Werde mal mich an die Umsetzung machen.
Allen, die an der Diskussion teilgenommen haben, vielen Dank und ein schönes WE.
das ist mir klar. Da reichen auch 8Bit. Aber so ist nun mal die Vorgabe
vom Auftraggeber.
Das wirft weitere Fragen nach der Hardware auf...
Entweder es ist eine Wellenpaketsteuerung, mit ZeroCrossing-Detection in Hardware. Dann sind in deiner Sekunde 100 Halbwellen die du zu- oder abschalten kannst.
7 Bit würden reichen, genauer geht es eh nicht.
Oder du sollst mit deiner PWM einen Phasenanschnitt/abschnitt ansteuern. Dann geht's genauer, aber: Du solltest deine PWM mit dem Nulldurchgang synchronisieren, und eine Periodendauer von 1s macht auch keinen Sinn.