Bascom i obsługa RS485

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
endurasek
-
Posty: 4
Rejestracja: 12 wrz 2013, 17:28
Lokalizacja: tg

Bascom i obsługa RS485

Post autor: endurasek » 12 wrz 2013, 17:33

Witam
mam taki problem mianowicie zbudowałem dwa układy jeden działa jako master-steruje wyjsciami,odlicza czas itp. a drugi
slave - ma za zadanie tylko wyświetlać to co mu master wyśle

Napisałem krótki program ale on tylko przy włączeniu zasilania odczyta dana wartość a potem już nie a mi zależy aby cały czas sprawdzał co mu master wysyła

Master-nadajnik

Kod: Zaznacz cały

$regfile = "m8def.dat" 

$crystal = 8000000 
$baud = 19200 


'------------------------pierwsza próba---------------------------------------- 
'Config Portd.2 = Output 
'Kierunek Alias Portd.2 
'Config Serialin = Buffered , Size = 15 
' set kierunek 
'------------------------------------------------------------------------------- 


'------------------------druga próba-------------------------------------------- 

$hwstack = 42                                               ' default use 32 for the hardware stack 
$swstack = 40                                               ' default use 10 for the SW stack 
$framesize = 40                                             ' default use 40 for the frame space 

$lib "modbus.lbx" 
Config Print0 = Portd.2 , Mode = Set 
Kierunek Alias Portd.2 
Config Kierunek = Output 
Kierunek = 1 
'------------------------------------------------------------------------------- 

Dim A As Integer 

A = 1 

Do 

Print A 
Wait 1 
A = A + 1 


Loop 
                 
i odbiornik obsługuje wyswietlacz na ktorym chce wyswietlac wartosc wysłana A


Kod: Zaznacz cały

$regfile = "m8def.dat" 

$crystal = 8000000 
$baud = 19200 

Config Lcdpin = Pin , Db4 = Pordc.3 , Db5 = Pordc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 
Config Lcd = 20 * 4 

'----------------------------------pierwsza proba------------------------------- 
'Config Serialin = Buffered , Size = 15 
'Config Pind.2 = Output 
'Kierunek Alias Portd.2 
'Reset Kierunek 
'------------------------------------------------------------------------------- 

'------------------------------------druga proba-------------------------------- 
$hwstack = 42                                               ' default use 32 for the hardware stack 
$swstack = 40                                               ' default use 10 for the SW stack 
$framesize = 40                                             ' default use 40 for the frame space 

$lib "modbus.lbx" 
Config Print0 = Portd.2 , Mode = Set 
Kierunek Alias Portd.2 
Config Kierunek = Output 
Kierunek = 0                                                ' go to receive mode 
'------------------------------------------------------------------------------- 


                                    'zmienia kierunek transmisji 

Enable Interrupts 

Dim A As Integer 

Cls 
Cursor Off 

Do 


Input A 
Waitms 100 


Locate 1 , 1 
Lcd A 


Loop                                                        'end program 
End 

mirekm42
-
Posty: 3
Rejestracja: 13 wrz 2013, 15:23
Lokalizacja: Rzeszów

Post autor: mirekm42 » 13 wrz 2013, 15:30

Nie korzystałem nigdy z RS485 i polecenia Config Printx ale jak na mój gust, to w odbiorniku powinien być pin ustawiony jako input. No i do czego to odblokowanie przerwań? - chociaż to akurat nie ma nic do rzeczy.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 13 wrz 2013, 15:41


Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 15 wrz 2013, 10:45

Ciekawy temat, bo sam chętnie bym sobie zdalnie pogadał z moim falownikiem, który ma na pokładzie RS485. Taka klawiatura do szybkich zmian parametrów byłaby fajna.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 15 wrz 2013, 11:43

Ja na obecną chwilę nie mam płytek pod 485 czyli z maxem na pokładzie, ale chętnie sam bym się pobawił i pouczył tego. Materiał z linków które wyżej podałem tylko studiowałem. W praktyce jeszcze nie testowałem.

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 15 wrz 2013, 20:56

Ja ma przelotkę RS232<>RS485 do PCta, wiec konwerter by się znalazł, tylko MODBUSa trzeba by opanować. Tak co szukałem to opisy są do BASCOMa, ale po Angielsku.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 15 wrz 2013, 20:58

Kayron, ale ja podałem wyżej linki do konkretnych rozwiązań, chyba że mowa o czymś innym.

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 16 wrz 2013, 15:53

Tzn Rs485, i MODBUS to nie to samo. MODBUS to raczej, protokół przemysłowy, przy czym może korzystać tak z RS232, jak i RS485 jako interfejsu fizycznego do komunikacji. cały knie polega na opanowaniu jak nadać i odebrać ramkę danych, ale to akurat producenci opisują w dokumentacjach, wraz z wykazem komend sterujących, i adresów rejestrów, urządzenia. Choć komendy akurat są zestandaryzowane.

ODPOWIEDZ