Bascom + RS485

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

a legyegszerűss rs485 tesztelőszotal próbálkoznék meg64el. hardveres megépítésre került rs232 -485 átalakító.

a szoft pedig ez lenne.

pc a 232 és a külső hrdver 485 későbbiekben a pc master lessz.


Config Print0 ezt nemértem ide melyik lábat kel adni?


a procin ezeket használom fel!
'Portd.1 RS485=RE+DE
'Portd.2 RS485=RXD
'Portd.3 RS485=TXD

Kód: Egész kijelölése


'------------------------------------------------------------------------------
'name                     : .bas
'copyright                : (c) 1995-2005, MCS Electronics
'purpose                  : demonstrates
'micro                    : Mega64
'suited for demo          : yes
'commercial addon needed  : no
'------------------------------------------------------------------------------
$regfile = "m64def.dat"
$crystal = 14745600
$baud = 9600
$hwstack = 255
$swstack = 160
$framesize = 160

'Portd.1       RS485=RE+DE
'Portd.2       RS485=RXD
'Portd.3       RS485=TXD


Config Print0 = Portd.1 , Mode = Set
Config Pinb.1 = Output
Dim X As Word
X = 0


Do
   Print ""
   Input " Kerem a szamot: " , X
   Print " A BEUTOT SZAM: " ; X ; " "
   Print ""
Loop

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Portd.1 az En/Rd
print0 - UART0
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

így?

az rxd 1 és txd1 lábakat használom és az re+de hez pedig Portd1 lenne!

Kód: Egész kijelölése

'------------------------------------------------------------------------------
'name                     : .bas
'copyright                : (c) 1995-2005, MCS Electronics
'purpose                  : demonstrates
'micro                    : Mega64
'suited for demo          : yes
'commercial addon needed  : no
'------------------------------------------------------------------------------
$regfile = "m64def.dat"
$crystal = 14745600
$baud = 9600
$hwstack = 255
$swstack = 160
$framesize = 160

'Portd.1       RS485=RE+DE
'Portd.2       RS485=RXD
'Portd.3       RS485=TXD


Config Print1 = Portd.1 , Mode = Set
Config Pinb.1 = Output

Do
   Print "Hello"
  
Loop
nem akar menni pedig csak írniakéne hogy hello

A proci felöl il3585 van.

a pc felől pedig egy max232 max 485 átalakítót csináltunk meg.
így: ha összezárom az átalakító kimeneti 2 vezetékét akkor a brayterminálban 00 jön vissza.
Kép
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

Új látom senki sincs aki segítsen az rs485 elkezdésében vagy lehet mások is hadilábon állanak vele?

szóval mega64 proci

Portd.1 RS485=RE+DE
Portd.2 RS485=RXD
Portd.3 RS485=TXD

lábait használom ugye ez az uart 1.?

A proci felöl Il3585 IC van izolált rs485.
Slavenak van kötve és így rátettem a 120 Ohm -os ellenálást.

pc felöl pedig a fenti képen látható rs232-rs485 átalakítót csináltam meg.
de nem akar működni. Tudtok más kapcsolást pc felöl? Ezt csak próbának akarom utánna veszek gyári usb-st amit Robi említett.

a rajzot kiegészítettem a 485-s Ic-nek az A B lábát 1-1 fel és lehúzó 560Ohm-os ellenálással.

ezzel a szoftal.

Kód: Egész kijelölése

$regfile = "m64def.dat"
$crystal = 14745600
$baud = 9600


Config Print1 = Portd.1 , Mode = Set
Config Pinb.1 = Output

Do
   Print "Hello"
 
Loop
szerintetek mit hibázok el!

A hálót BrayTerminálal figyelném. csak hogy van e valami kommunikáció.

A proci UART0 lába foglaltak oda nem tehetek semmit.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Én nem így oldanám meg:


Set DEláb
Print #1, "kukuts!"
reset DEláb


A késleltetést nem tudom, hogy a Bascom hogy kezeli le.....


A PChez "véletlen" nincs 2 RS485? Így ki lehet a hurkot is próbálni.
A GND-ket is össze kell kötni!!!!
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Szerintem ha SW UART-ot használsz akkor valahogy így írja a help!
'open channel for output
Open "comd.1:19200,8,n,1" For Output As #1
Print #1 , "serial output"


'Now open a pin for input
Open "comd.0:19200,8,n,1" For Input As #2
'since there is no relation between the input and output pin
'there is NO ECHO while keys are typed
Print #1 , "Number"
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

SWUART RS-485 esetén a fél öngyilkosság és a kopaszodás közt foglal helyet.....:)

SWUART esetén INT nem lehet, bizonytalanság nem lehet. Érzékeny a sebességingadozásra.... Soroljam? :P


Print #1 és #2 a Mega64 esetén javasolt.
Itt "open COM1:" és "Open COM2:" is használandó. A sima Print Input esetén csak kavarodás lesz....
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

ez így hardveres nem?

én csak hardverest szertnék!

de így se jön vissza semmi!

Kód: Egész kijelölése

$regfile = "m64def.dat"
$crystal = 14745600
$baud = 9600


'Portd.1       RS485=RE+DE
'Portd.2       RS485=RXD
'Portd.3       RS485=TXD


Config Print1 = Portd.1 , Mode = Set
Config Pind.1 = Output


Do

Set Portd.1
Print "kukuts!"
Reset Portd.1


Loop
gnd össze van kötve!

nem értem mi kell ehhze!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Innentől HWhiba.

Az M64-et átállítottad, hogy M64 és ne M103 kompatibilis módban fusson?
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

álítottam de a procinak nem az rx0 és tx0 hanem rx1 tx1 lában van a 485 mert az adatlapja úgy irta neki a programozás és pen kapcsolatánál hogy így kell. azokon a lábakon van a programozás a 0 uarton és az megy is.

mi lehet a gond? az isolál Il3585 IC ami a procinál van?

vagy az átalakító inkább.

az átalakítónál kipróbáltuk az rs232 vissza adja amit leütök ha összezárom a lábát.

viszont a proci paneljénél látom ha küldök ki egy egyest a led felvillan.

de nem értem mi lenne a gond. olvastam a leírásod és a neten is sokat de nem találtam hibát.

mit ajánlasz a procimellé hogy legyen r485 megoldva? írás és olvasás is lessz. Proci lessz a slave. pc a master.

érdekelne a hardveres megoldásod. és a szoftos is elég ha egy abetűt vissza ad nekem és utánna majd fejlesztem lassan.

Köszönöm előre is!
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

RS 485
http://avrhelp.mcselec.com/index.html > BASCOM HARDWARE > USING RS485

The sample above uses a MEGA161 or MEGA162 which has 2 UARTS. This way you can have both a RS232 and RS485 interface.

The RS232 is used for debugging.

In order to test you need 2 or more similar circuits. One circuit would be the master.

The other(s) would be a slave.

The same hardware is used to test the MODBUS protocol. The bus need to be terminated at both ends with a resistor. 100 ohm is a typical used value.

The GND of both circuits may not be connected ! Only connect point A and B from both circuits. For industrial usage it is best to use an optical isolated level shifter.

Kód: Egész kijelölése

'Simple MASTER sample

$regfile = "m162def.dat"                                    ' specify the used micro

$crystal = 8000000

$baud = 19200                                               ' use baud rate

$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 Print1 = Portb.1 , Mode = Set              ' use portb.1 for the direction

Rs485dir Alias Portb.1

Config Rs485dir = Output

Rs485dir = 0   ' go to receive mode

Portc.0 = 1    ' a switch is connected to pinc.0 so activate pull up resistor

'             TX    RX

' COM0   PD.1   PD.0   monitor

' COM1   PB.3   PB.2   rs485

'            PB.1           data direction rs485

 

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Config Com2 = 9600 , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0  ' MUST MATCH THE SLAVE


'use OPEN/CLOSE for using the second UART

Open "COM2:" For Binary As #1

 
'dimension some variables

Dim B As Byte

Dim W As Word

Dim L As Long


W = &H4567   ' set some values

L = &H12345678


Print "RS-485 MODBUS master"

Do

 If Pinc.0 = 0 Then                                       ' test button

    Waitms 500                                            ' delay since we want to send just 1 frame

    Print "send request to slave/server"            ' to debug terminal

   ' Print #1 , Makemodbus(2 , 3 , 8 , 2);                  'slave 2, function 3, start address 8, 2 bytes

   ' Print #1 , Makemodbus(2 , 6 , 8 , W);                 'slave 2, function 6, address 8  , value of w

     Print #1 , Makemodbus(b , 16 , 8 , L);                'send a long

 End If

 If Ischarwaiting(#1) <> 0 Then  'did we got something back?

   B = Waitkey(#1)  ' yes so get it

   Print Hex(b) ; ",";  ' print it

 End If

Loop
A slave would simply listen to data, and once enough data received, send it back.

The MODBUS slave code is available as a commercial add on.

Átírod M64-re ! A „ Makemodbus” helyet, a saját utasításaidat teszed!
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2009. március 13. péntek, 20:05-kor.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A hiba a HW-ben van....
A set/reeset irányállítás és a print működik...
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

de akkor amit a pc felöli oldalra tettünk átalakító az jó akkor ugye?

és ez akkor hardveres rs485 nem szofos.

bocs a sok kérdésért de ilyet még nem csináltam és nem igazán jött össze eddig semmi se. 232 már jól megy minden.

Lehetséges hogy amit használunk izolált ic az IL3585 csak ugyan olyannal hajlandó kommunikálni?

Kép
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Nem. Ez független tőle....
Az RS485 a fizikai réteget takarja... Ezt spec nem ismerem :) .
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

Hozzászólás Szerző: norbi »

Próbáld meg így:

Kód: Egész kijelölése

Config Com2 = dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
$baud =9600
Echo Off
Amugy a GND összekötése half-duplex módban nem szükséges, anélkül is menni kell...
Válasz küldése