Skocz do zawartości

[C] Problem z void...


NouName

Pomocna odpowiedź

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

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

Gość
Ten temat został zamknięty.
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.