Code geändert auf:
Da gehts auch schon los ^^Code:#include "asuro.h" void LocalInit(void) { // Change Oscillator-frequency of Timer 2 // to 40kHz, no toggling of IO-pin: TCCR2 = (1 << WGM21) | (1 << CS20); OCR2 = 0x64; // 40kHz @8MHz crystal ADCSRA = 0x00; // ADC off // Analog comparator: ACSR = 0x02; // Generate interrupt on falling edge ADMUX = 0x03; // Multiplexer for comparator to // ADC pin 3 SFIOR |= (1 << ACME); // Enable muliplexing of comparator DDRD &= ~(1 << 6); // Port D Pin 6 is input! } void Ping(unsigned char length) { count72kHz = 0; TCCR2 = (1 << WGM21) | (1 << COM20) | (1 << CS20); // Toggling of IO-Pin on // generate the Chirp while(count72kHz < length) { OCR2 = 0x64 + length / 2 - count72kHz; } TCCR2 = (1 << WGM21) | (1 << CS20); // Toggling of IO-Pin off OCR2 = 0x64; // set frequency to 40kHz } int main(void) { int pos, i; int posmarker; Init(); LocalInit(); while(TRUE) { posmarker = 0; Ping(20); for(pos = 0; pos < 100; pos++) { Sleep(10); if((ACSR & (1 << ACI)) != 0) { if(posmarker == 0) { posmarker = pos; } } ACSR |= (1 << ACI); } if(posmarker < 15) { StatusLED(GREEN); MotorDir(FWD, RWD); MotorSpeed(0, 200); for(i = 0; i<100; i++){ Sleep(200); } } else { StatusLED(RED); MotorDir(FWD, FWD); MotorSpeed(200, 200); } } return 0; }
Anstatts das sich beide Räder vorwäts drehen, dreht sich nur das rechte rückwärts. Dabei ist ja garnix vor dem US-Sensor und selbst wenn da etwas ist, ändert sich nix am verhalten...
Was mach ich denn falsch? Läuft das Programm denn bei jemanden?
Hat vielleicht einer einen Tipp oder ein funktionierendes Programm das ich testen kann?







Zitieren

Lesezeichen