Mahlzeit Radbruch,
Danke für den Code - ich habe dein Programm geflasht, leider ohne Erfolg.
Mein angepasster Code:
Code:
#include <avr/io.h> // I/O Port definitions
//#include <avr/interrupt.h> // Interrupt macros (für cli)
#define servo1_port PORTB
#define servo1_ddr DDRB
#define servo1_pin PB5
#define servo2_port PORTB
#define servo2_ddr DDRB
#define servo2_pin PB6
#define servo3_port PORTB
#define servo3_ddr DDRB
#define servo3_pin PB7
#define servo1_on servo1_port |= 1<<servo1_pin
#define servo2_on servo2_port |= 1<<servo2_pin
#define servo3_on servo3_port |= 1<<servo3_pin
#define servo1_off servo1_port &= ~(1<<servo1_pin)
#define servo2_off servo2_port &= ~(1<<servo2_pin)
#define servo3_off servo3_port &= ~(1<<servo3_pin)
uint16_t i, stellzeit, dummy;
int main(void)
{
servo1_ddr |= 1<<servo1_pin; // Pins als Ausgang definieren
servo2_ddr |= 1<<servo2_pin;
servo3_ddr |= 1<<servo3_pin;
servo1_off; // und auf low schalten
servo2_off;
servo3_off;
//cli(); // keine Störungen erlauben
while(1) // solange Saft im Akku...
{
stellzeit=100; // 100 mal den Impuls senden
while(stellzeit--)
{
servo1_on; // Impuls für erstes Servo erzeugen
for(i=0; i<500; i++) dummy^=i;
servo1_off;
servo2_on; // Impuls für zweites Servo erzeugen
for(i=0; i<500; i++) dummy^=i;
servo2_off;
servo3_on; // Impuls für drittes Servo erzeugen
for(i=0; i<500; i++) dummy^=i;
servo3_off;
for(i=0; i<20000; i++) dummy^=i; // Impulspause
}
stellzeit=100;
while(stellzeit--)
{
servo1_on;
for(i=0; i<2500; i++) dummy^=i;
servo1_off;
servo2_on;
for(i=0; i<2500; i++) dummy^=i;
servo2_off;
servo3_on;
for(i=0; i<2500; i++) dummy^=i;
servo2_off;
for(i=0; i<20000; i++) dummy^=i;
}
}
return(0);
}
Das Blinkprogramm von gestern hat ja gepasst - damit müsste eigentlich auch der Prozessortakt passen, oder?
Lesezeichen