Hm also ich hab jetzt nochmal mein Programm auf das wesentlich wichtige beschränkt:
Code:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include "port.h"
int main(void)
{
    DDRB=0xFF;
    while(1)
    {
        _delay_ms(100);
        toogle_pin(PORTB,PB0);
    }
    return 0;
}
was von GCC wie folgt übersetzt wird:
Code:
    .file    "main.c"
__SREG__ = 0x3f
__SP_H__ = 0x3e
__SP_L__ = 0x3d
__CCP__ = 0x34
__tmp_reg__ = 0
__zero_reg__ = 1
    .text
.global    main
    .type    main, @function
main:
/* prologue: function */
/* frame size = 0 */
/* stack size = 0 */
.L__stack_usage = 0
    ldi r24,lo8(-1)
    out 55-32,r24
    ldi r25,lo8(1)
.L2:
     ldi r18,lo8(159999)
    ldi r19,hi8(159999)
    ldi r20,hlo8(159999)
    1:subi r18,1
    sbci r19,0
    sbci r20,0
    brne 1b
    rjmp .
    nop
    in r24,56-32
    eor r24,r25
    out 56-32,r24
    rjmp .L2
    .size    main, .-main
Und erstaunlicherweise funktionierd.
Ich hab keine Ahnung woran es lag, aber jetzt schein alles zu funktionieren.
Auch sachen ala
Code:
for(uint8_t i=0;i<10;i++) _delay_ms(100);
gehen plötzlich.
Obwohl ich schwören könnte vorher alles richtig gemacht zu haben.