Difference between revisions of "Compile a program for attiny13"

From ThorstensHome
Jump to: navigation, search
Line 36: Line 36:
int main(void)
int main(void)
   DDRB = 8; // PB3 will be sender, all other ports receiver
   DDRB = 8; // PB3 will be output, all others input
   while (1)
   while (1)

Revision as of 20:16, 12 January 2013

This is a description how to compile a program, beep.hex in this example, for the attiny13 processor. It is based on SUSE 12.2. Other distributions may work similar.


Set up the compile environment

  • install cross-avr-binutils
yast -i cross-avr-binutils
mkdir /cross
  • link the files to the respective places
ln -s /usr/bin/avr-as /cross/as
ln -s /usr/bin/avr-ld /cross/ld
  • tell the system to use these
export PATH=/cross:$PATH

Understand the ATtiny13

The ATtiny13 is a processor. Its pins have the following meaning:

       PB1-|  13  |-PB4
       PB2-|      |-PB3
       VCC-|     o|-RES

There are 5 binary pins PB: PB0 till PB4. Then there is a pin to reset the processor, one voltage ground and one power supply (voltage common cathode VCC).


Here is my program for an ATtiny13 to beep with a frequency of 500Hz:


#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>

int main(void)
  DDRB = 8; // PB3 will be output, all others input
  while (1)
    PORTB = 8;
    PORTB = 0;
  return 0;


CFLAGS=-g -mmcu=$(MCU) -Os

all: beep.hex

beep.hex : beep.o 
	$(OBJCOPY) -R .eeprom -O ihex beep.o beep.hex 
beep.o : beep.c 
	$(CC) $(CFLAGS) -Os -o beep.o beep.c
	rm -f *.hex *.o


To compile and link your software beep.hex issue the statement


And you will get a file beep.hex

Next step

Next step is to upload the file beep.hex to the ATtiny13, see attiny13.