![](http://www.elektronika.lt/_sys/img/dot.gif) |
![](/_sys/img/dot.gif)
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 02 12, 07:04. Visos datos yra GMT + 2 valandos.
|
|
|
![](/_sys/img/box_ico.gif) |
Forumas » Mikrovaldikliai » Arduino Serial port (master + 2...n slave)
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
Puslapis 1 iš 2 Pereiti prie 1, 2 Toliau |
|
![](/_sys/img/dot.gif) |
![](/_sys/img/dot.gif) |
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 07:11 |
|
|
|
Tai va žaidžiu su savo Arduino ir mąstau, kaip čia padaryti tokį dalyką.
Mano kompiuteris yra master. Ta prasme valdo Arduino (slave) plokštę.
Turiu susiprograminęs kompiuteryje ale programelę ir Arduino kad dirbtų.
Programavau dar nežinodamas ar tai, apie ką mąstau, veiks. Bet principas labai paprastas kompiuterio programa per Serial siunčia komandą arba apklausinėja mikrokontrolerį. Komanda 3 baitai, tada vienas baitas adresas (Arduino plokštės) ir po to visa kita informacija, jei reikia.
Aš dar labai nesigilinau tik vakar paskaitinėjau truputį apie galimybes. Bet atsakymo vienareikšmiško neradau ir man įdomu ar galima taip jungti: kompiuteris kaip master ir prie kompiuterio prijungta pora slave Arduino plokščių. Ta prasme kad kitą Arduino jungti lygiagrečiai prie esamo plokštės TX RX. |
|
_________________ Do not argue with an idiot. He will drag you down to his level and beat you with experience.
mane rasite: mano profilyje |
|
|
|
![](/_sys/img/dot.gif) |
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 08:20 |
|
|
|
Be problemų. Jungi master Tx prie kievieno iš slave Rx ir master Rx į kiekvieną slave Tx. Valdymas tavo irgi protingas - kiekvienas sleivas turi savo ID ir reaguoja tik į savo komandas. Tik protokolas turėtu būti kiek blatnesnis - siulau komandas pradėti bei baigti iš anksto žinomais baitais kad Sleivai žinotu po kurio simbolio tikėtis savo adresiuko bei kitų duomenų. Aplamai verta paskaitinėti ir apie labai patogu toki modbus rtu protokoliuką: http://www.rtaautomation.com/modbusrtu/ |
|
|
|
|
![](/_sys/img/dot.gif) |
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 08:53 |
|
|
|
Seniau RS485 mikres daug kainuodavo, tad darydavau taip:
Iejimo optronas (su apsauga nuo perdideles sroves) jungiamas nuosekliai su isejimo optronu (su bendra apsauga nuo perdideles itampos) taip, kad "tylos" rezime butu prasidare (sroves kilpoje teketu ~10..20mA srove).
trukumai: taip jungiant ant kiekvienos grandies krenta ~3,4V, todel nuo 12V galima uzmaitinti masteri ir vos du sleivus, dar ir linijos varza daro itaka, bet kilpos itampa galima kelti iki nepavojingos optronams.
privalumai: tiek masteris, tiek sleivai gauna tiek tai kas jiems siunciama, tiek tai ka patys siuncia, todel pilna rysio linijos kontrole.
Dar nesunkiai galima realizuoti rysi per maitinimo vyta pora moduliuota srove (CLKOUT & TX, RX detektorius), reiks maitinima paduoti per droseli, signala moduliuoti per kondensatoriu.
Siais laikais yra aibe alternatyvu (irda, radio rysio, wifi, bluetooth, powerline, moduliukai). |
|
|
|
|
![](/_sys/img/dot.gif) |
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 09:01 |
|
|
|
mindogas rašo: |
Be problemų. Jungi master Tx prie kievieno iš slave Rx ir master Rx į kiekvieną slave Tx. Valdymas tavo irgi protingas - kiekvienas sleivas turi savo ID ir reaguoja tik į savo komandas. Tik protokolas turėtu būti kiek blatnesnis - siulau komandas pradėti bei baigti iš anksto žinomais baitais kad Sleivai žinotu po kurio simbolio tikėtis savo adresiuko bei kitų duomenų. Aplamai verta paskaitinėti ir apie labai patogu toki modbus rtu protokoliuką: http://www.rtaautomation.com/modbusrtu/ |
Pabandysiu šiandien pasiskolinti kitą Arduino ir pabandyti.
Dėl perdavimo tai pas mane ir yra panašiai pradžia tai 3 baitai tarkim get arba set arba kokia kita komanda, tada eina vienas baitas adresas, tada jei reikia dar informacijos ir siuntimas baigiasi '\n' simboliu. tai yra 10 arba 13, jei gerai pamenu. Kai gauna visus baitus ir adresas atitinka mikrovaldiklis atlieka veiksmus.
Man tik buvo įdomu ar fiziškai įmanoma taip sujungti. |
|
_________________ Do not argue with an idiot. He will drag you down to his level and beat you with experience.
mane rasite: mano profilyje |
|
|
|
![](/_sys/img/dot.gif) |
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 09:13 |
|
|
|
AlgisL rašo: |
Seniau RS485 mikres daug kainuodavo, tad darydavau taip:
Iejimo optronas (su apsauga nuo perdideles sroves) jungiamas nuosekliai su isejimo optronu (su bendra apsauga nuo perdideles itampos) taip, kad "tylos" rezime butu prasidare (sroves kilpoje teketu ~10..20mA srove).
trukumai: taip jungiant ant kiekvienos grandies krenta ~3,4V, todel nuo 12V galima uzmaitinti masteri ir vos du sleivus, dar ir linijos varza daro itaka, bet kilpos itampa galima kelti iki nepavojingos optronams.
privalumai: tiek masteris, tiek sleivai gauna tiek tai kas jiems siunciama, tiek tai ka patys siuncia, todel pilna rysio linijos kontrole.
Dar nesunkiai galima realizuoti rysi per maitinimo vyta pora moduliuota srove (CLKOUT & TX, RX detektorius), reiks maitinima paduoti per droseli, signala moduliuoti per kondensatoriu.
Siais laikais yra aibe alternatyvu (irda, radio rysio, wifi, bluetooth, powerline, moduliukai). |
Tai nieko nekeičiant nesigaus pajungti jungiant RX ir TX lygiagrečiai? |
|
_________________ Do not argue with an idiot. He will drag you down to his level and beat you with experience.
mane rasite: mano profilyje |
|
|
|
![](/_sys/img/dot.gif) |
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 09:33 |
|
|
|
jei isiskaitytum, pastebetum, kad mano pasiulyme ir yra tx/rx logiskai lygiagreciai (naudojama viena vyta pora), tik sprendimai transporto dalyje skiriasi:
1) optronai (sroves kilpoje) jungiami nuosekliai, nes kitaip ir nesigaus;
2) home/power-line emuliacijoje naudoji arba droseli arba impulsini trafuka su 2/3 apvijom. 1..8Mhz signalas gana gerai persiduoda vyta pora ir lengvai detektuojasi, tad be dideliu bedu gausi 38400bps ir spartesni rysi.
P.S. jungtis tiesiai prie COM porto nera gerai, ypac kai linija pasiekia >15m ar paklota triuksmingoje aplinkoje. |
|
|
|
|
![](/_sys/img/dot.gif) |
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 09:55 |
|
|
|
AlgisL rašo: |
jei isiskaitytum, pastebetum, kad mano pasiulyme ir yra tx/rx logiskai lygiagreciai (naudojama viena vyta pora), tik sprendimai transporto dalyje skiriasi:
1) optronai (sroves kilpoje) jungiami nuosekliai, nes kitaip ir nesigaus;
2) home/power-line emuliacijoje naudoji arba droseli arba impulsini trafuka su 2/3 apvijom. 1..8Mhz signalas gana gerai persiduoda vyta pora ir lengvai detektuojasi, tad be dideliu bedu gausi 38400bps ir spartesni rysi.
P.S. jungtis tiesiai prie COM porto nera gerai, ypac kai linija pasiekia >15m ar paklota triuksmingoje aplinkoje. |
Aš supratau. Bet pradžiai noriu pasižaisti su keliom arduino plokštėmis nieko per daug neperdarinėjant, patikrinti kaip veikia gaunant klaidingas užklausas ir tt. O šiaip vėliau galima jungti ir per 485.
Bet šiuo momentu noriu pasibandyti ant stalo nieko per daug nekeičiant, todel ir paklausiau ar taip veiktų. |
|
_________________ Do not argue with an idiot. He will drag you down to his level and beat you with experience.
mane rasite: mano profilyje |
|
|
|
![](/_sys/img/dot.gif) |
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 10:12 |
|
|
|
Jei numatytas target-address komandoje/atsakyme, tai kokios trabliemos?
reikia tik sistemos, kad jei griztantis simbolis nesutampa su siunciamu, random laikui atideti siuntima (tipo collision detection) |
|
|
|
|
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 10:19 |
|
|
|
AlgisL rašo: |
Jei numatytas target-address komandoje/atsakyme, tai kokios trabliemos?
reikia tik sistemos, kad jei griztantis simbolis nesutampa su siunciamu, random laikui atideti siuntima (tipo collision detection) |
Šitą aš ir pagalvojau. Taigi pradžiai vienam iš slave pridėsiu vėlinimą atsakymui. |
|
_________________ Do not argue with an idiot. He will drag you down to his level and beat you with experience.
mane rasite: mano profilyje |
|
|
|
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 13:17 |
|
|
|
faktiskai darai taip:
Kodas: |
#define BPS 9600
#define TX_DELAY 11000000UL / BPS
int USART_TransmitBuf( char *data, int cnt )
{
int ok = 1;
while ( ok && cnt )
{
while ( !( UCSR0A & (1<<UDRE0)) );
UDR0 = *data;
_delay_us(TX_DELAY); // pagal 1 simbolio is siuntimo greiti
if ( (UCSR0A & (1<<RXC0)) )
{
if ( UDR0 == *data )
{
data++;
cnt--;
}
else
ok = 0;
}
else
ok = 0;
}
return ok;
}
|
|
|
|
|
|
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 19:47 |
|
|
|
tai va nustačiau skirtingus adresus vienai plokštei atsakymams uždėjau vėlinimą 3 sekundes. Toks dalykas: kazkaip keistai atskirai veikia, sujungių lygiagrečiai neveikia. Gla kokių minčių yra? gal reikia kokių diodų ar kažko?
Gal turit minčių dėl ko taip gali būti? |
|
_________________ Do not argue with an idiot. He will drag you down to his level and beat you with experience.
mane rasite: mano profilyje |
|
|
|
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 20:24 |
|
|
|
"lygiagreciai" pas tave cia trumpikliu ar logiskai?
trumpikliu gali lygiagretinti tik tam tinkama schemini sprendima, o ne uPU TX kojas.
pvz: atrisus optronais, optronus gali apjungti bendro kolektoriaus jungimu.
isristi gali ne optronais, o pvz lauktranziais su atvira santaka. |
|
|
|
|
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 21:25 |
|
|
|
Lygiagrečiai tai trumpikliu rx prie rx o tx prie tx.
dabar supratau. |
|
_________________ Do not argue with an idiot. He will drag you down to his level and beat you with experience.
mane rasite: mano profilyje |
|
|
|
![](/_sys/img/dot.gif) |
![](templates/elektronikalt/images/folder.gif) |
Arduino Serial port (master + 2...n slave) |
Parašytas: 2014 02 18, 22:14 |
|
|
|
Is esmes tau reikia visas slave'u TX kojas perjungti i GPIO iejimo rezima, nes kitu atveju jos viena kita blokuos (sujunges keleta TX'u lygiagreciai gaunasi taip, jog sujungi keleta isejimu lygiagreciai). RX visus jungi lygiagreciai (kadangi master tera vienas isejimas, o slave'ai visi iejimai) ir leidi slave'ams klausytis komandos. Siunti su komanda pirma baita kaip adresa ir tinkamas slave'as pagaves savo adresa iskart susikonfiguruoja TX koja kaip isejima, o visi like slave'ai ir toliau laiko ta koja iejimu. Jau atmega man senai pamirstas reikalas, tad nezinau ar atskirai kojos konfiguruojasi, jei UART peripheral'as ijungtas. |
|
|
|
|
|
![](http://www.elektronika.lt/_sys/img/box_ico.gif) |
Google paieška forume |
|
![](http://www.elektronika.lt/_sys/img/box_ico.gif) |
Naujos temos forume |
|
![](http://www.elektronika.lt/_sys/img/dot.gif) |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
![](http://www.elektronika.lt/_sys/img/dot.gif) |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
![](http://www.elektronika.lt/_sys/img/dot.gif) |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
![](http://www.elektronika.lt/_sys/img/dot.gif) |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
![](http://www.elektronika.lt/_sys/img/dot.gif) |
LEGO
Mänguköök,
mudelautod,
nukuvanker |
![](http://www.elektronika.lt/_sys/img/dot.gif) |
KCD2 Mods
Installing KCD 2 Mods,
KCD 2 Guides,
KCD 2 Cheats |
![](http://www.elektronika.lt/_sys/img/dot.gif) |
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
![](http://www.elektronika.lt/_sys/img/dot.gif) |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
![](http://www.elektronika.lt/_sys/img/dot.gif) |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
![](http://www.elektronika.lt/_sys/img/dot.gif) |
GTA 6 Wiki
GTA 6 Map,
GTA 6 Characters,
GTA 6 News |
![](http://www.elektronika.lt/_sys/img/dot.gif) |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
![](http://www.elektronika.lt/_sys/img/dot.gif) |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|
![Reklama](http://www.elektronika.lt/_sys/img/rrr2.gif)
|
![Reklama](http://www.elektronika.lt/_sys/img/rrr1.gif) |