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.
Lesezeichen