| 0,0 → 1,96 |
| /* --------------------------------------------------------------------------- |
| * AVR Blink Demo Application |
| * www.mlab.cz miho 2008 |
| * --------------------------------------------------------------------------- |
| * Demo program for AVR processors |
| * Simple blinking application for ATtiny13/ATmega8 and similar |
| * --------------------------------------------------------------------------- |
| * 00.00 2008/04/18 First Version |
| * --------------------------------------------------------------------------- |
| */ |
| |
| |
| // Configuration |
| // ------------- |
| |
| |
| // Define LED port here |
| // Use port available on all devices with no conflict with ISP port |
| #define LED B |
| #define LED_BIT 3 |
| |
| |
| // Define CPU clock frequency here |
| // Do not forget to set Clock Oscillator in Low Fuse |
| // Select just one |
| //#define F_CPU 1000000UL // Frequency in Hz |
| #define F_CPU F_CPU_DEFAULT // Default internal RC clock frequency |
| //#define F_CPU F_CPU_MAX // Maximum internal RC clock frequency |
| |
| |
| // Define blink period |
| #define PERIOD 5000 // in ms |
| #define DUTY 20 // in % |
| |
| |
| // End of Configuration |
| // -------------------- |
| |
| |
| // Helpers |
| #define GLUE(a,b) a##b |
| #define PORT(a) GLUE(PORT,a) |
| #define PIN(a) GLUE(PIN,a) |
| #define DDR(a) GLUE(DDR,a) |
| |
| |
| // Port definitions |
| #define LED_PORT PORT(LED) |
| #define LED_DDR DDR(LED) |
| |
| |
| // Processor definitions |
| #include <avr/io.h> |
| |
| |
| // Define clock values for selected processors |
| |
| // ATtiny13 |
| #if _AVR_IOTN13_H_ |
| #define F_CPU_DEFAULT 1200000UL // Default clock 9.6MHz/8 |
| #define F_CPU_MAX 9600000UL // Maximal internal clock |
| #endif |
| |
| // ATmega8/16/32/64 |
| #if _AVR_IOM8_H_ | _AVR_IOM16_H_ | _AVR_IOM32_H_ | _AVR_IOM64_H_ \ |
| | _AVR_IOM88_H_ |
| #define F_CPU_DEFAULT 1000000UL // Default clock 1MHz |
| #define F_CPU_MAX 8000000UL // Maximal internal clock |
| #endif |
| |
| |
| // Use delay library |
| #include <util/delay.h> |
| |
| |
| // Define ON and OFF times on PERIOD and DUTY |
| #define TIME_ON (1L*PERIOD*DUTY/100) |
| #define TIME_OFF (1L*PERIOD*(100-DUTY)/100) |
| |
| |
| // Main program |
| int main() |
| { |
| |
| LED_DDR |=1<<LED_BIT; // Set LED port as output |
| |
| for(;;) // Never ending story |
| { |
| LED_PORT |= 1<<LED_BIT; // Set LED port to 1 |
| _delay_ms(TIME_ON); // Wait |
| LED_PORT &= ~(1<<LED_BIT); // Clear LED port to 0 |
| _delay_ms(TIME_OFF); // Wait |
| } |
| |
| return 0; |
| } |