Skocz do zawartości

Atmega16 - I/O


lukiradom

Pomocna odpowiedź

Witam, od dłuższego czasu walczę z Atmegą 16. Chcę napisać bardzo prosty program do linefollowera z dwoma czujnikami. Nie mogę sobie poradzić z wejściami. Gdy daję 1 na któreś z wejść, to nic się nie dzieje. Poniżej zamieszczam program, może tam jest coś nie tak.

$regfile = "m16def.dat"
$crystal = 16000000                                         'definiujemy z jakim taktowaniem be;dzie pracowa?


'deklaracja podprogramow:

Declare Sub Wprzod
Declare Sub Wlewo
Declare Sub Wprawo







Config Portb = Input                                        'port b jako wejścia

Config Portd = Output                                       'port d jako wyjścia



Portb = &B00000000                                          ' stan spoczynkowy portu B
Portd = &B00000000                                          ' stan spoczynkowy portu D



Sensor_l Alias Pinb.2                                       'lewy czujnik
Sensor_p Alias Pinb.3                                       'prawy czujnik



Motor_l Alias Portd.0                                       'wyprowadzenia dla silników
Motor_p Alias Portd.1


Waitms 10


Do

          If Sensor_l = 1 And Sensor_p = 1 Then

           Wprzod
           Waitms 5

          Elseif Sensor_l = 0 And Sensor_p = 0 Then

           Wprzod
           Waitms 5

          Elseif Sensor_l = 0 And Sensor_p = 1 Then

           Wlewo
           Waitms 5

          Elseif Sensor_l = 1 And Sensor_p = 0 Then

           Wprawo
           Waitms 5

          End If




Loop






                                    'polecenia dla silników

Sub Wprzod:
 Motor_l = 1
 Motor_p = 1
End Sub



Sub Wlewo:
 Motor_l = 0
 Motor_p = 1
End Sub



Sub Wprawo:
 Motor_l = 1
 Motor_p = 0
End Sub


End

Atmegę zasilam napięciem z USB, tym samym napięciem daję 1 na wejściu. Z Atmegą8 nie miałem takich problemów. Pozdrawiam.

Link do komentarza
Share on other sites

Ja na twoim miejscu zmieniłbym definicję wejść/wyjść, widzę, że używasz tylko 2 wejść, więc po co definiujesz cały port?

Prawidłowa, działająca definicja w Bascomie, która często jest mylona:

konfiguruje się poleceniem pin:

Config Pinb.5 = Input

ustawia stan poleceniem port:

Set Portc.3

sprawdza stan poleceniem pin:

If Pinc.3 = 0
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!

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