Korrekt RS-232

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Ubul
DrótVégénSzéndarab
Hozzászólások: 48
Csatlakozott: 2006. január 6. péntek, 7:00

Korrekt RS-232

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

Sziasztok!

Érdeklődnék hogyan lehet teljesértékű RS-232 portot
létrehozni a ATTiny2313-re. Értem ezalatt hogy
ne csak az Rx/Tx/GND menjen át hanem a hárdveres kézfogás is.

Illetve kérdezném hogy a PB1-7 lábak használhatók-e
Rx/Tx ként? Tulajdonképpen pontosan milyen funkciókat
tudnak ezen lábak?

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

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

Megoldható teljes handshake is. Ez lehet HW vagy SW alapú.
HW alapút neked kell a DCE/DTE lábakat is leprogramoznod. SW alapú pedig a Xon/Xoff protokollal megy.


Szinte bármely láb bárminek használható. DE:
* van a hardveres megkötés, ekkor a feladatot a HW látja el. (pl. TX/RX/Int/reset/T0, stb. funkciók)
* SWből ha valaki leprogramozza bármelyik lábra rakható (ilyen pl. a szoftveres TX/RX port, illetve pl. a Tiny chipben az I2C busz. Ez utóbbak hátránya, hogy nem tudnak megszakítást generálni, ha foglalkozni kell velük, így Neked kell megvalósítanod ezt is SW-ből. Valamint értékes programmemória helyet foglal a SW.



Az hogy melyik láb mit tud kb. 4 oldal felsorolni. Az ATMEL honlapján a 8bit RISC CPUk területén az adatlapban megtalálod. Vagy itt az oldalon a kb. 4. fejezetből is be van linkelve.
De mihez kell tulképpen?
Avatar
Ubul
DrótVégénSzéndarab
Hozzászólások: 48
Csatlakozott: 2006. január 6. péntek, 7:00

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

Szia!

Köszönöm szépen a választ.
Tulajdonképpen minél több RS-232 vezérlést szeretnék
létrehozni.

Ez a fő szempont.

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

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

Halozatba kotes miatt? javaslom nezd meg akkor a RS422/485 protokolt. Sorosporton alapul, csak zavarturobb es nem kell 1000 labat elloni ra.

A handshake jellegu a RS422, a TX/RX a 485-s protokoll.

Ezek kb. MAX 232 araban levo IC-k.
Avatar
Ubul
DrótVégénSzéndarab
Hozzászólások: 48
Csatlakozott: 2006. január 6. péntek, 7:00

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

Sziasztok!

A sorosporti figyelés hogyan történik.
Úgy vezsem ki hogy addig fut egy ciklusban a sorosport figyelés amíg
nem történik valami. De mi van a többi programrészel?

Esetleg nem lehetne a sorosporti RxD, TxD vonalakat valamiféle
megszakítás lábra is rákötni és megszakitás vezérelve beolvasni a portról?

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

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

Ha IT alapon kell:

A bejövő Rx lábból egy leágazás valamelyik külső megszakítíásra. Ez SW-ből utána úgyis tiltható. A Tinyn van külső megszakítás 2 (Int0/1) + 8 (PortC, Portchange IT). Ennyi lábat nem is kell felhasználni, kivéve ha a láb menet + IT detektálást is tud. Portonként így kell 4 láb a teljes HWUART-hoz (ugye a kézfogás miatt 2 + 2 a Tx/Rx lábakra).
A Tiny-n van 20-2-2-1 (Össz-táp-kvarc-Reset) 15 láb. Ez 3 UARTot tud így. illetve a Mega164/324/466(?) ennek 40-6lába szabad. Ez 34 láb...:) Portchange itt is ITt generál.
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

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

Helló mindenkinek!

Lenne egy kérdésem a sorosporttal kapcsolatban:

-Lehet 2 AVR-nél többet úgy összekötni, hogy ne legyen zavar?

Vagy ha több mindnet kell összekötnöm, maradjak inkább az i2c-nél?
Csak az i2c-vel meg az a bajom,hogy a tavolság,amig jól müködik kb 10m,nekem ennél több kell :(
Rs 485-tel meg ugyanaz a helyzet mint az Rs232-vel,vagyis félek,hogy 3 AVR-nél már bekavarodik...
Vagy ez nem igaz??
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Lehet.
DE: nem RS-232, hanem RS 485. És csak 1 lehet Master.
Úgy, mint az I2C esetén.

Minta van, BENBUS néven egész hibatűrő.
RS485-re 32 eszköz fűzhető 9600 bps/1,2 km esetén...
MeghajtóIC 75174-es, de ezt tedd foglalatba. ha a buszon valami induktív zavar bejön, az akkor csak ezt az ICt viszi...
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

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

kösz az infot!!!!

Közben meg is találtam a rajzot a letöltéseid közt 8)
Holnap majd gyártok párat, s utánna renélem már nem lesz baj :oops:
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

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

de most esett csak le...ez nekem megint nem lesz jo (pedig már örültem...), mert ha csak egy lehet master.... :cry:

Az lenne a lényeg, hogy egy központi egységet bármely masik eszköz, bármikor megszólíthasson, de ugy,hogy közben persze fusson más program (vagyis megszakítást kell generálni)...

Most akkor ez tényleg nem megoldható?
Vagy én vagyok már nagyon fáradt :cry:
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Fáradtság....
I2C-n is úgy működik, hogy van egy master, meg 1000 kliens. Ha kliens akar valamit, akkor INT vonalon szól a Masternak, az meg lekérdezi.
Nálad:
Mindenki figyelő állásban van, a Master is.
Egyik kliens INT-et generál a Masteren (A klienseken egy dióda van az INT lábon, így csak alacsony vagy magas jelszint okoz INT-et és egymáséba nem zavarnak bele).
Master vette az INT-et, így végigkérdezgeti a Slave-kat, hogy kinek van hasfájása...
- Slave 1?
- Semmi, kösz, nyugtázva
- Slave2?*
- Semmi, kösz, nyugtázva
- Slave3?
- Én voltam. Az a bajom, hogy.......
- Slave4?
....

*Itt esik be az INT...
Ha közben újabb INT esik be, akkor azt megjegyzi.
A sort illik végigkérdezni, kivéve ha csak 1 INT volt. De a biztos - hátha többen is hasfájósak - a sort teljesen körbekérdezni, amíg _minden _ eszköz azut nem mondja, hogy "- Semmi, kösz, nyugtázva". Ekkor senkinél nem ragadt mondanivaló.
Így egyetlen INT láb elegendő, kissé beáldozva a sebességen (körbekérdezés)....


Amiire vigyázz:
Print esetén 16 bytes FIFO tárad van. Azaz a buszra írás után ennyit várj , amíg vételre nem kapcsolod a chipet (alapban minden Slave input-on van!) . Én a print után egy waitms (szükséges *1,2) szoktam adni.
9600 bps esetén: 1 byte 10 bit (start, stop+8).
1 sec 9600 jel, akkor 10 jel: 1.04 msec.
->waitms 2
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

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

megfogadom,este soha tobbet nem AVR-ezek:D

najo,szep is lenne...de ez most tenyleg sokat segitett,s holnap ujragondolom akkor az egesz dolgot,mert az a baj,h egyik kutyu sem vt erre tervezve,csak most jott,hogy halozatba kéne kotni,s igy nemelyik eleg maceres, de jovoheten kiotlok valamit:)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Énnekem is mindíg aludni kell a dolgokra. Ma is összeraktam 10 alappanelt meg 10 teljesítményvezérlést (potom 10-12 óra forrasztás). Naná hogy nem megy valami benne. :(
Majd holnap megálmodom mi a hasfájása. a legszebb, hoyg ez ~24 példányban már működik, csak az kb. 1,5 hónapja készült el....

A RS485-n - ha nem akarsz INTet - akkor a Master egyfolytában kérdezgeto a Slave áramköröket elv is járható. Hogy a Slave-knek legyen idejük a saját feladataikat is ellátni, én 1..5 sec-es időablakkal dolgoznék.
Ekkor beesik egy megszólítás, megnézem nekem szól-e. Ha nem, akkor a sorosporti vételt tiltom addig (a bufferbe hadgyűljön az adat.) Az idő lejárta előtt (pl. TIMERrel nézem az időt) 0,1 seccel megnézem üres-e a buffer. ha nem, akkor kiolvasgatom a bennelevőket, és egyből el is dobom ezt az adatot (ez csak az időablakban futó kommunikáci nem nekem szóló része). A buffer kiürült, és nem telt épp le az időablak.

A master megszólítja a következő Slavet. Ha nem én vagyok -> előző procedúra. ha én vagyok, akkor van ~ 4 másodpercem, hogy a masterral megbeszéljem, hogy mi a hasfájásom. A 5...5 mp közötti időben _nem_ lehet a bsuzon forgalom, mert mindenki ekkor üríti a buffert....


Kérdés, hogy mekkora késleltetésed lehet az adat keletkezése és a masterre elvitele között. Ha kis sebesség elég, és rel. lassú válaszidő, akkor ez a megoldás teljesen jó.
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

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

ugy nezem,hogy valami jo megoldas csak osszejhon itt :wink:

Eddig ugy mukodott (csak 2AVR volt es RS232-t hasznaltam), hogy egy kozponti egyseg figyeli 8 helyseg homersekletet i2c-n, illetve ez vilagitasokat is vezerel,de azt csak egy szálon, pwm-mel.
Illetve vt egy RFID belepteto, ami kezelte szepen a belepest, s a fontosabb infokat elkulte soroson a kozpontnak,h "Figyelj,belepett valalki...",s ezt meg megszakitassal egybol jelezte a kozpont, el is tárolta.

Ez nagyon szepen mukodott mert egy master s egy slave vt, de...
van egy szellozeteto vezerles,amint lehet vezerelni helyben, de meg kene oldani,hogy a kozpont is vezerelje, illetve visszajelzest kapjon az aktualis allapotrol!

S ha ez menne,utanna lenne meg egy RFID egy masik helysegben...vagyis ez mar 3slave....

De amiket irtal,az tenyleg nagyon hasznos,s akkor ugy tunik,hogy atalakitom eloszoris RS485re, s "szep lassan" alkalmazom,amiket ajanlottal 8)

Annyira nagy komm.sebesseg nem szukseges ide,de azert meg aznap erjen at az adat... :lol:
vagyis kozben figyelni kell a helysegek homersekletet,s annak megfeleloen szabalyozni helysegenkent a termosztatikus releket.

Ugy erzem ezzel elleszek par napig...

Nekem meg sok szerencset, hogy meglegyen a hiba :wink:
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

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

javitas: nekem=Neked :lol:
Válasz küldése