Witam
Normalnie już nie mogę znaleźć przyczyny więc pisze posta.
Podłączyłem sobie silnik DC do mostka H steruje atmegą wszystko działa ok. Tylko jedna funkcja którą sobie zrobiłem do zmiany PWM nie działa poprawnie. Oto kod.
main.c
silnik.h
silnik.c
Wszystko rozchodzi się o funkcję void setPWM(unsigned int pwm)
Jak ustawie pwm ręcznie na 1023 -> PWM = 1023;
to działa dobrze
Jak użyje funkcji setPWM(100) to powinno mi wpisać do rejestru OCR1A właśnie 1023 a wpisuje na pewno mniej bo silnik kręci się o wiele wolniej.
Jak wywołam:
setPWM(125);
To silnik kręci się w przybliżeniu z podobną prędkością co przy ustawieniu PWM = 1023;
Jak wywołam
setPWM(130);
To silnik się już nie kręci.
No ale przecież jak podstawi się do wzoru
PWM = (pwm * 1023)/100 ;
PWM = (100 * 1023) /100 to powinno wyjść 1023, a jest na pewno mniej
Normalnie już nie mogę znaleźć przyczyny więc pisze posta.
Podłączyłem sobie silnik DC do mostka H steruje atmegą wszystko działa ok. Tylko jedna funkcja którą sobie zrobiłem do zmiany PWM nie działa poprawnie. Oto kod.
main.c
Kod: C / C++
silnik.h
Kod: C / C++
silnik.c
Kod: C / C++
Wszystko rozchodzi się o funkcję void setPWM(unsigned int pwm)
Jak ustawie pwm ręcznie na 1023 -> PWM = 1023;
to działa dobrze
Jak użyje funkcji setPWM(100) to powinno mi wpisać do rejestru OCR1A właśnie 1023 a wpisuje na pewno mniej bo silnik kręci się o wiele wolniej.
Jak wywołam:
setPWM(125);
To silnik kręci się w przybliżeniu z podobną prędkością co przy ustawieniu PWM = 1023;
Jak wywołam
setPWM(130);
To silnik się już nie kręci.
No ale przecież jak podstawi się do wzoru
PWM = (pwm * 1023)/100 ;
PWM = (100 * 1023) /100 to powinno wyjść 1023, a jest na pewno mniej
