Code:
#define vli_on (PORTC|=IO_PD5)
#define vli_off (PORTC&=~IO_PD5)
#define vlm_on (PORTC |= IO_PC2)
#define vlm_off (PORTC &= ~IO_PC2)
#define vla_on (PORTC|=IO_PC3)
#define vla_off (PORTC&=~IO_PC3)
#define vri_on (PORTC|=IO_PC5)
#define vri_off (PORTC&=~IO_PC5)
#define vrm_on (PORTC|=IO_PC7)
#define vrm_off (PORTC&=~IO_PC7)
#define vra_on (PORTC |= IO_PD6)
#define vra_off (PORTC &= ~IO_PD6)
uint8_t vli, vlm, vla, vri, vrm, vra; // Positionen der Servos
uint8_t i;
/*****************************************************************************/
// Main function - The program starts here:
void delay(uint8_t d)
{
uint16_t d1, dummy;
for (d1=d*255; d1>0; d1--) dummy^=d1;
}
int16_t main(void)
{
initRP6Control();
initLCD();
writeString_P("\n\nRP6 CONTROL M32 I2C Master Example Program!\n");
writeString_P("\nMoving...\n");
// ---------------------------------------
WDT_setRequestHandler(watchDogRequest);
BUMPERS_setStateChangedHandler(bumpersStateChanged);
ACS_setStateChangedHandler(acsStateChanged);
BATTERY_setLowVoltageHandler(batteryVoltageLow);
// ---------------------------------------
I2CTWI_initMaster(100);
I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady);
I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
sound(180,80,25);
sound(220,80,25);
setLEDs(0b1111);
showScreenLCD("################", "################");
mSleep(500);
showScreenLCD("I2C-Master", "Behaviours");
mSleep(1000);
setLEDs(0b0000);
// ---------------------------------------
// Setup ACS power:
I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_ACS_POWER, ACS_PWR_HIGH);
// Enable Watchdog for Interrupt requests:
I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT, true);
// Enable timed watchdog requests:
I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT_RQ, true);
startStopwatch1();
startStopwatch2();
startStopwatch4();
showScreenLCD("Active Behaviour", "");
cli();
TCCR1B = (0 << WGM00) | (1 << WGM01); // CTC-Mode
TCCR1B |= (0 << COM00) | (0 << COM01); // ohne OCR-Pin
TCCR1B |= (0 << CS02) | (1 << CS01) | (0 << CS00); // prescaler /8
TIMSK = (1 << OCIE0); // Interrupt ein
OCR1A = 9; // 100kHz?
DDRD |= IO_PD5; // SERVO_OUT -> OUTPUT
PORTD &= ~IO_PD5; // SERVO_OUT -> LOW
DDRD |= IO_PC2; // SERVO_OUT -> OUTPUT
PORTD &= ~IO_PC2; // SERVO_OUT -> LOW
DDRD |= IO_PC3; // SERVO_OUT -> OUTPUT
PORTD &= ~IO_PC3; // SERVO_OUT -> LOW
DDRD |= IO_PC5; // SERVO_OUT -> OUTPUT
PORTD &= ~IO_PC5; // SERVO_OUT -> LOW
DDRD |= IO_PC7; // SERVO_OUT -> OUTPUT
PORTD &= ~IO_PC7; // SERVO_OUT -> LOW
DDRD |= IO_PD6; // SERVO_OUT -> OUTPUT
PORTD &= ~IO_PD6; // SERVO_OUT -> LOW
vli=vlm=vla=vri=vrm=vra=100;
sei();
while(true)
{
uint8_t key = getPressedKeyNumber();
// This function returns a 0 if no key is pressed and
// the key number from 1 to 5 otherwise.
if(key) // If a key is pressed... (key != 0)
{
// ... we update the values
// on the LCD display:
switch(key)
{
case 1:
break;
case 2:
break;
}
}
//behaviourController();
task_LCDHeartbeat();
task_checkINT0();
task_I2CTWI();
vri=120;delay(20);
vli=80;delay(20);
vra=120;delay(20);
vla=80;delay(20);
}
return 0;
}
ISR (TIMER1_COMP_vect)
{
static uint16_t count=1; // Servoansteuerung
(count>vli)?vli_off:vli_on;
(count>vlm)?vlm_off:vlm_on;
(count>vla)?vla_off:vla_on;
(count>vri)?vri_off:vri_on;
(count>vrm)?vrm_off:vrm_on;
(count>vra)?vra_off:vra_on;
if(count<2000) count++; else count=0;
}
bei dem Code kriege ich volgenden Fehler:
Compiling: RP6Control_10_Move2.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Control_10_Move2.lst -I../../RP6lib -I../../RP6lib/RP6control -I../../RP6lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Control_10_Move2.o.d RP6Control_10_Move2.c -o RP6Control_10_Move2.o
RP6Control_10_Move2.c:1010: warning: 'TIMER1_COMP_vect' appears to be a misspelled signal handler
und die Beine bewegen sich nicht.
DIV blenderkid
Lesezeichen