Fórum témák
» Több friss téma |
Az RS-232 átvitel aszinkron, azaz nem is kell hozzá (és nincs is) órajel, csak az említett RX-TX, esetleg handshaking, de az neked most nem kell.
Egy-egy karakter vétele nagyjából úgy történik, hogy startbit jön, elindul egy időzítő az elméleti bitsebességnek megfelelően, és periodikusan megvizsgálja a vonal szintjét (belépteti egy regiszterbe). Nincs külön szinkronizálás; ha eltérő a küldő és a fogadó oldalon a sebesség beállítása, vagy pontatlan a fogadó időzítése, sikertelen lesz az átvitel. Te azt írtad, küldeni akarsz PIC-ről PC-re. Ehhez a proci USART modulját kell használnod (használt I/O lábakat persze megfelelően konfigurálni kell); inicializálni a megfelelő sebességre, adathosszra, és beállítani az aszinkron módot. Ezután a TXREG regiszterbe történő írás automatikusan kiváltja a küldést, aminek a végén a TXSTA regiszter 1. bitje (TRMT) 1-be billen, ezt pollingozva vezérelheted a ledet. Ha fogadni is akarsz, akkor engedélyezni kell a vételt és az RCIF megszakítását, a kiváltott megszakításnál pedig csak az RCREG regisztert kell kiolvasni, és már meg is van egy fogadott byte. Az USART modul miatt az átvitel többi része automatikus, a megfelelő konfiguráció után gyakorlatilag nem is kell vele törődni.
Azt hiszem, kezdem kapisgálni. Szal: alapesetben logikai 1 szinten van a soros port, amikor a PIC adni kezd, egy bitidőre logikai 0-ra kapcsolja a soros vonalat, aztán kezdődhet az átvitel. Átvitel befejeztével küld egy (két) stop-bitet és ezzel átment egy byte. (Ha 8 bitesre van konfigurálva az átvitel). De a külön start-stop bitekkel nem kell foglalkoznom, a PIC usart modulja automatikus volta miatt. Tehát konfigurálom a PIC-et, és indítom az átvitelt, a start-stop bitek automatikusan kiküldésre kerülnek. Eddig jól értem?
Hibátlan
![]() Az AN774 segédlet a Microchip-től szerintem teljesen kitárgyalja ezt a témát, annál többet nem is kell foglalkozni az átvitel módjával, esetleg még azt olvasd át.
Köszi, köszi! Átnézem a segédletet, és -azt mondod a kapcs rajz jó (bár kissé borzasztó!
![]()
A dr. Kónya-féle könyvet nézegetve megint kétségeim vannak. A könyvben vázolt MAX232 illesztés 11 és 12 lába pont fordítottja az előzőleg feltöltött rajzomnak. Melyik a jó? Szerinted?
És valóban
![]()
Én is úgy gondolom a MAX adatlapja alapján! Viszont a MAX232 6-os lábán levő kondi is fordítva van. Azt is fordítsam meg?
Az nincs fordítva, a polaritás úgy helyes. Üzem közben a 6. láb ugyanis negatív feszültségű.
Köszönöm a segítséget! Megfordítottam a lábakat és szépen küldi az adatokat a PC-re!
![]() ![]()
Nincs mit
![]()
Hogy őszinte legyek, PC felől csak monitorozom a portot, hogy a PIC küld-e adatokat. Van egy GSM adapter, ami PC-ről vezérelhető. Nokia. Soros porton ki lehet adni parancsokat, hogy pl küldjön egy adott számra egy adott sms-t. Ha megoldható lenne, szeretném, ha a PIC küldené ezeket az adatokat, mert akkor a lakásriasztóval kombinálva sms jelzés menne a betörésről. Ha ez nem oldható meg, mert mondjuk a gsm adapter handshake-t használ, vagy mittuménmi, akkor is sokat tanultam! :yes:
A handshaking is megoldható, csak bonyolódik vele a program. Én ipari GSM modemmel már csináltam ilyet, annak nem kellett semmi más a kommunikációs vonalon kívül.
Ezek a modemek, adapterek AT parancsokkal bírhatók működésre, és konfigurálhatók is ilyen módon. Ez azt jelenti, hogy előre definiált karaktersorozatokat kell küldeni nekik, a karakterek (alfanumerikus és vezérlőkarakterek is, az ASCII kódtáblából) hordozzák a parancs és az esetleges adat elemeit. Nem nehéz, legtöbbször az szokott gondot okozni, hová tegye el az ember a 12 db, egyenként 50-60 karakteres üzenetet, mert a PIC-ben nem fér már el... Példának itt egy régebben lementett, már nem létező (vagy elköltözött) lapról a Nokia AT-parancsai. Ha összeállt, hogy mit kellene küldened a modemnek, akkor először PC-ről, terminálprogrammal leteszteled, és ha megy, lehet írni a PIC-be a progit ![]()
Itt küldök 2 egyszerü progit, ha mondjul 876-tal vagy 877-tel csinálod akkor az analóg bemenetek állapotát is át lehet játva küldeni...
1-s progi ha lenyomod egy nyomógombot akkor az rs-check progi vevő mezejében 1-et látsz ha felengeded, akkor 0-t 2-es progi, ha nyomkodod a nyomógombot, akkor egy 8-bites változót növelsz 0-100-ig. A nyomógombot RA.1 lábra tedd és alpban 4.7k-val huzd pozitivra, a nyomó testre kapcsoljon. 4MHz Quartz oszcillátor, az MCLR láb belül van resetre kötve( hagyd szabadon) , RS232 port sebesség 9600 bit/s RB.1=RX, RB.2=TX
12 db egyenként 50-60 karakter hosszú parancs??? Az rengeteg! Lehet, nem is ér ez ennyit!
![]()
Ez nem fért bele az előzőbe _hex
Köszi, köszi!!! Én belső oszcillátort szeretek használni, gondolom, ez nem okoz gondot a proginak? (Persze, átkonfigurálom a PIC-et)
Irtam még gyorsan egyet...
itt négy "számot" fogsz kapni a PC-re ( 4 számot 255-ig) pc_s progiba vevő oldalon az "add" gombbal 4 változó mezőt kell kijelölni... jó szórakozást! Az utolsókat belsőre is...
Itt van belsőre is ...Viszont ilyesmihez jobb a Quartz...
Arra gondoltam, kipróbálom az általatok kapott friss tudásomat oly módon, hogy a RB0-ra kötött nyomógombom lenyomásával 'A' karaktert küldök a PC-re, míg RA0-ra kötött LED-em az 'üzemkész' állapotot mutatná.
Na persze, nem olyan egyszerű az élet! Az történik, ha tápot adok az áramkörnek, 'p' karaktereket küld folyamatosan a PC felé a PIC, és a LED-em halványan világít (!) ![]() Mit tolhattam el már megint?? ![]()
Neked nem biztos, hogy kell annyi, sőt biztosan nem, de volt már, aki húszféle sms-t akart küldetni magának, ha nyitva maradt az ajtó, ha bement a macska a garázsba, stb... Olyankor kell a hely, néhány parancs simán elfér.
A belső oszcillátor helyett tényleg jobb volna egy kvarc, eléggé számítanak az időzítések, kár volna három pici alkatrész miatt szenvedni.
A konfigot nem néztem, de csak jó, ha küld; a nyomógombhoz nem ártana pergésmentesítés; küldés végén, ha az utolsó bitet is kiléptette a PIC, a TRMT bitet billenti be, inkább azt figyeld; valamint a KIIRAT rutinban van egy goto, ami nem tudom, hova goto, a return előtt
![]()
Ennek az RA.0 ra kötött ledednek nyugtáznia kell az adást
Az RB.0 a nyomó itt már Ez a nyomó tuti pergés mentes..."szoftveresen"
Bocsi, tényleg! Természetesen az előző utasításra GOTO!
![]()
Egész pontosan melyik rész a pergésmentesítés? Nekem ez még elég héber...
![]() ![]()
Az one shot \"rutin\" Ez bármilkor bejön,... a lábra adott változás egy proci ciklusra érvényes...
Egyébként megszólalt már valami abból amit küldtem?...
Hmmm, például ez az utolsó nem megy, igaz belső oszcillátorral próbáltam.
külső, 4MHz , port 9600, 1 byte megy át, ha nyomkodod
az RB.0-t növeli az értékét a változó... A pc-s progin 1 Byte-ot állíts be fogadásra, az ismétlési időt leveheted, 100ms-ra, RS-Check.exe-t használj... Az MCLR "belül van használva" kivül szabadon marad...
Eddig én próbáltam válaszolgatni, most viszont én kérnék segítséget... PC-re nem írtam még progít, szerintem egyenlőre nem is fogok...
Az lenne a kérésem van-e ötletetek, arra, hogy a soros porton beolvasott adatokat (amik egy PIC-ből hívunk be) kb 20-30 byte, hogyan tudnám úgy behívni, hogy egy táblázatba rendeződjenek,(esetleg dátum,Időpont) amit le lehet menteni és nyomtatni is lehet, esetleg meg tudjam "formázni" a megjelenésüket pl:két byte összeadása, vagy más müvelet, esetleg szöveget hozzárendelni, pl hét napjainak a neve...Van-e erre valami jó progi, vagy valami jó egyszerüen kiitelezhető megoldás a szokásos win alkalmazások alatt...
Szerintem erre írni kellene egy kis programot. Én nem tudok ilyenről, hogy létezne készen. Túl specifikus a feladat.
Én is ettől tartok, de hátha a lelkes HE-sok ki mit lel a neten, mozgalom termékeként, találkoztak hasonlóval, vagy a képzettebb programozók improvizálnak valamit...
|
Bejelentkezés
Hirdetés |