PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM - einmal normal, einmal invertiert ausgeben



Ozzy
03.01.2008, 14:40
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

askazo
03.01.2008, 14:54
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

the_playstat
03.01.2008, 14:56
Oder ein NAND-Logic-IC.

Besserwessi
03.01.2008, 14:57
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.