63 lines
1.2 KiB
C
63 lines
1.2 KiB
C
/*
|
|
* led.c
|
|
*
|
|
* Created on: 26.07.2015
|
|
* Author: Flo
|
|
*/
|
|
|
|
#include "led.h"
|
|
|
|
// init default configuration
|
|
volatile uint8_t led_flags = LED_ACTIVE_LOW;
|
|
|
|
void led_initPorts() {
|
|
// define the following pins as OUTPUT
|
|
LED_DDR |= ((1<<LED_BLUE)|(1<<LED_RED)|(1<<LED_GREEN));
|
|
|
|
if (led_flags & LED_ACTIVE_HIGH) {
|
|
// set output state to LOW to disable all leds (leds are active high)
|
|
LED_PORT &= ~((1<<LED_BLUE)|(1<<LED_RED)|(1<<LED_GREEN));
|
|
}
|
|
if (led_flags & LED_ACTIVE_LOW) {
|
|
// set output state to HIGH to disable all leds (leds are active low)
|
|
LED_PORT |= ((1<<LED_BLUE)|(1<<LED_RED)|(1<<LED_GREEN));
|
|
}
|
|
}
|
|
|
|
void led_config(uint8_t flags) {
|
|
led_flags = flags;
|
|
}
|
|
|
|
void led_init() {
|
|
led_initPorts();
|
|
}
|
|
|
|
|
|
void led_off(uint8_t pin) {
|
|
if (led_flags & LED_ACTIVE_HIGH) cbi(LED_PORT,pin);
|
|
if (led_flags & LED_ACTIVE_LOW) sbi(LED_PORT,pin);
|
|
|
|
}
|
|
|
|
void led_on(uint8_t pin) {
|
|
if (led_flags & LED_ACTIVE_HIGH) sbi(LED_PORT,pin);
|
|
if (led_flags & LED_ACTIVE_LOW) cbi(LED_PORT,pin);
|
|
}
|
|
|
|
void led_flash(uint8_t pin) {
|
|
led_on(pin);
|
|
_delay_ms(10);
|
|
led_off(pin);
|
|
_delay_ms(140);
|
|
}
|
|
|
|
|
|
|
|
|
|
void disco(){
|
|
led_flash(LED_BLUE);
|
|
led_flash(LED_RED);
|
|
led_flash(LED_GREEN);
|
|
}
|
|
|