|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
besoft Profesionalec
Pridružen/-a: Čet Maj 2010 10:26 Prispevkov: 98
|
Objavljeno: Ned Apr 29, 2012 8:42 am Naslov sporočila: Povezava med vezji |
|
|
Imam še eno vprašanje. Rad bi povezal dva ATmega čipa med sabo z rs232 na TTL nivoju. Komunikacija je enosmerna. Master ima hardwerski UART, slave pa bo mel softwerski UART. vezju sta narazen cca 5cm.
Na kaj morem biti pozoren ? je to sploh uporabna povezava..namreš na slave strani mi je zmanjkalo harverskih UART-ov..
hvala |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Ned Apr 29, 2012 5:06 pm Naslov sporočila: |
|
|
Hoj,
ne potrebuješ MAX232 čipa, poveži mikrokontrolerja direktno. 5 cm ni takšna razdalja, bi imel kakšne posebne težave. Softverski UART lepo deluje torej veselo na delo.
Lp
Jure |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Sre Maj 02, 2012 7:51 am Naslov sporočila: |
|
|
Besoft, ravnokar sem ti na tvojo željo poslal materijal, kjer je opisana rs485 povezava.
Če gre za samo dva mikroprocesorja in na tako kratki razdalji, ne potrebuješ nobenega čipa, samo povežeš rx enega čipa z tx drugega, ostalo vse velja. |
|
Nazaj na vrh |
|
|
besoft Profesionalec
Pridružen/-a: Čet Maj 2010 10:26 Prispevkov: 98
|
Objavljeno: Sre Maj 02, 2012 9:55 am Naslov sporočila: |
|
|
Vilko ..hvala, z vašo pomočjo problem rešen..
Gre za več naprav..v mojem primeru 10. Vsi delajo ok..edino, če vključim display v glavni program v loop zanko na sprejemni strani, potem se mu malo pomešajajo stringi..morem razvozlati zakaj.
menim pa, da vse poteka prehitro in ga display ovira.. |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Sre Maj 02, 2012 9:58 am Naslov sporočila: |
|
|
besoft je napisal/a: | Vilko ..hvala, z vašo pomočjo problem rešen..
Gre za več naprav..v mojem primeru 10. Vsi delajo ok..edino, če vključim display v glavni program v loop zanko na sprejemni strani, potem se mu malo pomešajajo stringi..morem razvozlati zakaj.
menim pa, da vse poteka prehitro in ga display ovira.. |
Če gre za več naprav, potem je potrebno uporabiti čipe MAX485 ali LTC485 (cenejši) in programirati tako, kot v seminarskih materijalih. Potem ne bo izgubljal podatkov, četudi so zraven priključeni displeji in podobno.. |
|
Nazaj na vrh |
|
|
besoft Profesionalec
Pridružen/-a: Čet Maj 2010 10:26 Prispevkov: 98
|
Objavljeno: Sre Maj 02, 2012 10:30 am Naslov sporočila: |
|
|
sem uporabil čipe..tudi deluje vse..razen podatkov na displeyu ne prikazuje ok..je pa res , da displaya v tej aplikacije ne rabim.. |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Sob Maj 19, 2012 8:14 pm Naslov sporočila: |
|
|
podoben primer: povezati dve megi med seboj preko 433MHz RF modulov. Komunikacija bo enosmerna. Za zdaj sem z ukazom Print na oddajnem delu uspešno oddajal znake, s tem da jih je sprejemni del sprejemal samo, če sem imel programiran softverski UART, medtem ko HW UART ne sprejema nič. Gre se mi predvsem da bi uporabil buffered uart, torej da bi AVR sprejel znak in ga dal v buffer, jaz pa bi ga prebral ko pride čas za to - je to tako ali sem narobe razumel? in zakaj mi HW uart ne bere , SW pa brez problema? obe megi sem zaenkrat povezal z žičko (čeprav SW UART dela tudi preko RF modulov).
uporabil sem CONFIG SERIALOUT ter PRINT na oddajni strani ter CONFIG SERIALIN ter INPUT (tudi WAITKEY) na sprejemni.
S tem se ukvarjam prvič in mi ni čisto jasno. _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Ned Maj 20, 2012 7:17 am Naslov sporočila: |
|
|
Protonček,
Nima izkušenj z rfm komunikacijo, a vseeno
pripni tisti del programa, ki se ukvarja z sprejemanjem in sicer dvakrat, tistega z swuart in tistega z hwuart.
Katere rfm module imaš? |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Ned Maj 20, 2012 11:04 am Naslov sporočila: |
|
|
Pozdrav, Vilko!
RF modula imam od SE, ampak pustimo to, ker sem zaenkrat obe megi povezal z žičko.
Na kratko, kaj hočem: oddajni del bo gledal neke vhode in glede na njihovo stanje sporočal sprejemniku v številčni obliki : npr. 1 bo normalno stanje, 2 bo en vhod odprt, 3 bo drug vhod odprt, 4 oba vhoda odprta...itd. Torej želim prenašati zgolj števila, ne znake (mogoče je tukaj problem..)
Program sem naredil tako, da prikazuje SW in HW del obenem. >TX del iz oddajne mege sem povezal obenem na port C.5 in na RX pin sprejemne mege.
Spremenljivka N je samo zato da vem, da program teče
Na HW delu mi sicer prikazuje neke številke, ampak čisto naključne, medtem ko mi SW del pravilno kaže od 0 do 255 z inkrementom 1.
Koda: |
$regfile = "m16def.dat"
$crystal = 8000000
$baud = 2400
Config Lcd = 20x4
Config Lcdpin = Pin , Db4 = Pind.4 , Db5 = Pind.5 , Db6 = Pind.6 , Db7 = Pind.7 , E = Pind.3 , Rs = Pind.2
Cursor Off Noblink
Cls
Open "comc.5:2400,8,n,1" For Input As #2
Config Serialin = Buffered , Size = 200
Enable Interrupts
Dim Vhod As Byte , Vhod2 As Byte , N As Byte
Zacetek:
Input #2 , Vhod2
Locate 1 , 1
Lcd "Sprejem na #2:" ; Vhod2;" "
If Ischarwaiting() = 1 Then
Vhod = Inkey()
Locate 2 , 1
Lcd "Sprejem na HW:" ; Vhod ; " "
End If
Locate 3 , 1
Lcd N
Incr N
Waitms 200
Goto Zacetek |
EDIT: ugotovil sem sledeče: izgleda da na HW UART-u zadeva prenaša ZNAKE, na SW UART-u pa številke - namreč "dekodiral" sem neznane številke, sprejete na HW delu in so čisto lepo številke v obliki znaka: npr. 123 je poslano v treh delih :1, 2 in 3 in seveda enako sprejeto. Potem je tudi jasno, zakaj na koncu vedno sledi 13 in 10.
Kot kaže sem tudi ugotovil, kje ga lomim: ukaz INPUT vrne ASCII string. Uspelo pa mi je s sicer zelo "čudno" obliko: Inkey , znak...zanimivo da deluje kljub temu da je tam samo vejica...
obstaja kak ukaz, ki vrne direktno vrednost in pri tem NE čaka da pride znak? _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Ned Maj 20, 2012 6:53 pm Naslov sporočila: |
|
|
Vedno, kadar dobim vprašanje, pa ne vem odgovora, se zavem, kako malo vem.
Nikoli nisem uporabljal za branje ukazov input, ischarwaiting in waitkey in podobno. Vedno sem bral v serial interrupt rutini, tako ne morem avtoritativno odgovoriti na tvoj problem.
Opažam pa, da je v helpu v primeru za ischarwaitng
Koda: | Do
A = Ischarwaiting()
If A = 1 Then 'we got something
A = Waitkey() 'get it
Print "ASCII code " ; A ; " from serial"
End If
Loop Until A = 27
|
znak prebran z ukazom Waitkey in ne z Inkey kot si to napisal ti.
poizkusi tako! |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Ned Maj 20, 2012 7:13 pm Naslov sporočila: |
|
|
No, zaenkrat sem, vsaj principalno, zadevo usposobil. Kot kaže ukaz INPUT čaka na nekaj, medtem ko INKEY ne čaka, WAITKEY pa spet čaka. Če prav vidim je razlika med INPUT in INKEY(ali waitkey) v tem da INPUT vrne ASCII znak, INKEY ter WAITKEY pa direktno številko.
Hotel sem doseči to da ne bi izgubil kakšnega znaka, zato bi uporabil buffer, ampak, kot praviš, obstaja varianta s prekinitvijo in ne vem, če ne bom raje to uporabil. Namreč - buffer se prepiše, če ga ne prebereš in oddajnik kar naprej pošilja podatke, medtem ko prekinitev prebere takoj, ko pride nek signal na RX.
Sploh pa, kot sem sedaj gledal na SE trgovini, obstaja možnost da bom moral uporabiti SPI komunikacijo ( spet jovo nanovo ...). Namreč - nameravam uporabiti dve frekvenci: 433MHz in 868MHz, ISTI podatki pa bi šli po obeh - tako bom izničil možnost motenj in/ali sabotaž (gre za nekakšno razširitev alarmnega sistema). Namreč: če prav vidim ima trgovina SE module na 868MHz samo take, ki imajo SPI komunikacijo in so nastavljivi. No, mogoče je to plus, saj bi se morda dalo ISTI sprejemnik uporabiti za obe oddajni frekvenci...mogoče bo Jure vedel, če ta modul (RFM42/31) lahko skače gor/dol po obeh frekvencah...
Vilko, hvala za pomoč. _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|