Thalhammer: Ok, dann gehen wir das jetzt Mal ganz systematisch an. Zuerst einmal wird die IDE ausgenockt.
Anbei dein Minimalcode, leicht modifiziert so dass anstelle der Makros direkt auf die Portregister zugegriffen wird, und ein Shellscript zum Bauen des ganzen. Beides abspeichern, Shellscript ausführbar machen und ausführen. Du kannst die Variable F_CPU im Skript variieren und kontrollieren ob sich dann das .hex-File und das .lss-File ändern. (Tun sie bei mir).
main.c
Code:
#include <avr/io.h>
#include <util/delay.h>
int main()
{
DDRB=0xFF;
while(1)
{
_delay_ms(100);
PORTB ^= (1 << PB0);
}
}
build.sh
Code:
#!/bin/bash
F_CPU=8000000UL
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 "-DF_CPU=$F_CPU" -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "main.c"
avr-gcc -Wl,-Map,main.map -mmcu=atmega8 -o "main.elf" ./main.o
avr-objdump -h -S main.elf > "main.lss"
avr-objcopy -R .eeprom -O ihex main.elf "main.hex"
Lesezeichen