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.