DiJo Opublikowano 17 Maja 2008 Zgłoś Opublikowano 17 Maja 2008 (edytowane) czesc programuje atmege i pojawil mi sie pewien drobny problem... niewiem jak sprawić, aby zmienna sie zwiekszyła o 1 :| Ja począku pliku są zadeklarowane dwie zmienne: char steps_x = 1, steps_y = 1; i kawałek dalej funkcja /* * Silnik lewo-prawo (na poprzeczce) * dir = -1 krok w lewo * dir = 1 krok w prawo */void engine_x_step(int dir) { //static int steps_x = 1; uart_putchar((steps_x%8) + 'a'); if (steps_x % 8 == 0) { PORTA = _BV(0) | _BV(1); } else if (steps_x % 8 == 1) { PORTA = _BV(0) | _BV(1) | _BV(3) | _BV(4); } else if (steps_x % 8 == 2) { PORTA = _BV(3) | _BV(4); } else if (steps_x % 8 == 3) { PORTA = _BV(3) | _BV(4) | _BV(0) | _BV(2); } else if (steps_x % 8 == 4) { PORTA = _BV(0) | _BV(2); } else if (steps_x % 8 == 5) { PORTA = _BV(0) | _BV(2) | _BV(3) | _BV(5); } else if (steps_x % 8 == 6) { PORTA = _BV(3) | _BV(5); } else if (steps_x % 8 == 7) { PORTA = _BV(3) | _BV(5) | _BV(0) | _BV(1); } else { uart_putchar('1'); } if (dir == 1) { steps_x += 1; } else { steps_x -= 1; } //if (delay_x < engine_timeout_x) { _delay_us(engine_timeout_x); delay_y += engine_timeout_x; delay_x = 0; //}}chodzi dokladnie o 5 linijek przed ostatnim if. Zamiast char, było już int, było też static int w funkcji, było ++ zamiast += i efekt zawsze taki sam :| Po zmienieniu PORTA=blablabla na set_pin i skompilowaniu na komputerze działa dobrze w każdej wersji. Co może być jeszcze nie tak? :| Procesorek atmega162, kompilator avr-gcc -- edit -- dobra, juz wiem ;) nie dzialaja zmienne globalne Edytowane 17 Maja 2008 przez DiJo Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 18 Maja 2008 Zgłoś Opublikowano 18 Maja 2008 swoją drogą inkrementację o jeden można tez zrobić zmienna++ :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...