Mam problem z komunikacją z czujnikiem MOBOT- US V2
http://www.mobot.pl/download/Sonar_Mobot-us_V2.0_instrukcja.pdf
za pośrednictwem interfejsu i2c z atmega8. Czujnik mam podłączony do zestawu uruchomieniowego zl2avr w ten sposób, ze piny scl i sda (port.c5 i port.c4) do czujnika(pin 7, pin 9 )przez rezystory 4k7, pin Reset czujnika na portc.3 atmegi. Zasilanie idzie oddzielnie. Czujnik zaczyna działać dokonuje pierwszego pomiaru (ustawia się) i czeka na polecenia.
Przy podłączeniu linii sonaru sda i scl do mikrokontrolera według schematu:
czujnik nie pracuje poprawnie nie wiem czemu. Zapala się tylko dioda oznaczająca zasilanie, lecz jest bardzo przygaszona jakby czujnik nie dostawał odpowiedniego napięcia. Miernikiem sprawdzałem i na przewodach jest 5V.
Kolejny problem to sterowanie. Posiłkując się na czym tylko da napisałem program do obsługi czujnika w bascomie, ale niestety nie działa. Jak ktoś zauważy jakiś błąd proszę o pomoc. Niżej załączam kod programu.
Wydaje mi się ze problem może tkwić w adresowaniu czujnika i adresu odbioru pomiaru. Oba ustawiam na takie same &H01, lecz nigdzie w dokumentacji nie znalazłem adresu zapisu do sonaru i odczytu z sonaru.[/img]
http://www.mobot.pl/download/Sonar_Mobot-us_V2.0_instrukcja.pdf
za pośrednictwem interfejsu i2c z atmega8. Czujnik mam podłączony do zestawu uruchomieniowego zl2avr w ten sposób, ze piny scl i sda (port.c5 i port.c4) do czujnika(pin 7, pin 9 )przez rezystory 4k7, pin Reset czujnika na portc.3 atmegi. Zasilanie idzie oddzielnie. Czujnik zaczyna działać dokonuje pierwszego pomiaru (ustawia się) i czeka na polecenia.
Przy podłączeniu linii sonaru sda i scl do mikrokontrolera według schematu:
czujnik nie pracuje poprawnie nie wiem czemu. Zapala się tylko dioda oznaczająca zasilanie, lecz jest bardzo przygaszona jakby czujnik nie dostawał odpowiedniego napięcia. Miernikiem sprawdzałem i na przewodach jest 5V.
Kolejny problem to sterowanie. Posiłkując się na czym tylko da napisałem program do obsługi czujnika w bascomie, ale niestety nie działa. Jak ktoś zauważy jakiś błąd proszę o pomoc. Niżej załączam kod programu.
$regfile = "m8def.dat"
$crystal = 8000000
$lib "i2c_twi.ibx"
config lcd = 16*2
config lcdpin= pin, db4= portb.3, db5=portb.2, db6=portb.1, db7=portb.0, e=portb.4, rs=portb.5
sonar_r alias portc.3 'konfiguracja pinu do restartu sonaru
sonar_adres_w alias &H01 'z danych katalogowych adres sonaru
dim sonar_odczyt as word ' zmienna pod która przypisujemy pomiar z sonaru
declare sub sonar_reset
enable interrupts
config scl=portc.5
config sda=portc.4
config twi = 100000
i2cinit
call sonar_reset
do
i2cstart
i2cwbyte sonar_adres_w
i2cwbyte &H10 'wysłanie do sonaru
i2cwbyte &H02 'polecenia wykonania pomiaru
i2cstop
waitms 30
dim pomiar(2) as byte
i2cstart
i2cwbyte sonar_adres_w
i2cwbyte &H20 'polecenie odebrania pomiaru z sonaru (2bity)
i2cstop
i2cstart
i2cwbyte sonar_adres_w ' adres odczytania pomiaru
i2crbyte pomiar(1) '1 bit pomiaru
i2crbyte pomiar(2) '2 bit pomiaru
i2cstop
sonar_odczyt= makeint(pomiar(1), pomiar(2))
lcd sonar_odczyt
loop
sub sonar_reset
sonar_r=0
waitms 10
sonar_r=1
waitms 40
end sub
Wydaje mi się ze problem może tkwić w adresowaniu czujnika i adresu odbioru pomiaru. Oba ustawiam na takie same &H01, lecz nigdzie w dokumentacji nie znalazłem adresu zapisu do sonaru i odczytu z sonaru.[/img]