Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   642 / 1320
(#) watt válasza husla84csaba hozzászólására (») Jan 14, 2010 / 1
 
A többiek már leírták a lényeget, én próbálom kicsit másképpen szemléltetni.
Azt már hallottad, hogy ez egy fizikai szabvány. Ugyanolyan adatok futnak a vonalakon, mint az RS232 esetében, csak az áramköri kialakítása olyan(ellenben az RS232-vel), hogy bármelyik eszköz rá tud dumálni a vonalra. Persze egyszerre beszélni még az embereknek sem érdemes, mert senki nem fog érteni semmit. Ezért van a protokol, ami meghatározza, hogy ki mikor dumálhat. Van egy master, ami osztja az engedélyeket, illetve megszólítja a vonalon figyelő slaveket. Ezt egy csomag elküldésével teszi, amiben van egy cím. A cím bármekkora lehet, csak a protokol határozza meg. A protokolt te is kitalálhatod, nem kell gyáriakat használni. Én is saját protokolt használok.

A PIC-ek képesek 9 bites adásra, és a 9. bit megszakítást is okozhat a slave-nél, ha így van beállítva. Ezzel el tudod különíteni az adat forgalmat a címtől. (az adatban a 9. bit mindig 0.)

Jó lenne ha lerajzolnád a jelenlegi kialakítást, úgy a protokolban is többet tudnánk segíteni!
(#) Hp41C válasza husla84csaba hozzászólására (») Jan 14, 2010 / 1
 
Szia!

- Nem tudjuk pontosan mi is a feladat...
- Egy példa: Az RS485 kommunikóval rendelkező eszközöknek néhány bájtot kell elküldeni. Nem elég hatékony (kétszer annyi adatot ad, mint kellene), de (segédeszközök nélküli ember által is) olvasható, ellenőrizhető terminálon való megjelenítéssel.
- Megoldás: A távirat így nézzen ki:
aa: egy byte eszközcím hexadecimálisan, két ascii karakterként (0..9, A..F) küldve, a legmagasabb bit mindig 1, olvashatóság érdekében a magas helyiérték megy először,
nn: a táviratban átküldött adat byte-ok száma hexadecimálisan, két ascii karakterként küldve, a legmagasabb bit 0,
dddd...: nn darab adat byte, két-két ascii karakterként küldve, a legmagasabb bit 0.
cc: ellenőrző összeg - a táviratban szereplő bájtok (a címtől az utolsó adatbyte-ig) összege mod 256, két ascii karakterként küldve, a legmagasabb bit 0.

Vétel:
- Meg kell várni, amig olyan karakter jön, ahol a legmagasabb helyiértékű bit 1. A következő karakternél ellenőrizni, hogy a legmagasabb helyiértékű bit 1 - ha nem: hibás távirat. Ha igen: akkor megvan a cím. a következő két karakter vétele ellenőrizve, hogy a legmagasabb helyiértékű bitek 0. Már ismert a távirat hossza. A hossznak megfelelő adatbájtok (2 karakter) vétele ellenőrizve, hogy a legmagasabb helyiértékű bitek 0. Az ellenőrző összeg (2 karakter) vétele ellenőrizve, hogy a legmagasabb helyiértékű bitek 0. Csak az az egység dolgozza fel a táviratot, amellyiknek a cím szól. Az adatot csak akkor hiszi el, ha a vétel során nincs hiba valamint az általa generált és a vett összeg egyezik.

Nem értek egyet a csak egyirányú megoldással, nem jön vissza jelzés arról, hogy az egység sikeresen vette az üzenetet...

Szia
(#) icserny válasza Hp41C hozzászólására (») Jan 14, 2010 / 1
 
Ha jól értem a feladat megfogalmazását ebben a hozzászólásban, akkor az RS485 itt csak az egyirányú fizikai átvitel megvalósításához kell. Ezért szerintem nincs értelme semmiféle külön protokolnak vagy címezgetésnek, küldheti az adatot ugyanúgy, mint korábban USART-on.

Csak az RS-485 illesztők adatirányát kell beállítani...
(#) Hp41C válasza icserny hozzászólására (») Jan 14, 2010 / 1
 
Szia!

A nagyobb távolság miatt hibásan vett karakter után az üzenet vétele elcsúszhat, a dekódolt üzenetek nem azok lesznek, amit az adó küldött.. Mindenképen kell valami, ami helyreállítja a vevő dekódolását ....

Szia
(#) c27 válasza Hp41C hozzászólására (») Jan 14, 2010 /
 
Szia. Akkor végigmérem a kivezetéseket és valahogy le kéne szigetelni a forrasztásokat inkább attól félek, hogy egyes helyzetekben összeérnek. Akkor most ha mégis valami balul sül el akkor mi száll el? Watt azt írta, hogy max a port, de akkor mi van? Csak annyi, hogy a nyomtatóport nem használható többé, de minden más működne? (Az ic bemérést annyira nem értettem meg elsőre, de inkább a csatlakozásokat ellenőrzöm és valamivel ki kéne önteni azokat csak nem tudom mivel. Van ilyen fehér ragasztórúd az megfelel? Esetleg van egy kis műgyanta is, de azt inkább meghagynám késöbbre.)
(#) Hp41C válasza c27 hozzászólására (») Jan 14, 2010 /
 
Szia!

Első mérésekhez bontható szigetelés: minden vezetékre műanyagcső a csatlakozó forrasztására ráhúzva, vagy a ragasztópisztolyos megoldás.

Szia.
(#) roland0327 válasza vicsys hozzászólására (») Jan 14, 2010 /
 
Akkor te úgy is kened vágod ezt PIC-es dolgot, tudsz nekem egy bevált égetőt, ha lehet nyákkal. És valami olvasmányt ami fullra az alapoktól kezdi mer még egyáltalán nem programoztam.
(#) sucuka válasza roland0327 hozzászólására (») Jan 14, 2010 /
 
Segítek én is, ha akarod, én is most kezdem totál nulláról Dobj egy PÜ-t, és adok pár dolgot.
(#) sucuka hozzászólása Jan 14, 2010 /
 
Aki használ, vagy épített potyo-féle ICD2 3.verziójá-t, az mondja már meg legyen kedves, hogy az X5 csatlakozóra kötendő kapcsoló milyen? Váltó, 3 álású, vagy ilyesmi. Alkatrészrendelés előtt állok, és nem tudom melyiket vegyem, mert a kapcs.rajzon nincs feltüntetve, csak a csatéakozó.

Köszi!
(#) husla84csaba válasza watt hozzászólására (») Jan 14, 2010 /
 
program rs485_test
dim dat as byte[8]
sub procedure interrupt
RS485Slave_Receive(dat)
PORTB=dat[0]
PORTD=1
Delay_ms(500)
PORTB=dat[1]
PORTD=2
Delay_ms(500)
PORTB=dat[2]
PORTD=4
Delay_ms(500)
PORTB=dat[3]
PORTD=8
Delay_ms(500)
PORTB=dat[4]
PORTD=16
Delay_ms(500)
PORTB=dat[5]
PORTD=32
Delay_ms(500)
PORTB=dat[6]
PORTD=64
Delay_ms(500)
PORTB=dat[7]
PORTD=128
Delay_ms(500)
end sub
main:
TRISB = 0
TRISD = 0
PORTB = 0
PORTB = 0
Usart_init(9600)
RS485Slave_Init(PORTC, 2, 160)
SetBit(PIE1, RCIE)
SetBit(INTCON, PEIE)
ClearBit(PIE2, TXIE)
SetBit(INTCON, GIE)
while true
wend
end.

Terminalbol bármit küldök,a PORTBn ez látható(a PORTDt csak nyomonkövetésnek használtam,hogy tudjam melyik dat-ot látom PORTB kimeneteken):
dat[0] = 10010110
dat[1] = 11111111
dat[2] = 00000000
dat[3] = 11111111
dat[4] = 00000000
dat[5] = 11111111
dat[6] = 00000000
dat[7] = 11111111
(#) watt válasza husla84csaba hozzászólására (») Jan 14, 2010 /
 
Sajnos ezt a fordítót nem ismerem, ezért az inicializációs részeket nem tudom jól írtad-e. A többi egyértelmű lenne, de nem sokat mond.

Többet segítene, ha lerajzolnád az áramkört, akkor is, ha tök egyszerű! Pontosan kéne, minden alkatrésszel, amit most használsz! Lehet, hogy nem is a program hibája a dolog.

Ha kódot illesztesz be, akkor van erre egy gomb(Kód). Ha fölé mész az egérrel láthatod a használatát.
(#) icserny válasza husla84csaba hozzászólására (») Jan 14, 2010 /
 
Ez így garantáltan nem jó, hogy a programmegszakítás kiszolgáló eljárásába teszel 8x0,5 másodperc késleltetést!
(#) MPi-c válasza sucuka hozzászólására (») Jan 14, 2010 / 1
 
Egy egyáramkörös, kétállású (átkapcsoló) kapcsoló, de bőségesen elég, ha egy jumperrel oldod meg. Az általad kinézett kapcsolásnak van egy újabb változata is: itt. Csak olvasd végig az oldalt!
(#) Trovo hozzászólása Jan 14, 2010 /
 
Hy!

Tudom hogy nem egészen PIC-es téma, de nem találtam másik topikot, ahol lenne szó róla.
Találkozott már valaki a Silabs kontrollereivel, és ha igen milyenek a tapasztalatai?
Én most kezdtem velük foglalkozni, és első látásra nagyon okos és könnyen programozható szerkezetek. Főként a PIC-ek nem feltétlenül érthető regiszterkiosztásaira és önkényesen átbillenő bitjeire gondolok.
Szóval ha valaki használta, vagy csak ismer valami helyet ahol bővebb információt lehet szerezni róluk, az kérem jelezze akár itt a fórumban, akár privát üzenetben. Köcce!!!
(#) potyo válasza Trovo hozzászólására (») Jan 14, 2010 /
 
Idézet:
„Főként a PIC-ek nem feltétlenül érthető regiszterkiosztásaira és önkényesen átbillenő bitjeire gondolok.”


Azért erre kíváncsi lennék, hogy mi a regiszterkiosztás, ami érthető? Az önkényesen átbillenő bit meg tipikusan olyan, hogy nem olvastuk el az adatlapot...
(#) p_istvan válasza Trovo hozzászólására (») Jan 14, 2010 /
 
Ez olyan volt, mintha besétálnál a Fradi szurkolók közé, majd -miután kicsit szidtad a csapatukat-, megkérdeznéd nincs egy felesleges belépőjük az MTK meccsre!
(#) Trovo válasza potyo hozzászólására (») Jan 14, 2010 /
 
Elnézést kérek ha az előbb megsértettem volna valakit. És félreértés ne essék, én is használom a PIC-eket, sőt a legújabb 32eseket is, és a Microchip tényleg jó dolgokat készít.
De az én véleményem az, hogy 8051-52 es proci regeszteri áttekinthetőbbek, és a működésük is kicsit logikusabbnak tűnik.
DE EZ CSAK AZ ÉN VÉLEMÉNYEM!!!
És elismerem, rosz helyen tettem fel a kérédst.
(#) sucuka válasza MPi-c hozzászólására (») Jan 14, 2010 /
 
Köszi szépen, megtörtént, már egy kicsit én is változtattam rajta
Mondjuk csak annyi, hogy mindkét oldalra egybefüggő GND került, ahogy a tiéden is van, csak a potyo-féle verzióban.
(#) sucuka válasza p_istvan hozzászólására (») Jan 14, 2010 /
 
Ez egy nagyon ász beszólás volt, jót nevettem
(#) husla84csaba válasza watt hozzászólására (») Jan 14, 2010 /
 
A mellékelt kapcsolás probáltam.LTC485 helyett MAX485CPE,PIC18F452 helyett PIC16F877.3szor átnéztük,nem lehet benne hiba,ha csak nem hibás a kapcsolási rajz.Arra gyanitok,hogy a küldési móddal lehet gond.Probálgattam usart terminalbol is,de WindMill comDebug-al is.Abban a pillanatban,hogy egy már meglévö protokollal próbálkozok,csak egy 1es szám elküldésével a PIC egy rakás adatot fogad,de érdekes módon mindig ugyan azt,bármit is küldjek.Valszeg maga a protokoll okozza ezt a jelenséget,a visszajelzésekkel,meg stb...

kapcs.JPG
    
(#) watt válasza husla84csaba hozzászólására (») Jan 14, 2010 /
 
Milyen megfontolásból tettél soros ellenállásokat, ráadásul 56ohm-okat a vonalba?
A másik kérdés, hogy az adatlapban ajánlott 120ohm-os lezárásokat miért nem használod?
A többi részben nem látok hibát így hirtelen, viszont ezek elég komoly eltérések!
(#) Hp41C válasza husla84csaba hozzászólására (») Jan 14, 2010 / 1
 
Szia!

- A jel útjában levő 56 ohm-os ellenállásokat ki kellene venni, helyettük a vonal legvégén levő vevőnél és az adónál (alsó LCT485-nél) a szimmetrikus vonal két pontja közé 100-120 ohm lezárás kell.
- Polarizálni csak egy helyen kell, de lényegesen kisebb ellenállásokkal kb 1k, de nem mindig van szükség a polarizálásra.
- Ha a RE negált jeleket is állítod, akkor a pic RC7 vonalát 10kohm -mal a tápjára kell húzni. A max232 T2in jelénél a beépített 400k sok, ide is tennék egy 10k-t a VCC felé. (Ha magas az LTC RE bemenete, a vételi vezetékek nagyimpedanciás állapotba kerülnek.)
- 300m hosszú vezetéknél már a vezeték típusa sem lesz mindegy: sodrott érpáras, árnyékolt kábel kell legalább 0,5mm2 keresztmetszettel. A vezetézésnél nem szadad leágazásokat csinálni. A készülékek a lehető legrövidebb vezetékekkel csatlakozzanak a vonalhoz. Nem szabad a vezetéket több fajta vezeték darabból összetoldani.

A teszthez:
1.
- Folyamatosan adjon a pc karaktereket, és ellenőrizd le, hogy a max232 R2in és R2out kivezetésén megjelenik-e változás.
- RTS jelet állítgatva, nézd meg, hogy az alsó LTC485 differenciális kimenetén megjelenik-e az adás. A max232 negál, de a PC com portjában is van egy illesztő, az is negál.
- A soros ellenállásokat vedd ki, helyette a lezárás, ahogy írtam, az adatlap is.
- A pic nélkül az RC2 jelet alacsonyra húzva nézd meg, hogy a jelváltás megjelenik-e az RC7-en, ha az RC2 magas, akkor a jelváltásnak nem szabad megjelennie. Itt van a hiba, ha nagyimpedanciás az RC7, akkor valamit venni szokott a pic....

2.
- Ugyanez fordítva. A pic gondolkodás nélkül adjon valamit, az RC2 legyen magas. Az RTS vezérlésével állítsd be az alsó LTC485 RE jelét alacsonyra.
- Megjelenik-e az adás a pic RC6 lábán, a felső LTC485 DI bemenetén és a differenciális kimenetein?
- Megjelenik-e az adás alsó LTC485 differenciális bemenetein és a RO kimenetén?
- Megjelenik-e az adás a max232 T2In bemenetén?
- Megjelenik-e az adás a max232 T2out kimenetein?

Szia
(#) husla84csaba válasza watt hozzászólására (») Jan 14, 2010 /
 
Akkor ez okés lenne??Nekem gyanus ez a max232ös bekötés.Légyszi ha lesz egy kis idöd kacsincs rá...

rs485.gif
    
(#) husla84csaba válasza Hp41C hozzászólására (») Jan 14, 2010 /
 
Na igy már majd csak boldogulok,köszi a segitséget,csak egy dolog zavar.A mellékelt rajzom(rs485)amin rendben állnak az ellenállások,egy rendellenesség lehet.Ime egy adatlap részlete mellékelve.Melyik a helyes??Mert a rajzok szerint valami nem stimmel!!
(#) Hp41C válasza husla84csaba hozzászólására (») Jan 15, 2010 /
 
Szia!

Javítottam a rajzodon... Inkább ezt az adatlapot használd, jobban látszik a bekötés....

Szia

485.gif
    
(#) c27 válasza Hp41C hozzászólására (») Jan 15, 2010 /
 
Szia. Megvagyok az lpt portos égetővel. Még egyszer átnézek mindent aztán egy próba lesz. Ha bedugom és működik akkor mit fogok látni vagy ahhoz minden féle képpen kell a program meg egy pic? Valahol kiírja hogy ez az eszköz megfelelően csatlakozott? Ha mégsem jó akkor honnan fogom tudni kiírja azt is?
(#) watt válasza c27 hozzászólására (») Jan 15, 2010 /
 
Idézet:
„Még egyszer átnézek mindent aztán egy próba lesz.”

Elolvastad hogyan kell az égetőt feléleszteni?
Melyik programot akarod hozzá használni? (ugye a 18F2550-et akarod égetni?)
(#) c27 válasza watt hozzászólására (») Jan 15, 2010 /
 
A cikkel elolvastam. A WPB_F18 programot akarom használni a 18F2550-hez (abból meg pickit2 lesz). A felélesztés gondolom az a beállítás ami a cikknél is ott van. De én arra lennék még kíváncsi, hogy ha simán bedugom a nyomtatóportba a csatlakozót akkor ha elkötés lenne vagy ha jó akkor az rögtön kiderül vagy ahhoz kell a progi és a beállítások után vagy felismeri vagy ha nem akkor gáz van?
(#) watt válasza c27 hozzászólására (») Jan 15, 2010 /
 
A hardvert nem ismeri fel semmi. A leírásban olvasatod, hogyan kell végigcsekkolni a vonalakat műszerrel. Ehhez előtte rá kell csatlakozni az LPT portra. Ha ekkor már zárlatod van, akkor az baj, nyílván ezt megelőző mérésekel ki kell zárni(ellenállásmérésben kell vizsgálni a vonalakat a testhez, egymáshoz, és a pozitívhoz képest. Nem szabad 1Kohmnál kisebb értékeket mérj.
De ez már kicsit kezd a PIC-kérdések témaköréből kikerüni! Ha ilyen jellegű kérdésed van még, válasz más topicot, mondjuk a PIC égetők építésével kapcsolatosak közül valamelyiket(de ne a PICKit2-t, mert az sem az a téma, ahol LPT-s égetőket tárgyalnánk, főleg nem az ohm szintű kérdéseket!)
(#) c27 válasza watt hozzászólására (») Jan 15, 2010 /
 
Ok, csak arra voltam kíváncsi, hogy csatlakozáskor a hiba észlelhető e. Ezek szerint nem, de ha már akkor is zárlat van akkor a port már azonnal tönkre is mehet? (Csak ennyit akartam még kérdezni.)
Következő: »»   642 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem