Zbudowałem sterownik silnika krokowego na parze L297 i L298.Steruje sie to standardowo sygnałem DIR-kierunek, ENABLE-załączenie silnika,H/L -praca krok półkrok, CLK -impulsy zegarowe sterujące szybkością pracy krokowca. Sterownik działa , wypróbowany na generatorku NE555 jest OK. Przyszedł czas na sterowanie tego z procka.Sama baza zbudowana jest z 5 przycisków , wyświetlacz LCD i oczywiście procka AtTiny2313.Dwa klawisze sterują szybciej / wolniej, jeden start, jeden stop i jeden mam na razie nie skonfigurowany. Z obsługą klawiatury sobie radzę tylko mam problem z generowaniem sygnału CLK.
To znaczy ja go generuje na zasadzie zmiany czasu trwania stanu wysokiego oraz niskiego na konkretnym pinie komendą WAITMS oraz TOGGLE. Przykładowo wkleję kawałek kodu dotyczący właśnie tej procedury zmiany częstotliwości tych impulsów
Jak inaczej podejść do tematu generowania przebiegu kwadratowego na konkretnym pinie aby można potem nad nim zapanować. O co mi chodzi, mianowicie obecnie ustawiam tą częstotliwość , niby silnik kręci działa, widzę te ms na wyświetlaczu jest OK. Ale gdybym chciał aby silnik powiedzmy przesunął coś w konkretnym czasie albo na konkretną odległość(urządzenie ma przesuwać wózek z aparatem foto tzw slider fotograficzny), potem np. postał minutę i znowu wykonał podobny interwał czasowy, to z tego mojego kodu raczej nic nie wyduszę. Jak mi sie wydaje , trzeba będzie zaprzęgnąć TIMERY do kontroli a może nawet jakieś przerwania ale w tym to jestem na obecny czas zielony z lekka.Może na początek , jak wygenerować przebieg kwadratu nie używając procedury WAITMS i Toggle. Wiem o nie stabilności procedury WAITMS i to że moje np 40ms wcale nie jest akurat dokładnie 40milisekundami.Na zakończenie napiszę, że mój obecny programik jest bardziej rozbudowany o deklaracje zmiennych i resztę konfiguracji LCD i klawiszy.Obecnie po włączeniu ustawiam wstępny czas i naciskam start, silnik rusza i mogę nadal go korygować wolniej szybciej oraz go zatrzymać na hamulcu magnetycznym.Chodzi mi głównie o przebieg CLK i kontrolę nad tym przebiegiem.Gdy kod będzie zbyt obszerny dla 2313 zawsze mogę przeskoczyć na Atmega 8.
To znaczy ja go generuje na zasadzie zmiany czasu trwania stanu wysokiego oraz niskiego na konkretnym pinie komendą WAITMS oraz TOGGLE. Przykładowo wkleję kawałek kodu dotyczący właśnie tej procedury zmiany częstotliwości tych impulsów
A=30
If Pinb.0 = 0 Then A = A + 1 'Zmiana CLK podczas pracy + 1ms po naciśnieciu przycisku 1
If Pinb.1 = 0 Then A = A - 1 'Zmiana CLK podczas pracy - 1ms po naciśnieciu przycisku 2
If Pinb.2 = 0 Then A = 40 'Szybkie ustawienie CLK na 40ms podczas pracy po naciśnieciu przycisku 3
If Pinb.4 = 0 Then Tryb = 0 'Stop CLK silnik w hamulcu magnetycznym po nacisnieciu przycisku 5
'Zmiana czasow
Waitms A
Portd.6 = 1
Waitms A
Toggle Portd.6
Locate 1 , 4 'Ustaw kursor w 1 wierszu i 1 kolumnie wyświetlacza
Lcd A
Locate 2 , 1 'Ustaw kursor w 1 wierszu i 1 kolumnie wyświetlacza
Lcd " milisekund "
Jak inaczej podejść do tematu generowania przebiegu kwadratowego na konkretnym pinie aby można potem nad nim zapanować. O co mi chodzi, mianowicie obecnie ustawiam tą częstotliwość , niby silnik kręci działa, widzę te ms na wyświetlaczu jest OK. Ale gdybym chciał aby silnik powiedzmy przesunął coś w konkretnym czasie albo na konkretną odległość(urządzenie ma przesuwać wózek z aparatem foto tzw slider fotograficzny), potem np. postał minutę i znowu wykonał podobny interwał czasowy, to z tego mojego kodu raczej nic nie wyduszę. Jak mi sie wydaje , trzeba będzie zaprzęgnąć TIMERY do kontroli a może nawet jakieś przerwania ale w tym to jestem na obecny czas zielony z lekka.Może na początek , jak wygenerować przebieg kwadratu nie używając procedury WAITMS i Toggle. Wiem o nie stabilności procedury WAITMS i to że moje np 40ms wcale nie jest akurat dokładnie 40milisekundami.Na zakończenie napiszę, że mój obecny programik jest bardziej rozbudowany o deklaracje zmiennych i resztę konfiguracji LCD i klawiszy.Obecnie po włączeniu ustawiam wstępny czas i naciskam start, silnik rusza i mogę nadal go korygować wolniej szybciej oraz go zatrzymać na hamulcu magnetycznym.Chodzi mi głównie o przebieg CLK i kontrolę nad tym przebiegiem.Gdy kod będzie zbyt obszerny dla 2313 zawsze mogę przeskoczyć na Atmega 8.
