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.