Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 20 gru 2024, o 17:58


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 9 paź 2016, o 17:40 
Offline
Nowy

Dołączył(a): 09 paź 2016
Posty: 1
Pomógł: 0

Witam,

Usiłuję z płytki arduino pro mini z mikroprocesorem atmega328p zrobić uniwersalny sterownik silników krokowych z regulowaną częstotliwością przełączania za pomocą potencjometru od 0 do 1000 Hz.
Potrafię tak zaprogramować na konkretną częstotliwość lub żeby sie zmieniała w ograniczonym zakresie (wykorzystując przerwania) i wtedy działa. Albo z ograniczoną rozdzielczością przełączania (początkowe wartości fajnie się dzielą przez 2 później już gorzej) jednak mnie interesuje pełna rozdzielczość (1,2,3,456,789,998,999 itp.).
Po nieudanych eksperymentach z próbą regulacji w przerwaniu (przerwanie działało, regulacja już nie) spróbowałem zrobić licznik do liczby 8000000 przy założeniu że częstotliwość taktowania procesora wynosi 8000000Hz. Wtedy czas przełączania wynosiłby idealnie 1 sekundę o ile sie nie myle xd a 8000000 fajnie by sie dzieliło przez 2 żeby potem elegancko uzyskać kolejne częstotliwości przełączania w kierunku 1000Hz. Niestety, albo diody śmigają za szybko albo za wolno.
Zacząłem podejżewać iż procesor atmega328p nie przechowuje tak dużych liczb i dlatego poprawne jej porównanie w liczniku nie jest możliwe więc próbowałem rodzdzielić ten licznik na dwie części tj. licznik w liczniku ale to też niewiele dało... diody świecą się cały czas.

Program piszę w eclipsie a wgrywam mkAVRcalculatorem (częstotliwość taktowania 8kHz zaznaczona w fusebitach) korzystając z USBasp.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Cytuj:
#define F_CPU 8000000UL <--- tego NIGDY nie pisze się w kodzie


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


zdjęcie:
Obrazek

No i to w sumie tyle. Bardzo proszę kogokolwiek o konstruktywną krytykę i pomoc w rozwiązaniu problemu (bądź też podanie innego działającego sposobu).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2016, o 17:47 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

Zapamiętaj sobie raz na zawsze jedną rzecz:

#define F_CPU 8000000UL

TEGO BADZIEWIA NIGDY NIE PISZE się w kodzie programu ... i moja gorąca prośba - jeśli już będziesz się upierał przy tym to przynajmniej jak będziesz wklejał swoje kody na to forum to wywalaj to z kodu ok ? A później błędów szukaj sam ... albo

... albo obejrzyj dokładnie to:


_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2016, o 19:51 
Offline
Użytkownik

Dołączył(a): 09 paź 2016
Posty: 71
Lokalizacja: Olsztyn
Pomógł: 1

Witam.
Pierwszy to mój post na tym forum.
Nie wnikam w kod - za długi :), ale funkcje ISR piszemy na początku.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2016, o 20:42 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

tomcat65 napisał(a):
ale funkcje ISR piszemy na początku.


Zdecydowanie wolę na początku główną funkcję main() dla porządku. A ISR() po niej albo w ogóle w osobnym pliku

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO