Hallo zusammen,
ich hab mir vor kurzem einen Asuro zugelegt. Der Zusammenbau, das flashen usw. hatt alles problemlos funktioniert. Aber je mehr Programme ich schreib, desto verrückter werd ich. Ich verwende zum Programmieren Programmers Notepad 2 so wie in der Anleitung beschrieben. Nur, selbst wenn Programmers Notepad keine Fehler noch Warnungen, ausgibt, macht der Asuro manchmal einfahc was er will. Manchmal überspricht er einfach manche Programmschleifen und springt einfach weiter zur nächsten. So wie beim folgenden Programm die erste Schleife übersprungen wird:
Die zweite Schleife funktioniert auch erst wie durch ein Wunder durch hinzufügen von spritnf und serwrite. Kann mir jemand sagen was ich falsch mach?Code:#include "asuro.h" #include <stdio.h> unsigned char colo = FALSE; unsigned char zahl[5]; int i = 0; int main(void) { int zaehler = 0; unsigned int data[2], licht; Init(); licht = 5; data[0] = 0; MotorDir(FWD, FWD); MotorSpeed(102, 95); //Motoren laufen unterschiedlich ODOMETRIE_LED_ON; StatusLED(RED); while(1) { DDRC &= ~((1 << PC0) | (1 << PC1)); // Input => no break LED ADMUX = (1 << REFS0) | WHEEL_RIGHT; // AVCC reference with external capacitor ADCSRA |= (1 << ADSC); // Start conversion while (!(ADCSRA & (1 << ADIF))); // wait for conversion complete ADCSRA |= (1 << ADIF); // clear ADCIF data[1] = ADCL + (ADCH << 8); licht += data[1]; data[0]++; if(data[0] > 50) break; } StatusLED(GREEN); licht = licht / 50; MotorSpeed(0, 0); for(i = 0; i < 600; i++) Sleep(255); MotorSpeed(100, 100); while(zaehler < 126){ ADMUX = (1 << REFS0) | WHEEL_RIGHT; // AVCC reference with external capacitor ADCSRA |= (1 << ADSC); // Start conversion while (!(ADCSRA & (1 << ADIF))); // wait for conversion complete ADCSRA |= (1 << ADIF); // clear ADCIF data[1] = ADCL + (ADCH << 8); if((data[1] < licht) && (colo == FALSE)) { colo = TRUE; zaehler = zaehler + 1; } else colo = FALSE; sprintf(zahl, "%d\n", data[1]); SerWrite(zahl, 5); } StatusLED(RED); MotorSpeed(0, 0); while(1); return 0; }
MfG Neo







Zitieren
Komischerweise beachtet er aber die 2. Schleife.

Lesezeichen