Forum: Mikrocontroller und Digitale Elektronik Atmel SamE70 PWM gleichzeitige Ausgabe auf PWMH0 und PWML0 möglich?


von Michael H. (sortersam)


Lesenswert?

Ich möchte mit dem SAM-E70 eine RGB-LED per PWM steuern. Dafür sten mir 
die Pins PD11 (PWMC0_PWMH0), PD24 (PWMC0_PWML0) und PD26 (PWMC0_PWML2) 
zur Verfügung.
Probleme habe ich bei der Ansteuerung der Pins PD11 und PD24. Diese 
scheinen nicht getrennt voneinander zu arbeiten.

Hier der SourceCode-ausschnitt im PWM0_Handler:
1
  m_PwmChannelLed.channel = PIN_PWM_LEDG_CHANNEL;
2
  m_PwmChannelLed.output_selection.b_override_pwml=false;
3
  m_PwmChannelLed.output_selection.b_override_pwmh=true;
4
  m_PwmChannelLed.output_selection.override_level_pwml=PWM_HIGH;
5
  m_PwmChannelLed.output_selection.override_level_pwmh=PWM_HIGH;
6
  pwm_channel_update_output(PWM0, &m_PwmChannelLed,&m_PwmChannelLed.output_selection,false);
7
  pwm_channel_update_duty(PWM0, &m_PwmChannelLed, ~s_Color_g & 0xff);
8
    
9
  m_PwmChannelLed.channel = PIN_PWM_LEDB_CHANNEL;
10
  m_PwmChannelLed.output_selection.b_override_pwml=true;
11
  m_PwmChannelLed.output_selection.b_override_pwmh=false;
12
  m_PwmChannelLed.output_selection.override_level_pwml=PWM_HIGH;
13
  m_PwmChannelLed.output_selection.override_level_pwmh=PWM_HIGH;
14
    
15
  pwm_channel_update_duty(PWM0, &m_PwmChannelLed, ~s_Color_b & 0xff);
16
  pwm_channel_update_output(PWM0, &m_PwmChannelLed,&m_PwmChannelLed.output_selection,false);

Meine Vermutung ist, dass ich was mit der Verwendung der 
"Output_selection"-Struct falsch mache, finde aber den Fehler nicht.

Ich hoffe ich habe mein Problem einigermaßen verständlich beschrieben.

von Marco H. (damarco)


Lesenswert?

Hi und Low werden durch den Pwm Channel gesteuert und das invertiert. 
Mit Override wird der Wert vom Pwm Controller überschrieben.

Weitere Möglichkeiten kann man der Referenz entnehmen. In dieser ist 
auch der Sachverhalt klar erkennbar.

von Michael H. (sortersam)


Lesenswert?

Danke für die Antwort.
Habe jetzt doch noch einen passenden freien Pin gefunden.

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.