Commit 6028f1c3 authored by Tobias Theobald's avatar Tobias Theobald

Initial commit

parents
*.hex
*.o
AVR_CHIP = atmega32u4
AVR_CHIP_FREQUENCY = 16000000
CODE_MAIN = helloworld
AVR_PROGRAMMER = dfu-programmer
AVR_COMPILER = avr-gcc
AVR_HEX = avr-objcopy
all: $(CODE_MAIN).hex
%.o: %.c
$(AVR_COMPILER) -DF_CPU=$(AVR_CHIP_FREQUENCY) -Os -mmcu=$(AVR_CHIP) -o $@ $<
%.hex: %.o
$(AVR_HEX) -O ihex $< $@
.phony flash: $(CODE_MAIN).hex
sudo $(AVR_PROGRAMMER) $(AVR_CHIP) erase
sudo $(AVR_PROGRAMMER) $(AVR_CHIP) flash $<
sudo $(AVR_PROGRAMMER) $(AVR_CHIP) start ; true
benötigte Pakete: avr-gcc avr-binutils avr-libc dfu-programmer.
Wenn es erfolgreich angeschlossen ist liefert
$ lsusb
einen "Atmel Corp. atmega32u4 DFU bootloader". Dann kann mit
$ make
$ make flash
das Programm gebaut und geflasht werden.
Achtung: Zum ersten flashen muss manuell der folgende Befehl ausgeführt werden:
$ sudo dfu-programmer atmega32u4 erase --force
dann funktioniert make flash erst.
#include <avr/io.h>
#include <util/delay.h>
#include <avr/power.h>
#include <avr/interrupt.h>
int main() {
// internen clock teiler deaktivieren
clock_prescale_set(clock_div_1);
sei(); // set interrupts
DDRE |= (1 << PE6); // pin 6 von port E als output schalten
while(1) { // endlosschleife fürs blinken
PORTE |= (1 << PE6); // pin 6 von port E auf high schalten
_delay_ms(150); // warte 150ms
PORTE &= ~(1 << PE6); // pin 6 von port E auf low schalten
_delay_ms(150); // warte 150ms
}
return 0;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment