-
-
Erfahrener Benutzer
Begeisterter Techniker
PWM - einmal normal, einmal invertiert ausgeben
Hi,
ich arbeite gerade an einem kleinen Projekt auf einem ATMega128, welches ich jetzt aber auf einen ATMega16 portieren möchte. Nur der PWM breitet mit Kopfschmerzen. Beim 128 lade ich einen Wert in den OCR1A als TOP-Wert (Mode 15), und schreibe in OCR1B den Wert für das Tastverhältnis, so dass dann das PWM-Signal beim OC1B-Pin rauskommt.
Zusätzlich konfiguriere ich den OC1C-Pin genau andersherum als den OC1B-Pin, wodurch ich hier ein invertiertes PWM-Signal bekomme.
Problem ist nur: beim ATMega16 finde ich keinen OC1C-Pin. Geht diese Methode dann überhaupt? Oder muss man das ganz anders lösen?
mfG, Ozzy
-
Erfahrener Benutzer
Roboter Genie
Tja, irgendwo muss man bei dem kleineren Prozessor ja sparen. Der Mega16 hat nun mal nur 2 Vergleichsregister für den Timer 1, von daher funktioniert Deine Methode so nicht mehr.
Einfachste Lösung:
An OC1B einen discret aufgebauten Inverter hängen (ein FET + 1 Widerstand), und schon hast Du auch ein invertiertes PWM-Signal.
Es muss ja nicht immer alles der Prozessor machen...
askazo
-
Erfahrener Benutzer
Roboter-Spezialist
-
Erfahrener Benutzer
Robotik Visionär
So wie ich das sehe, fehlt bei Mega16 der invertierte PWM Ausgang. OC1A und OC1B haben im PWM Mode immer das gleiche Vorzeichen. Wenn nur um ein invertiertes Rechtecksignal signal geht, kriegt man ein invertiertes Signal hin, wenn man den "toogle" mode verwendet und einen Kanal einmal per Software triggert.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen