hey
is mir schon fast peinlich: bei folgendem code werden beide
for-schleifen nie ausgeführt, code größe ist 76 byte.
1 | while(1)
|
2 | {
|
3 | wait();
|
4 | for(uint16_t i = 0;i<65535;i++);
|
5 | PORTD = ~PORTD;
|
6 | }
|
7 |
|
8 | void wait()
|
9 | {
|
10 | for(uint16_t i = 0;i<65535;i++){}
|
11 | }
|
wenn ich den funktionsaufruf auskommentiere, steigt die codegröße auf 96
byte. wtf? im simulator springt er zwar in die funktion, führt aber die
schleife nicht aus, genau so wie die schleife in der main.
kompletter code:
testprojekt.c
1 | #include "testprojekt.h"
|
2 | #include "std_fkt.h"
|
3 |
|
4 | int main()
|
5 | {
|
6 | DDRD = 0xFF;
|
7 | PORTD = 0x01;
|
8 | while(1)
|
9 | {
|
10 | wait();
|
11 | for(uint16_t i = 0;i<65535;i++);
|
12 | PORTD = ~PORTD;
|
13 | }
|
14 | }
|
std_fkt.c
1 | #include "testprojekt.h"
|
2 | #include "std_fkt.h"
|
3 |
|
4 | void wait()
|
5 | {
|
6 | for(uint16_t i = 0;i<65535;i++);
|
7 | }
|
testprojekt.h
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 |
|
4 | #define F_CPU 1000000
|