Hallo, ich habe folgendenBeim Compilieren gibt er mir folgende Errors:Code:// Die Anoden der rechten IR-LEDs hängen mit Vorwiderstand an PA0 (X1-AN0) // Die Anoden der linken IR-LEDs hängen mit Vorwiderstand an PA1 (X1-AN1) // Die Kathoden beider IR-LEDs sind mit PA3 (X3-AN3) verbunden // Der IR-Empfänger ist mit PA2 (X2-AN2) verbunden #define ddr_acs_led_l DDRA // Anoden der IR-LEDs links #define port_acs_led_l PORTA #define pin_acs_led_l (1<<PA1) #define ddr_acs_led_r DDRA // rechts #define port_acs_led_r PORTA #define pin_acs_led_r (1<<PA0) #define ddr_acs_36kHz DDRA // Kathoden der IR-LEDS mit 36kHz getaktet #define port_acs_36kHz PORTA #define pin_acs_36kHz (1<<PA3) #define ddr_acs_tsop DDRA // Eingang IR-Empfänger #define port_acs_tsop PINA // Achtung, das ist ein Eingang! #define pin_acs_tsop (1<<PA2) #include <nibobee/iodefs.h> #include <nibobee/led.h> #include <nibobee/motpwm.h> #include <nibobee/sens.h> volatile uint8_t count36kHz; volatile uint8_t acs=0; void Sleep(uint8_t pause); void Msleep(uint16_t pause); void ACSData(uint16_t *data); int main(void) { uint16_t data[2]; // Speicher für ACS-Werte led_init(); motpwm_init(); sens_init(); while(1==1) { // Setup Timer2 TCCR2 = (1 << WGM20)|(1 << CS20); // PhaseCorrect-PWM, no prescaling, no OC2-Pin! TCNT2 = 96; // (512-416) 36kHz @15MHz OCR2 = 151; // (255-(208/2)) 151 ist 50:50 Compare Match für symetrische Halbwellen TIMSK |= (1 << OCIE2)|(1 << TOIE2); // Comp und OVF-ISR enable, Overflow bei Bottum! enable_interrupts(); ddr_acs_led_l |= pin_acs_led_l; // die Anoden der IR-LEDs port_acs_led_l &= ~pin_acs_led_l; ddr_acs_led_r |= pin_acs_led_r; port_acs_led_r &= ~pin_acs_led_r; ddr_acs_36kHz |= pin_acs_36kHz; // die Kathoden der IR-LEDs led_set(0,1); Msleep(2000); // wait4programmer led_set(0,0); while(1) {enable_interrupts(); int16_t speed_l=0; int16_t speed_r=0; motpwm_setLeft(speed_l); motpwm_setRight(speed_r); ACSData(data); PORTB &= ~15; // alle Leds aus if(data[0] > 251) speed_l = 500; else if(data[0] > 230) speed_l = 800; if(data[1] > 251) speed_r = 500; else if(data[1] > 230) speed_r = 800; Msleep(100); } return(0); } ISR (TIMER2_COMP_vect) { port_acs_36kHz ^= pin_acs_36kHz; // IR-LEDs togglen } // Frequenzkorrektur für 36kHz (512-416 plus 3 Takte fürs Laden von TCNT2?) ISR (TIMER2_OVF_vect) { TCNT2 += 99; // += bewirkt, dass schon erfolgte Zähltakte nicht ignoriert werden! port_acs_36kHz &= ~pin_acs_36kHz; // bei Nulldurchgang soll die IR-LED aus sein! //port_acs_36kHz |= pin_acs_36kHz; // seltamerweise funktioniert das auch? if(count36kHz) count36kHz--; if(acs) acs--; } void Sleep(uint8_t pause) // 1/36000 Pause blockierend { count36kHz=pause; while(count36kHz); } void Msleep(uint16_t pause) // 1/1000 Pause blockierend { while(pause--) Sleep(36); } void ACSData(uint16_t *data) { OCR2=253; port_acs_led_l |= pin_acs_led_l; // ACS LED left on while((port_acs_tsop & pin_acs_tsop) && (OCR2 > 151)) { acs=10; // Impulse senden, acs wird in OVF-ISR runtergezählt while(acs); OCR2--; } port_acs_led_l &= ~pin_acs_led_l; // ACS LED left off data[0]=OCR2; while(!(port_acs_tsop & pin_acs_tsop)); // warten bis keine Echo mehr OCR2=253; port_acs_led_r |= pin_acs_led_r; // ACS LED right on while((port_acs_tsop & pin_acs_tsop) && (OCR2 > 151)) { acs=10; while(acs); OCR2--; } port_acs_led_r &= ~pin_acs_led_r; // ACS LED right off data[1]=OCR2; while(!(port_acs_tsop & pin_acs_tsop)); }
-static declaration of '__vector_3' follows non-static declaration
-previous declaration of '__vector_3' was here
-static declaration of '__vector_4' follows non-static declaration
-previous declaration of '__vector_4' was here
-expected declaration or statement at end of input
das ganze bezieht sich auf diesen Teil:Code:ISR (TIMER2_COMP_vect) { port_acs_36kHz ^= pin_acs_36kHz; // IR-LEDs togglen } // Frequenzkorrektur für 36kHz (512-416 plus 3 Takte fürs Laden von TCNT2?) ISR (TIMER2_OVF_vect) {TCNT2 += 99; // += bewirkt, dass schon erfolgte Zähltakte nicht ignoriert werden! port_acs_36kHz &= ~pin_acs_36kHz; // bei Nulldurchgang soll die IR-LED aus sein! //port_acs_36kHz |= pin_acs_36kHz; // seltamerweise funktioniert das auch? if(count36kHz) count36kHz--; if(acs) acs--;}







Zitieren


Lesezeichen