Hi,
Ich probier grad mit nem RS2 Servo vom großen C rum (am Atmega 8515).
1 | #include <avr/io.h>
|
2 |
|
3 | int main()
|
4 | {
|
5 | DDRB = (1 << PD5 );
|
6 | TCCR1A = (1<<COM1A1) | (1<<WGM11);
|
7 | TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS01);
|
8 | ICR1 = 0x1200;
|
9 | OCR1A = 0x0295;
|
10 | while( 1 )
|
11 | ;
|
12 | }
|
Des funktioniert auch gut soweit
wenn ich aber OCR1A aus einer anderen Funktion heraus ändern möchte
fährt der servo an den Anschlag im Uhrzeigersinn.
1 | #include <avr/io.h>
|
2 |
|
3 | uint16_t servostellung;
|
4 |
|
5 | void servopos()
|
6 | {
|
7 | servostellung = 0x046C;
|
8 | }
|
9 |
|
10 | int main()
|
11 | {
|
12 | DDRB = (1 << PD5 );
|
13 | TCCR1A = (1<<COM1A1) | (1<<WGM11);
|
14 | TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS01);
|
15 | ICR1 = 0x1200;
|
16 | OCR1A = servostellung;
|
17 | while( 1 )
|
18 | {
|
19 | servopos();
|
20 | }
|
21 | }
|
Woran liegt das bzw. was ist mein Fehler?
Bouni