Moin Leute,
ich habe follgende Funktion geschrieben um meinen Servo via PWM zu
steuern.
1 | void set_servo(int pos)
|
2 | {
|
3 | PORTB |= (1<<PB1);
|
4 | _delay_us( pos );//geht nicht
|
5 |
|
6 | //_delay_us( 1500 );//geht
|
7 | //_delay_us(serv_R);//über #define gesetzt, geht auch
|
8 |
|
9 | PORTB &= ~(1<<PB1);
|
10 | _delay_ms( 15 ); // ist nicht kritisch
|
11 | }
|
wenn ich set_servo(2000) aus der main rufe, klappt es nicht.
Beim debuggen kommt aber die 2000 in pos richtig an.
Wenn ich in der set_servo den befehl "_delay_us( 1500 );" verwende
anstatt "_delay_us( pos );" geht es
Beim flash ist mir aufgefallen das die Version mit _delay_us( pos );
viel länger dauert zu flashen als die anderen.
Liegt es an der Code optimierung (-Os) ?
Ist ein Atmega8L
Vielen Dank
MFG Alex