marcin24.07 Napisano Sierpień 16, 2011 Udostępnij Napisano Sierpień 16, 2011 Witam. Z góry przepraszam jeśli taki temat już był. Moją przygodę z programowaniem dopiero zaczynam i jestem na razie zielony z tego. Jestem modelarzem i chciałem zrobić napęd do rozjazdów i pomyślałem o serwach. Napisałem w bascomie taki program do zmiany kierunku zwrotnicy o pewien kąt: $regfile = "attiny2313.dat" $crystal = 11059200 Config Portd.5 = Output Config Portd.4 = Output Config Pind.0 = Input Config Pind.1 = Input Config Servos = 2 , Servo1 = Portd.4 , Servo2 = Portd.5 , Reload = 10 Enable Interrupts Servo(1) = 10 Servo(2) = 10 Do If Pind.0 = 0 Then Servo(1) = 10 Waitms 10 Servo(1) = 12 End If If Pind.1 = 0 Then Servo(2) = 10 Waitms 10 Servo(2) = 12 End If Loop End Problem polega na tym, że gdy podam pind.0=0 wtedy serwo(1) obróci się o pewien kąt i zostaje w tym pomożeniu dopóki pind.0=0 ale program się zagnieżdża i nie umiem już wykonać polecenia dla innych serw np. Pind.1=0. Bardzo proszę o pomoc jak to rozwiązać by po uruchomieniu np 4 serw mogłem włączyć kolejne. Pozdrawiam Link do komentarza Share on other sites More sharing options...
piotreks-89 Sierpień 16, 2011 Udostępnij Sierpień 16, 2011 Witaj! Twój problem wydaje się być prosty. Masz zakłócenia na stykach. Proszę, ten program powinien działać. Jeśli nie pisz co jest nie tak 😉 $regfile = "2313def.dat" 'w BASCOM-ie Attiny2313 ma przypisany inny plik $crystal = 11059200 Config Portd.5 = Output Config Portd.4 = Output Config Pind.0 = Input Config Pind.1 = Input Config Servos = 2 , Servo1 = Portd.4 , Servo2 = Portd.5 , Reload = 10 Enable Interrupts Servo(1) = 10 Servo(2) = 10 Do Debounce Pind.0 , 0 , Stan1 , Sub 'Odkłócanie styków Debounce Pind.1 , 0 , Stan2 , Sub 'Odkłócanie styków Loop End Stan1: Servo(1) = 10 Waitms 10 Servo(1) = 12 Return Stan2: Servo(2) = 10 Waitms 10 Servo(2) = 12 Return 1 Link do komentarza Share on other sites More sharing options...
marcin24.07 Sierpień 16, 2011 Autor tematu Udostępnij Sierpień 16, 2011 Bardzo dziękuje za pomoc. Do końca nie działało to tak jak chciałem bo serwo obróciło się o zadany kąt ale zaraz wracało do punktu początkowego ale mogłem sterować również drugim. Napisałem dodatkowe: Debounce Pind.0 , 1 , Stan3 , Sub 'Odkłócanie styków Debounce Pind.1 , 1 , Stan4 , Sub 'Odkłócanie styków I działa. Chyba, że da się to jeszcze jakoś zmienić? Pobawię się też jeszcze z tym. Link do komentarza Share on other sites More sharing options...
piotreks-89 Sierpień 17, 2011 Udostępnij Sierpień 17, 2011 Hmm... W każdym z Sub-ów usuń polecenie Return. Jeśli nadal nie będzie działać tak jak należy to dodaj opóźnienie także po przesunięciu drugiego serwa. Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
ProeXtreme Sierpień 17, 2011 Udostępnij Sierpień 17, 2011 Nie może usunąć Return, bo podprogram nie będzie wiedział kiedy skończyć pracę. 1 Link do komentarza Share on other sites More sharing options...
piotreks-89 Sierpień 17, 2011 Udostępnij Sierpień 17, 2011 W sekcji konfiguracyjnej dodaj: Config Debounce = 20 Potem w każdym z Sub-ów (przed Return-em) dodaj: Waitms 10 Powinno trybic 😅 1 Link do komentarza Share on other sites More sharing options...
marcin24.07 Sierpień 17, 2011 Autor tematu Udostępnij Sierpień 17, 2011 Przepraszam, że znów piszę wieczorem ale nie było mnie w domu. Bardzo dziękuje za pomoc. Sprawdziłem te: Config Debounce = 20 i Waitms 10 ale nie pomogło. Zostawię to tak jak jest. I tak jestem wdzięczny za pomoc bo czytałem książkę o podstawach bascoma i nie było tam takiego polecenia "Debounce" i nie wiem jak bym se poradził. Pozdrawiam Link do komentarza Share on other sites More sharing options...
piotreks-89 Sierpień 17, 2011 Udostępnij Sierpień 17, 2011 Można wiedzieć (tak z czystej ciekawości) jaki tytuł nosi ta książka? Dosyć dziwna sprawa, że nie było nic o poleceniu Debounce. Wprawdzie chodzi w nim tylko o to żeby dwa razy sprawdzić stan danego pinu. Raz i drugi po 20ms. Zaś poleceniu Config Debounce jest po to żeby ustalić czas jaki ma odczekać mikrokontroler przed kolejnym sprawdzeniem stanu pinu. 1 Link do komentarza Share on other sites More sharing options...
marcin24.07 Sierpień 17, 2011 Autor tematu Udostępnij Sierpień 17, 2011 Przepraszam, poprawiam się było to w książce bo jeszcze raz to prześledziłem. Nie wiem czemu tego nie zauważyłem, a nie było to na samym końcu książki. A książka to Piotr Górecki - Mikrokontrolery dla początkujących. Link do komentarza Share on other sites More sharing options...
piotreks-89 Sierpień 18, 2011 Udostępnij Sierpień 18, 2011 marcin24.07 też mam książkę Pana Góreckiego i pierwszy raz wzmianka o poleceniu Debounce jest na 82 stronie, 13 wiersz, 11 słowo 🤣 Uważam, że jest to najlepsza książka o mikrokontrolerach dla początkujących 😉 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »