igendel icon

Untitled

igendel | PRO | 12/27/17 09:50:27 AM UTC | 0 ⭐ | 897 👁️ | Never ⏰ | []
C |

850 B

|

None

|

0 👍

/

0 👎

/*
    Rudolph the red nosed reindeer breathing LED
    Atmel Studio 7 C Code for the PCBWay Christmas 2017 surprise kit 
    (ATtiny85, 128KHz internal oscillator)
    Share and enjoy!
*/
 
// This must be at most 254
#define PWM_STEPS 64U
 
#define F_CPU 32000UL
 
#include <avr/io.h>
#include <util/delay.h>
 
void setup(void) {
    
    // Rudolph's nose is on PB0
    DDRB = 1;
    // Set clock prescaler 1:4
    // Unlock...
    CLKPR = (1 << CLKPCE);
    // Set
    CLKPR = 2;
    
}
 
void pwmCycle(uint8_t onTime) {
    
    uint8_t offTime = PWM_STEPS - onTime;
    while (offTime--) {
        PORTB &= ~1;
    }
    while (onTime--) {
        PORTB |= 1;
    }
    
}
 
 
int main(void)
{
    uint8_t x = 0;
 
    setup();
    
    while (1) {
        
        for (x = 0; x < PWM_STEPS; ++x) {
            pwmCycle(x);
        } 
 
        for (--x; x < PWM_STEPS; --x) {
            pwmCycle(x);
        }
        
        _delay_ms(1000);
        
    }
}

Comments