Forum: Mikrocontroller und Digitale Elektronik Phasenverschiebung


von Fabian (Gast)


Lesenswert?

Hallo, ich habe ein Problem mit der Programmierung meines ATmega8. Ich
möchte die drei Timerausgängen OC1A, OC1B und OC2 um 120° voneinander
versetzt haben und ein Puls-Pausen-Verhältnis von 50% haben. Ich möchte
damit nämlich einen Wechselrichter ansteuern der mir ein
3-Phasenwechselstrom erzeugt. Ich habe es schon geschafft OC1A und OC1B
um 120° zu verschieben, aber ich denke das es noch besser geht. Wäre um
Hilfe sehr dankbar.
Hier mein Programm, das ich schon habe:


$Regfile = "m8def.dat"
'ATmega8-Deklarationen
$Crystal = 3686400
'Quarz:3,6864 MHz

Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output


TCCR1A = &B01010000
TCCR1B = &B00001010
TCCR2  = &B00010100
Config TIMER2 = PWM , Compare PWM = Clear Down , Prescale = 1

PWM1A = 11
PWM1B = 3
PWM2 = 127


Do
Loop
End

von Rage (Gast)


Lesenswert?

oc1 ist ein 16-bit timer und oc2 ein 8-bit timer. hast du das
berücksichtigt?

von Fabian (Gast)


Lesenswert?

Hat keiner ne Idee. Ich habe bis jetzt folgendes:

$Regfile = "m8def.dat"
'ATmega8-Deklarationen
$Crystal = 3686400                                          'Quarz:
3,6864 MHz

Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output

Config TIMER1 = PWM , PWM = 8 , Compare A PWM = Clear Up , Compare B
PWM = Clear Up , Prescale = 1
Config TIMER2 = PWM , Compare PWM = Clear Down , Prescale = 1

DO
  PWM1a = 127
  PWM1b = 127
  Ocr2 = 127
Loop
End

Damit habe ich 3 gleiche Signale, aber wie kann ich die
Phasenverschiebung hinbekommen?

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.