Skocz do zawartości

Nie zmienia portu na stan wysoki


Tded

Pomocna odpowiedź

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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

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...

Link do komentarza
Share on other sites

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?

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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.

  • Lubię! 1
Link do komentarza
Share on other sites

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 😉

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.