Skocz do zawartości

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


Pomocna odpowiedź

Napisano

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)

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

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 😤

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

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

$baud = 9600

Spróbuj np. 1200

$baud = 1200

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.

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.

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!

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.

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

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

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

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