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

A na pewno masz wszystko dobrze polutowane? I czy dobre piny zadeklarowałeś jako sensory itp. Program wydaje się być ok..

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

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ę »
×
×
  • 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.