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; |
} |