Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Nem a cikket, hanem ezt a témát, amibe irkálunk, ezt olvasd végig!
Szerintem meg Topi eleg jol osszeirta az alapokat, sot ahogy nezem a halado szintek is jol megvannak a II. ill. a III. reszekben. Meg C peldak is vannak, tehat igazan nem erteem mi az amit nem ert az OP, de mivel konkret kerdese nem volt ugy hiszem nem olvasta el a cikket es/vagy nem probalta meg kovetni az tt elhangzottakat es pelda programokat. Na mindegy, nem nekem faj a fejem, csak kerdesesse teszi, hogy erdemes-e ezeket a cikkeket megirni. En is gondolkodtam kellene egy kimondottan C specifikus PIC cikket irni es hogy nekilatok most hetvegen, de ha el sem olvassak nem sok tetejet latom?
Idézet: „de ha el sem olvassak nem sok tetejet latom?” Na ezaz. Amikor 2-3 éve picekkel kezdtem foglalkozni, akkor nem az volt, hogy beírtam valamelyik fórumra, hogy ki mit ajánl, hogyan kellene, stb., hanem elolvastam az ezzel foglalkozó témákat mindenfelé, ennek köszönhetően megis találtam az induláshoz szükséges anyagokat, és nem tettem fel olyan kérdéseket, hogy írjon már nekem valaki egy ledvillogtatót. Persze nem nulla elektronikai tudással álltam neki a dolognak, mint ahogy egyesek képzelik a kontrollerek programozását, pl. az aktuális illető a ICD2 topikban aki nem tudja, hogy hová kösse a diagnosztikai célt szolgáló led másik végét. Az információhalmaz pedig azóta csak gyarapodott, csak aki lusta nekiállni végigolvasni az ezzel foglalkozó dolgokat, az nem tud elindulni sajátmagától. Vagy a másik lehetőség, hogy többet képzel magáról, mint amire képes. Akinek nem inge, természetesen ne vegye magára. Idézet: „hanem elolvastam az ezzel foglalkozó témákat mindenfelé, ennek köszönhetően megis találtam az induláshoz szükséges anyagokat” Szerintem ez követendő példa. Csak hát kevesen fogják fel sajnos... az eszesebbek mondjuk így kezdik. Amúgy meg manapság a "sültgalamb-váró" effektus van napirenden sok embernél...
Újabb agymenésem támadt. Rá lehet -e venni valahogy egy pic-et hogy tetszőleges bit sorozatot megadott baud rate-en kiküldjön magából hardveresen ?
Első ránézésre egyszerű a kérdés, de nem rs232 ről van szó. Tehát nekem nem kellenének start és stop bitek. Amit ha jól olvasom a .pdf et, nem lehet kikapcsoni az USART használatakor. Illetve lehetnének stop és start bitek, de lehessen őket átállítani 0 ra vagy 1 re, így részét képeznék a bit sorozatnak. Szoftveresen már sikerült megoldani Timer1/CPP modullal, megszakítással.
Kicsit elakadtam PIC analóg bemenetekkel..
Basic-el próbálkoztam ,de így is sok regisztert kell címezni , szerintem valami kimaradt. Esetleg ha valaki rá tud nézni a kódra lehet kiderülne mi maradt ki. A lényeg az lenne hogy 4 analóg csatornát szeretnék beolvasni( AN0,AN1,AN2,AN4) . A VREF+ -t az AN3 porton vinném be. Találtam egy mintaprogramot ami 3 AN csatornát olvasott és irt ki LCDre. Azt átalakítottam hogy VREF+-t felvegye és 10bites legyen. Az a gond hogy amikor 4. csatornát beleírtam akkor már az AN2 -t sem olvassa, és igazán nem értem hogy miért. Feltenném a programot, és a rajzot hátha valaki tudna segíteni megfejteni ennek a hibának az okát. Az eredeti programot ITT találtam. A rajz még ugy van hogy a VREF- GND re va kötve , de rájöttem hgy a regiszterekkel is GNDre lehet kapcsolni, ugyhogy ida kötöttem az egyik potit. Előre is köszönöm !
Az RS232 az aszinkron kommunikacios csatorna. A start es stop bitek nem veletlen kerultek bele, maskepp nem mukodik. Gondolj bele, hogy elkezd adni, es a az ado es a vevo nem jar szinkronban, mivel nincs ket tokeletesen azonos orajelu eszkozod. Mar onmagaban az is gond, hogy honnan tudja a vevo, hogy az adas elkezdodott es, hogy honnan kezdodott el. Ezekutan szetcsuszik a szinkron es egeszen mast fog venni a vevo mint amit kellene... Ha van start meg stop bit akkor a kommunikacio szinkronizalhato.
Masik megoldas a szinkron kommunikacio, amit potyo is emilotett pl az SPI-vel. Ott az adatatvitel egy kulon vezeteken atvitt szinkron jellel van szinkronizalva. Nyilvan a nagyobb sebesseg es a megbizhatobb atvitel jellemzi, cserebe meg egy vezetek kell hozza.
Szia ammateur,
Eloszor is a programodban a getz es a getch4 ugyanabba a valtozoba pakolja a meres eredmenyet... Masodszor pedig az eredeti programban szereplo szamaokat ha jol latom binarisra atformaltad - de javits ki ha tevedek, mert basicet nem ismerem. Mindenesetre a hexa 59 az semmikepp sem 01010001. Ez hex51 lenne ami ugye az AN2-t valasztja ki. A 01111001 pedig hex79 az pedig az AN7-et, de neked nem erre van rakotve a bemenet. Azonkivul arra is figyelj, hogy az AN4 nem azonos az RA4-el, az RA4-nek nincs analog funkcioja.
Köszönöm szépen a kiigazitást.
Kiigazitottam a dolgokat, de igy sem jó. 0 és 1-es chanel jól müködik, viszont ha a 2es chanel értéke változik változik a 4-es is. És a 4-es chanelt hiába változtatom nem változik semmi. Most már nem nagyon értem hogy ez mért van.
Itt a kód amivel próbáltam.
Előre is köszönöm a segitséget !
Erdekes, a rajz szerint ennek pont forditva kellene lennie, azaz a P1-et valtoztatod, akkor az AN4-en mersz es annak jonak kellene lennie, mig a P2 valtoztatasara nem szabadna semminek sem tortennie, mivel az eleve egy NEM ANALOG csatornara van kotve, azonkivul a kododban AN2-t mersz ami jelenleg a -Vref ami a foldon van. Tedd at ezt a potit egy analog portra, azonkivul az ADCON1 inicializalasnal az AN2 jelenleg alanog bemenet nem -Vref, tehat a konfiguralast is meg kell valtoztatnod (amugy miert kellett neked kulon -Vref-et megadni, miert nem jo, ha erre megy a P2 es marad analog bemenet?)
Ja meg valami: kommentekre nagyon figyelj, hogy az legyen ott amit a program csinal. Kommentek a munkadat segitik, konyebb a kommentet nezni mint a kodot sokszro, de ha az nem egyezik a koddal akkor elsiklasz a hibak felett. Pl a "Gosub getch4" kommentje, de az ADCON1 kommentje sem egeszen az ami oda van irva.
Kicsit fentebb irtam hogy közben rájöttem hgy a -VREFnek nincs értelme mert a regiszterrel a GND-t rákapcsoltam. Ezért a A0, A1, A2 bemeneteket használom amivel semmi gond nincs mindaddig míg az A5 re kötött CHANEL4-et nem akarom olvasni.
P1 -P4 potméterek csak a maximális feszültség beállitására szolgálnak ami most 1 VOLT. A beneti értékeket a P5 - P8 potikkal lehet változtatni 0 és 1 V között. Tehát a rajzon annyit kéne javitani hogy az A4 bement nincs használva, ezért a P6 poti az A2 re csatlakozik.
Valoban. Akkor nincs tippem, hacsak a picbasic pro-ban a pontosvesszo nem minosul megjegyzes jelolesere, igy az ADCON1 inicializalasanal 4-et tesz bele, de az meg nem stimmelne AN2-nel sem, szoval nem tudom, majd gondolkodom rajta, hacsak masnak addig nincs otlete.
Üdv Mindenkinek.
A következő két kérdésem lenne. 1, Ha egy 8 bites regiszterben van nekem egy BCD számom, (tehát a felső 4 bit 0) akkor azt, hogy tudom kiírni egy PORT-ra, úgy hogy csak a PORT mondjuk felső 4 bitjére kerüljön ki, mert a PORT alsó 4 bitje másra van használva? 2, Hogy kell leválasztani a PIC ICSPDAT és ICSPCLK lábait az áramkörtől, hogy programozáskor ne kelljen az áramkört eltávolítani erről a két lábról? 16F877-t használok. Köszönettel.
1.
2. adatlapban van rá példa is, két jumper a legbiztosabb (3 tüske, egyik oldalra téve programozóra, másik oldalra téve az áramkörre van kapcsolva)
Úgy kell megtervezni az áramkört, hogy ne okozzon gondot benne az égető működése. Az égetőn pedig CMOS kapcsolóval lehet megoldani a leválasztást. watt oldalán található ilyennel egybeépített párhuzamos portos égető, illetve az én ICD2 klónomon is megtalálható ez a megoldás.
A második kérdést félrenéztem... Igaz, én jobban szeretem, ha nincs ott az áramkör, mikor égetek, de potyo vagy watt megoldása biztosan üzemel (más kérdés, hogy van-e éppen mód ehhez tervezni).
Helló kobold és potyo (illetve fordítva is)
Mind a kettőtőknek köszönöm a választ. Kobold, értem amit leírtál, (azt hiszem), de az én gondom az, hogy pl. a PORTC,0 bemenetként müködik , de én a PORTC, 4 től PORTC,7 ig szeretném kiíratni az én BCD számomat, akkor félek, hogy az én 8 bites számom megzavarja a PORTC,0 működését. Irassam ki bitenként? Potyo: nekem gyári PICkit 2 égetőm van, és mintha valahol láttam volna, hogy egy-egy ellenállással (talán soros volt) leválasztották az áramkört. Köszönettel várom a válaszotokat.
A PORT írása nem befolyásolja a bemenetnek állított lábakat. Nézd meg a lábak blokksémáját az IOPorts részben az adatlapban!
Az nem igazi leválasztás, de gyakran elegendő. 330-470 ohm környéke elég kicsi ahhoz, hogy ne okozzon gondot a programozáskor, de elég nagy is ahhoz, hogy ne terhelje túl az áramkört, amikor a program futni kezd.
Amelyik vonal bemenet, azt úgy írod, ahogy akarod a programból, fizikailag nem változik semmi. Ugyanis az írás a kimeneti puffer beállítását jelenti, az olvasás pedig közvetlenül a láb állapotát adja vissza; ha egy vonal bemenet, akkor a kimeneti puffer tiltott, vagyis írhatod, de az értéke "nem jut el" a lábig.
Ebben az esetben, ha a REG fölső 4 bitje mindig biztosan nulla, és neked csak az alsók kellenek, az előbbi kód is jó. A PORT alsó fele nem változik, a felső pedig REG szerint íródik.
Helló potyo és kobold.
Köszönöm a segítségeteket. Most is tanultam. Köszönettel
Vcc mellé a 75176-nál tehetnél még egy 100 nF kondit, jobb az, ha ott van. Amúgy jónak tűnik.
A két eszköz között mindenképp csavart érpáron vidd a jeleket, nagyon sűrűn csavarni nem kell. Nálam hasonló átalakító dolgozik SP485-tel, méterenként kb. 30 csavarással, hibátlan még a nagy gépek mellett is. A programnál arra figyelj majd, hogy egyrészt ugye half-duplexben leszel (vagy ad, vagy vesz), másrészt amit adsz, az azonnal vissza is jön az adó oldalon, és figyelmen kívül kell hagyni. Kettőnél több eszköznél csak a vonal két végén legyen lezáró (60 Ohm a vonalellenállás), gyári eszközökön ezért van kapcsoló is a 120 Ohm-os ellenállásnál, hogy tetszőlegesen lehessen variálni. Két eszköznél, kis távolságon akár egy lezáró is elég, de ha van neki hely, hadd legyen benne. Ha ezeket tudtad már, akkor nem szóltam
Nem tudtam még! Elektronikában elég béna vagyok sajnos.
Ez a lezáró ellenállás hova is kell pontosan? A panelre kell valahova raknom, vagy a kábelnél kell megoldani? Bocs a hülye kérdésekért!
Az RS485 csatlakozótól a 75176 felé menő vezetékek közé kell, célszerűen ez a sáv ne legyen félméteres
Csatolom az általam épített 232-485 half-duplex átalakító rajzait, hátha segít. Igaz, smd, de az volt kéznél, mikor csináltam. Nem méretarányos, az igazi jóval kisebb, az elhelyezés miatt nagyítottam rajta. Az A és B vonalak fel- illetve lehúzó ellenállásokkal is el vannak látva, a szabványnak megfelelő átalakítók nézegetése után tettem rá ezeket (frekvenciaváltóhoz készült). Az adat- és vezérlővonalakon is vannak ellenállások, de az csak a MAX232 miatt lett így, anélkül nem volt stabil, szerintem te elhagyhatod.
A 6-os és 7-es lábak között nekem is van egy 120-as ellenállás... Nem arra gondoltál?
Az nem elég? Idézet: „másrészt amit adsz, az azonnal vissza is jön az adó oldalon” Az SN75176 RE és DE lábait össze kell kötni, és úgy kötni rá a pic lábára, akkor nem jön vissza a küldött adat. A te rajzodon a RE fixen GND-re van kötve, azért jön vissza a küldött adat.
Arra gondoltam, elvileg elég. Én meglévő eszközökhöz csináltam ezt, azért van benne a többi.
Köszi a segítséget, így már remélem minden oké lesz vele!
|
Bejelentkezés
Hirdetés |