NouName Napisano Grudzień 10, 2010 Udostępnij Napisano Grudzień 10, 2010 Witam. Od niedawna zacząłem zabawę z mikrokontrolerami oraz mam do was pewne pytanie dotyczące funkcji "void". Mam oto taki kod pliku main.c #define F_CPU 8000000 #include <avr/io.h> #include <util/delay.h> #include <stdio.h> void ramie(signed short int odchyl) { PORTB ^= 0x04; _delay_us(750+odchyl); PORTB &= ~0x04; _delay_ms(20); } int main(void) { DDRB |= 0b00011111; while(1) { ramie(100); } } Chodzi tu głównie o moją stworzoną funkcje "ramie" dla serwo mechanizmu. Nie dodaje ona według mnie żadnej wartości, pomimo tego że wywołałem tę funkcje z wartością 100. Jak temu zaradzić? Link do komentarza Share on other sites More sharing options...
Marooned Grudzień 11, 2010 Udostępnij Grudzień 11, 2010 1) void to tylko informacja o braku zwracanego rezultatu, nie ma nic wspólnego z Twoim problemem (czyli nawet tytuł wątku wprowadza w błąd) 2) zwiększasz przerwę między "1" a "0" na porcie, ale nie zmieniasz przerwy między "0" a "1" - to nie jest PWM, gdyż zmieniasz za każdym razem okres 3) polecam nie używanie funkcji XOR w takim przypadku, łatwo popełnić błąd i otrzymać nie do końca to, czego byś oczekiwał (w tym prostym przypadku akurat będzie ok) Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź