Mały, prosty sterownik krokowca pod AVR
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 20
- Posty: 1242
- Rejestracja: 15 lis 2009, 02:46
- Lokalizacja: Olsztyn
- Kontakt:
Re: Mały, prosty sterownik krokowca pod AVR
Nie dziwo, że nie działa. Inne rejestry.
To jeszcze opisz z grubsza swój program, jak wcześniej sugerowałem.
To jeszcze opisz z grubsza swój program, jak wcześniej sugerowałem.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 27
- Posty: 2224
- Rejestracja: 17 wrz 2018, 10:47
- Lokalizacja: Wrocław
- Kontakt:
Re: Mały, prosty sterownik krokowca pod AVR
I tu jest pies pogrzebany. ATmega2560 ma inne piny.
Rejestry powinny mieć taką samą nazwę, ale licznik jest tu (OC1B/PCINT6) PB6
Dodane 2 minuty 31 sekundy:
-
- Lider FORUM (min. 2000)
- Posty w temacie: 22
- Posty: 2437
- Rejestracja: 29 lis 2015, 00:38
- Lokalizacja: Bielsko-Biała
Re: Mały, prosty sterownik krokowca pod AVR
tomcat65 pisze:-pozbyłbym się wszystkich zmiennych typu float. AVRy nie mają koprocesora matematycznego. Co prawda kompilator sobie z tym poradzi, ale generuje bardzo długi kod.
Tu sie nie zgodzę. Ta funkcja wykonywana jest bardzo rzadko, w większości przypadków tylko raz. Mikrooptymalizacje mają sens tylko w przypadku funkcji wywoływanych często, tutaj bym akurat zostawił jak jest ze względu na wygodę użytkowania.
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 20
- Posty: 1242
- Rejestracja: 15 lis 2009, 02:46
- Lokalizacja: Olsztyn
- Kontakt:
Re: Mały, prosty sterownik krokowca pod AVR
Akurat w tym przypadku będzie wywoływana często. Jeśli czujniki są odczytywane co 0,8s i wpływają, a wpływają, na regulację obrotów, to w ciągu godziny funkcja będzie użyta jakieś 4 tyś razy.
Wszystko zależy od algorytmu przetwarzającego odczyty na prędkość.
Zasadne byłoby wprowadzenie porównywania poprzedniego odczytu z nowym.
Wszystko zależy od algorytmu przetwarzającego odczyty na prędkość.
Zasadne byłoby wprowadzenie porównywania poprzedniego odczytu z nowym.
-
Autor tematu - Lider FORUM (min. 2000)
- Posty w temacie: 21
- Posty: 6354
- Rejestracja: 29 kwie 2009, 10:11
- Lokalizacja: Kraków / Jaworzno / Kopanka
Re: Mały, prosty sterownik krokowca pod AVR
Termometry pracują non-stop, ale już nie wpływają co 1s na krokowca.
Proces ma kilka etapów - pompka pracuje ze stałą prędkością, zmienianą
nie częściej niż pół godziny, nawet nie.
q
Dodane 7 minuty 19 sekundy:
a zmieniam tylko "OCR1A = licznik;" na "OC1B = licznik"?
Przyznaje, że takich zapisów nie rozumiem ;(
q
Proces ma kilka etapów - pompka pracuje ze stałą prędkością, zmienianą
nie częściej niż pół godziny, nawet nie.
q
Dodane 7 minuty 19 sekundy:
Czy dobrze rozumiem, ze sygnał STEP będzie nadal na pinie 10 (np)
a zmieniam tylko "OCR1A = licznik;" na "OC1B = licznik"?
Przyznaje, że takich zapisów nie rozumiem ;(
q
„Największym wrogiem wolności jest najedzony niewolnik.”
-
- Lider FORUM (min. 2000)
- Posty w temacie: 22
- Posty: 2437
- Rejestracja: 29 lis 2015, 00:38
- Lokalizacja: Bielsko-Biała
Re: Mały, prosty sterownik krokowca pod AVR

Jak widzisz piny PB5 i PB6 to na medze odpowiednio piny odpowiednio 11 i 12. Jeśli chcesz mieć wyjście na pin 11 to wpisujesz OC1A i PCINT5, a jeśli na 12 to OC1B i PCINT6 - masz to nawet ładnie opisane na obrazku.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 27
- Posty: 2224
- Rejestracja: 17 wrz 2018, 10:47
- Lokalizacja: Wrocław
- Kontakt:
Re: Mały, prosty sterownik krokowca pod AVR
OCR1A i OCR1B to nazwy rejestrów, które są podpięte pod różne piny na różnych procesorach. Masz je w kodzie programu. Odkomentuj jeden z nich i ustaw przypisany do niego port na OUTPUT.oprawcafotografii pisze: ↑19 sty 2020, 08:31Czy dobrze rozumiem, ze sygnał STEP będzie nadal na pinie 10 (np)
a zmieniam tylko "OCR1A = licznik;" na "OC1B = licznik"?
Przyznaje, że takich zapisów nie rozumiem ;(
q
Mapa przypisania jest na rysunku. Numery wyjść cyfrowych są na różowo. Numery liczników na biało.
A PB5 to numer bitu w rejestrze B, który bezpośrednio kontroluje ten pin. Tu z tego nie korzystamy, podobnie jak z PCINT (przerwania).
pinMode (11, OUTPUT); //wyjście licznika OC1A
//pinMode (12, OUTPUT); //wyjście licznika OC1B
TCCR1A |= (1 << COM1A0); // tryb portu A (toggle). Pin 11
//TCCR1A |= (1 << COM1B0); // tryb portu B (toggle). Pin 12
Dodane 27 minuty 33 sekundy:
Jeszcze jedno. W trybie CTC obydwa porty korzystają z jednego licznika OC1A. Tej linijki nie zmieniamy.
-
Autor tematu - Lider FORUM (min. 2000)
- Posty w temacie: 21
- Posty: 6354
- Rejestracja: 29 kwie 2009, 10:11
- Lokalizacja: Kraków / Jaworzno / Kopanka
Re: Mały, prosty sterownik krokowca pod AVR
Działa! Wielkie dzięki 
1Hz:
https://photos.app.goo.gl/AyUeE2FGMWPrRbY59
800Hz:
https://photos.app.goo.gl/qA3XjuoawWEZYpu96
296Hz: (najczęściej u mnie):
https://photos.app.goo.gl/dMHvnVwy3mURdDAz5
Później wgram to w urządzenie i sprawdzę czy "gra i koliduje"
q

1Hz:
https://photos.app.goo.gl/AyUeE2FGMWPrRbY59
800Hz:
https://photos.app.goo.gl/qA3XjuoawWEZYpu96
296Hz: (najczęściej u mnie):
https://photos.app.goo.gl/dMHvnVwy3mURdDAz5
Później wgram to w urządzenie i sprawdzę czy "gra i koliduje"

q
„Największym wrogiem wolności jest najedzony niewolnik.”
-
Autor tematu - Lider FORUM (min. 2000)
- Posty w temacie: 21
- Posty: 6354
- Rejestracja: 29 kwie 2009, 10:11
- Lokalizacja: Kraków / Jaworzno / Kopanka
Re: Mały, prosty sterownik krokowca pod AVR
Śmiga
Cokolwiek układ w głównej pętli robi, silnik kręci się idealnie 
Wielkie dzięki za pomoc!
Nadal nie rozumiem, kodu ale nie szkodzi
q


Wielkie dzięki za pomoc!
Nadal nie rozumiem, kodu ale nie szkodzi

q
„Największym wrogiem wolności jest najedzony niewolnik.”