static void debug_led_on(void)\r
{\r
#if DEBUG_IRMP_TIMER_INT\r
-# if USE_OPENCM3_API /* Using API functions: */\r
+# if USE_OPENCM3_API /* Using API functions: */\r
gpio_clear(DEBUG_LED_PORT, DEBUG_LED_PIN);\r
#else\r
GPIO_BRR(GPIOA) = GPIO2;\r
static void debug_led_off(void)\r
{\r
#if DEBUG_IRMP_TIMER_INT\r
-# if USE_OPENCM3_API /* Using API functions: */\r
+# if USE_OPENCM3_API /* Using API functions: */\r
gpio_set(DEBUG_LED_PORT, DEBUG_LED_PIN);\r
#else\r
GPIO_BSRR(GPIOA) = GPIO2;\r
#ifdef STM32F0\r
timer_frequency = rcc_apb1_frequency;\r
#else\r
- if (timer_peripheral < PERIPH_BASE_APB2)\r
+ if (timer_peripheral < PERIPH_BASE_APB2)\r
{\r
timer_frequency = rcc_apb1_frequency;\r
- } else {\r
+ } else {\r
timer_frequency = rcc_apb2_frequency;\r
}\r
#endif /* STM32F0 */\r
if (timer_frequency != rcc_ahb_frequency)\r
timer_frequency *= 2;\r
\r
- return timer_frequency;\r
+ return timer_frequency;\r
}\r
\r
/**\r
#if DEBUG_IRMP_TIMER_INT\r
/* Output pin for debugging */\r
rcc_periph_clock_enable(DEBUG_LED_PORT_RCC);\r
+ gpio_set(DEBUG_LED_PORT, DEBUG_LED_PIN);\r
gpio_set_mode(DEBUG_LED_PORT, GPIO_MODE_OUTPUT_2_MHZ,\r
GPIO_CNF_OUTPUT_PUSHPULL, DEBUG_LED_PIN);\r
#endif\r
- /* Enable timer clock. */\r
+ /* Enable timer clock. */\r
rcc_periph_clock_enable(IRSND_TICK_TIMER_RCC);\r
nvic_set_priority(NVIC_IRSND_TICK_TIMER_IRQ, 4*16);\r
- nvic_enable_irq(NVIC_IRSND_TICK_TIMER_IRQ);\r
-\r
-#if USE_OPENCM3_API /* Using API functions: */\r
-\r
- /* Timer global mode:\r
- * - No divider\r
- * - Alignment edge\r
- * - Direction up\r
- * (These are actually default values after reset, so this call\r
- * is strictly unnecessary, but demos the api for alternative settings)\r
- */\r
- timer_set_mode(IRSND_TICK_TIMER, TIM_CR1_CKD_CK_INT,\r
+ nvic_enable_irq(NVIC_IRSND_TICK_TIMER_IRQ);\r
+\r
+#if USE_OPENCM3_API /* Using API functions: */\r
+\r
+ /* Timer global mode:\r
+ * - No divider\r
+ * - Alignment edge\r
+ * - Direction up\r
+ * (These are actually default values after reset, so this call\r
+ * is strictly unnecessary, but demos the api for alternative settings)\r
+ */\r
+ timer_set_mode(IRSND_TICK_TIMER, TIM_CR1_CKD_CK_INT,\r
TIM_CR1_CMS_EDGE, TIM_CR1_DIR_UP);\r
- timer_set_period(IRSND_TICK_TIMER, timer_internal_clock_get(IRSND_TICK_TIMER) / F_INTERRUPTS - 1);\r
+ timer_set_period(IRSND_TICK_TIMER, timer_internal_clock_get(IRSND_TICK_TIMER) / F_INTERRUPTS - 1);\r
/* Enable timer update interrupt */\r
- timer_enable_irq(IRSND_TICK_TIMER, TIM_DIER_UIE);\r
- /* Counter enable. */\r
- timer_enable_counter(IRSND_TICK_TIMER);\r
+ timer_enable_irq(IRSND_TICK_TIMER, TIM_DIER_UIE);\r
+ /* Counter enable. */\r
+ timer_enable_counter(IRSND_TICK_TIMER);\r
\r
#else /* Manually */\r
\r
debug_led_on();\r
\r
/* Clear update interrupt flag. */\r
-#if USE_OPENCM3_API /* Using API functions: */\r
+#if USE_OPENCM3_API /* Using API functions: */\r
timer_clear_flag(IRSND_TICK_TIMER, TIM_SR_UIF);\r
#else\r
IRSND_TICK_TIMER_SR = ~TIM_SR_UIF;\r
irsnd_init(); // initialize irsnd\r
irsnd_tick_timer_init(); // initialize timer\r
\r
- ts = get_timer(0);\r
- while (get_timer(ts) < 200)\r
- ;\r
-\r
for (;;)\r
{\r
irmp_data.protocol = IRMP_NEC_PROTOCOL; // use NEC protocol\r
- irmp_data.address = 0x4eb1; // set address to 0x00FF\r
- irmp_data.command = 0x001e; // set command to 0x0001\r
+ irmp_data.address = 0x4eb1; // Marantz RMC-12\r
+ irmp_data.command = 0x001e; // SYSTEM 1 POWER\r
irmp_data.flags = 0; // don't repeat frame\r
ts = get_timer(0);\r
\r
led_on();\r
irsnd_send_data (&irmp_data, TRUE); // send frame, wait for completion\r
- while (irsnd_is_busy())\r
- ;\r
+ while (irsnd_is_busy()) // wait till frame is\r
+ ; // completely sent\r
led_off();\r
\r
- while (get_timer(ts) < 2000)\r
+ while (get_timer(ts) < 1000)\r
;\r
}\r
}\r