Tded Napisano Maj 5, 2012 Udostępnij Napisano Maj 5, 2012 Witam. Dlaczego jeżeli na "CzujkaP" i "CzujkaL" nie podaje stanu to "Silnikl" i Silnikp" mają stan 0, a powinny mieć 1? Z góry dzięki za pomoc. $regfile = "attiny2313.dat" $crystal = 8000000 Config Portb = Output Config Portd = Input Czujkal Alias Pind.1 Czujkap Alias Pind.2 Silnikl Alias Portb.1 Silnikp Alias Portb.3 Do If Czujkal = 1 Then Silnikl = 1 Silnikp = 0 Waitms 50 Elseif Czujkap = 1 Then Silnikl = 0 Silnikp = 1 Waitms 50 Else Silnikl = 1 Silnikp = 1 Waitms 50 End If Loop End
Tded Maj 5, 2012 Autor tematu Udostępnij Maj 5, 2012 Poprawiłem lecz niczego to nie zmieniło. $regfile = "attiny2313.dat" $crystal = 8000000 Config Portb = Output Portb = &B00000000 Config Portd = Input Portd = &B0000000 Czujkal Alias Pind.1 Czujkap Alias Pind.2 Silnikl Alias Portb.1 Silnikp Alias Portb.3 Do If Czujkal = 1 Then Silnikl = 1 Silnikp = 0 Waitms 50 Elseif Czujkap = 1 Then Silnikl = 0 Silnikp = 1 Waitms 50 Else Silnikl = 1 Silnikp = 1 Waitms 50 End If Loop End
Marcos Maj 5, 2012 Udostępnij Maj 5, 2012 Jeżeli ustawiłeś stany spoczynkowe na 0 to jeśli czujki nie dają sygnału stan na pinie wyjściowym będzie równy 0. PS.Aby przy braku sygnału uzyskać stan 1 ustaw stan spoczynkowy na 1.
Tded Maj 5, 2012 Autor tematu Udostępnij Maj 5, 2012 Hmm, dziwne, gdy zapisze w ten sposób to działa prawidłowo. Do If Czujkal = 1 Then Silnikl = 1 Silnikp = 0 Elseif Czujkap = 1 Then Silnikl = 0 Silnikp = 1 Elseif Czujkal = 0 And Czujkap = 0 Then Silnikp = 1 Silnikl = 0 End If Ale gdy zapiszę już tak: Do If Czujkal = 1 Then Silnikl = 1 Silnikp = 0 Elseif Czujkap = 1 Then Silnikl = 0 Silnikp = 1 Elseif Czujkal = 0 And Czujkap = 0 Then Silnikp = 1 Silnikl = 1 End If to nie świecą się diody, zachowuje się tak jak by nie mógł załączyć 2 jednocześnie...
klonyyy Maj 5, 2012 Udostępnij Maj 5, 2012 Spróbuj tak : Do If Czujkal = 1 Then Silnikl = 1 Silnikp = 0 End If If Czujkap = 1 Then Silnikl = 0 Silnikp = 1 End If If Czujkal = 0 And Czujkap = 0 Then Silnikp = 1 Silnikl = 1 End If Chociaż to i tak dziwne, że nie chce dać wysokiego na dwóch portach. A w ogóle ten pin daje napięcie przy 1 w drugim if'ie programu?
Tded Maj 5, 2012 Autor tematu Udostępnij Maj 5, 2012 Niestety dalej to samo. Zmiana stanu przy pierwszych 2 if'ach działa prawidłowo. Do If Czujkal = 1 Then Silnikl = 1 Silnikp = 0 End If If Czujkap = 1 Then Silnikl = 0 Silnikp = 1 End If If Czujkal = 0 And Czujkap = 0 Then Portb.2 = 1 End If Mimo takiego zapisu port B2 nie reaguje, przypuszczam więc, że rozmyślamy nad uszkodzonym sprzętem.
klonyyy Maj 5, 2012 Udostępnij Maj 5, 2012 to w którymś programie coś zepsułeś na początku za silnik jest odpowiedzialny portb. 1 i 3 a potem okazuje się w ostatnim programie że ten niedziałający to portb.2
Tded Maj 5, 2012 Autor tematu Udostępnij Maj 5, 2012 Rozjaśnię troszkę sytuację, mam dwa silniki za które odpowiadają odpowiednio za lewy i prawy porty 1 i 3 ale nie załączają się jednocześnie więc postanowiłem dopisać port 2 który by odpowiadał za odpalenie obu silników jednocześnie, lecz jak się okazało port B2 nie działa i stąd mój wniosek, że microcontroler jest uszkodzony.
klonyyy Maj 5, 2012 Udostępnij Maj 5, 2012 Która końcówka do czego ? Może przez przypadek jedną końcówkę dałeś do vcc a drugą do pinu procesora gdzie było 1 więc multimetr nie pokazywał napięcia. I sprawdź przy okazji piny 3 i 1 ( przy programie w którym ustawia je oba na 1. 1
Tded Maj 5, 2012 Autor tematu Udostępnij Maj 5, 2012 Heh, już działa, miałeś racje sprawdzałem pod Vcc, dzięki za zainteresowanie, swoją drogą to ile trzeba się nagłowić nad noobskim błędem, nauka na przyszłość: Sprawdzać połączenia 3 razy i czytać "od deski do deski" podręcznik AVR. Pozdrawiam, i przepraszam za bardzo nobski błąd
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ę »