Skocz do zawartości
kaspeer

program do komunikacji modułów (prosze o sprawdzenie kodu)

Pomocna odpowiedź

Prosiłbym o pomoc do w napisaniu programu do komunikacji radiowej dwóch modułów poprzez UART

http://www.mobot.pl/index.php?site=products&type=853&details=7771

chodzi mi o to aby jeden z modułów wysyłał przykładową wartość a drugi ją odbierał

chciałbym aby ten program był napisany w bascomie (od razu mówię ze mam książkę przeczytałem już pare kursów ale nic w nich nie znalazłem, ponieważ opisana jest tam komunikacja UART ale z komputerem)

Udostępnij ten post


Link to post
Share on other sites

kaspeer, to wyobraź sobie że to tak samo jak pomiędzy prockiem z modułem radiowym, a komputerem. Jeżeli wiesz jak przesyłać i odbierać dane to samo robisz na 2 procku łączysz i działa ...

Udostępnij ten post


Link to post
Share on other sites

Mi się wydaje, że tu bardziej chodzi o napisanie programu a nie pomoc.

Udostępnij ten post


Link to post
Share on other sites

ok juz cos bardziej sie rozjasnia sproboje cos sam napisac i po prostu wkleje tu kod programu

[ Dodano: 21 Lip 10 01:08 ]

Program do nadajnika

$regfile = "m16def.dat"

$crystal = 8000000

$baud = 9600

Dim I As Byte

I = 15

Do

Print ; I

Waitms 500

Loop

End

chodzi mi o to aby caly czas wysylal wartosc 15

program do odbiornika

$regfile = "m16def.dat" ' typ microprocesora

$crystal = 8000000 ' czestotliwosc oscylatora

$baud = 9600

Config Lcd = 16 * 2

Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6

Dim I As Byte

Do

I = Waitkey()

If I = 15 Then

Gosub Wys

End If

Loop

End

Wys:

Cls

Lcd "Przeslana wartosc"

Lowerline

Lcd "To 15"

Wait 1

Return

odbiornik ma czekac na dane a w momencie gdy odbierze 15 wyswietnic na lcd

od razu mowie ze ja sie dopiero uczę pisac programy a tym bardziej do modułów radiowych

bo na polibudzie tego nie ucza a przydalo by sie 😤

Udostępnij ten post


Link to post
Share on other sites

Bascom-a nie znam, ale program wygląda poprawnie.

Musisz tylko zmniejszyć prędkość transmisji. Zamiast:

$baud = 9600

Spróbuj np. 1200

$baud = 1200

Udostępnij ten post


Link to post
Share on other sites

A kolega to fuse bity w procku przeprogramował? Przypominam tylko, że każda ATmega jest sprzedawana z zaprogramowanym wewnętrznym oscylatorem 1Mhz, do tego czasami jest zaprogramowany bit clock div by 8.

Udostępnij ten post


Link to post
Share on other sites
Przypominam tylko, że każda ATmega jest sprzedawana z zaprogramowanym wewnętrznym oscylatorem 1Mhz, do tego czasami jest zaprogramowany bit clock div by 8.

To co napisałeś jest jednoznaczne, włączone jest zawsze dzielenie przez 8, przez co mikrokontroler taktowany jest częstotliwością 1MHz.

Udostępnij ten post


Link to post
Share on other sites
GruX napisał/a:

Przypominam tylko, że każda ATmega jest sprzedawana z zaprogramowanym wewnętrznym oscylatorem 1Mhz, do tego czasami jest zaprogramowany bit clock div by 8.

To co napisałeś jest jednoznaczne, włączone jest zawsze dzielenie przez 8, przez co mikrokontroler taktowany jest częstotliwością 1MHz.

To są dwa różne fusebity!

Udostępnij ten post


Link to post
Share on other sites

Wewnętrzny oscylator i dzielenie przez 8 tak, zgadzam się, są różne fusebity, ale ty napisałeś to tak jakby mega miała wewnętrzny oscylator 1MHz plus dodatkowo jeszcze możliwość podzielenia tego 1MHz przez 8 (tak może być również, ale nie jest tak gdy kupujemy nową).

W rzeczywistości jest tak, że ten 1MHz jest następstwem tego, że wewnętrzny oscylator o częstotliwości 8MHz jest dzielony przez 8 poprzez włączenie dzielnika innym fusebitem.

Udostępnij ten post


Link to post
Share on other sites

ciesze sie ze Sabre, i GruX, przypomnieli mi o fusebitach ale tylko Elvis, odpowiedzial na moj post, chodziło mi głownie aby ktos znający bascoma sprawdzil poprawnosc kodu

Udostępnij ten post


Link to post
Share on other sites

Myślałem, że moduły radiowe obsługują 9600 bo nie jest to jakaś super wysoka prędkość transmisji via UART.

Udostępnij ten post


Link to post
Share on other sites

Nie wszystkie obsługują. Najszybsze jakie testowałem to CC1100 - prędkość do 500kbps.

Natomiast tanie/proste moduły pracuję tylko z niskimi prędkościami. Nie jest to duży problem, bo takie moduły nie służą do przesyłania plików (np. filmów), do tego lepiej wykorzystać wifi.

Mają za to mały pobór prądu i niską cenę. Jeśli przesyłamy niewiele danych (np. odczytujemy stan czujników, albo wysyłamy komendę dla robota), to nawet 1200bps wystarczy.

[ Dodano: 24 Lip 10 09:19 ]

Według noty producenta moduły HM-T obsługują do 4800bps (9600 max).

Udostępnij ten post


Link to post
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...