Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Konkretizálom a dolgot:
Mérés-adatgyűjtés a feladat. PC fogadott eddig 2db nyomásadatot soros vonalon, 1 db adatgyűjtő jelét szintén sorosan, illetve a gyűjtött és feldolgozott adatokat és eredményeket szintén sorosan továbbküldte egy másik PC-nek. Ki akarom váltani a PC-t, mert indokolatlan. Arra gondoltam, hogy megoldom a feladatot egy PIC-cel, ha le tudok vele kezelni 4 soros vonalat.
Attól is függ, milyen sebességen kellene kommunikálni. 19200bps úgy nagyjából egy felső határ, ha csak adatot kell fogadni a szoftveres soros porton. Ha küldeni is kell szoftveres porton, az már problémásabb, mert ott pontosan kell a fel és lefutó éleket generálni. Na meg a több soros port kezelése sem tűnik olyan simának CCS-ben. asm-ben finoman le lehetne programozni, de ezek a CCS féle beépített cuccok sok meglepetést rejthetnek magukban.
Helo!
16F628A proci adatlapja azt írja ,hogy a PWM 10bit-es. Melyik regiszterekkel lehet állítani a kitöltést 10biten? Én most csak a CCP1L-t változtatom de ez csak 8bit.
Véleményem szerint a küldés sokkal egyszerűbb, mint a fogadás. A küldésnél nem kell szinkronizálni senkihez a műveleteket, egyszerűen timer-ből kell lökdösni a kimenetet, fogadásnál viszont éleket kell figyelni, esetleg több mintát venni és azt "átlagolni" (zavarszűrés), szóval jóval több macera.
Mindamellett egy jó gyors, mondjuk 18F-es PIC-kel szerintem a 19200bps akár több vételi portra is megírható, de valószínűleg szigorúan asm-ben kellene programozni, hogy tényleg minden úgy történjen, ahogy az ember elképzeli. Nálam a forrasztóállomásban egy 16F684 a belső 8MHz-es órájáról szoftveres soros vonalon 19200bps-sel küldi az adatokat a PC felé, emelett még azért a páka hőfokszabályozását is megoldja, digitális szűrővel és PI szabályozószámítással. A 18F-eknél a belső 8MHz-es órát általában még 4x-ezni is lehet, így külső kvarc nélkül lehet 32MHz-ről járatni a CPU-t, ami biztosan elég egy ilyen feladathoz.
A CCP1CON-ban van a maradék két bit.
Sebesség legfeljebb 9600 bps, de még az is túlzás.
Idézet: „...ezek a CCS féle beépített cuccok sok meglepetést rejthetnek magukban...” Akkor álltam át Basic-ről CCSC-re, amikor egy ilyen beépített rutin (utasítás) megszívatott. A C-ben idáig még nem csalódtam, teljesen korrektul működik.
Üdv!
Tegnap délután ügyetlenkedtem egy változatot a problémádra. Nem mondom, hogy tökéletes, de szerintem így kellene megoldani: a léptetés irányát adó nyomógombokat az RB megszakítással kellene kezelni, a léptetést magát pedig valamelyik Timer megszakítás végezné. Az RB6, 7 használata miatt az RE0, 1 -re is használatba került, ezért van a Timer megszakításban az a néhány if. Megjegyzem assemblerben sem lenne komplikált, sőt... Ha valami többféle effektes dolgot akarsz összehozni, nézd meg watt honlapján a fényfüggönyt! Annak a forrása assemblerben van, de a sok megjegyzés segít megérteni.
Olvasgasd végig a CCS topikot, voltak már szívások ezekkel a beépített rutinokkal. Igazából a CCS-t inkább a kezdők szeretik használni, mert egyszerű feladatok esetén gyorsan lehet vele látványos eredményt elérni. De ilyen bonyolultabb feladatokhoz már inkább kicsit hardverközelibben kell programozni, amit lehet ugyan CCS-ben is, de nem a beépített rutinokkal.
Nem idegenkedem az assemblytől, ha erre gondolsz. Még a "80c51-es korszakomban" programoztam benne.
A C (számomra) viszont áttekinthetőbb, "olvasmányosabb".
Huh, nem kis módosítás
ASM-ben watt segített megcsinálni (vagyis inkább ő csinálta meg nekem ) ezt az effekteset, csak sajna nekem az AMS-mel annyi a bajom, hogy egyáltalán nem programoztam mgé ASM-ben, így a logikáját még nem igazán sikerült megértenem. Azért döntöttem a CCS-C mellett, mert C programozói múltam legalább van (ha nem is túl sok), így egy cseppet egyszerűbb volt átgondoljam, mit és hogyan tudok, persze kellett kicsit tanulni a PIC-es részről. Hamarosan megnézem ezt a fényfüggönyt, mert egész jónak tűnik, még sosem vettem észre, hogy ott van Köszi a segítséget!
Üdv,
szeretném a jobban hozzáértők segítségét kérni, mellékeltem egy programot ( nem én csináltam -mint, ahogy a tartalma is mutatja- csak most ismerkedem a timer -ekkel ) ( Kónya féle PIC -es könyvhöz járó CD -ből van mellékelve ). Nos van itt ez a részlet: movlw H'C0' ; Timer1=C000h beállítás, movwf TMR1H ; így 0,5 mp-ként kér megszakítást clrf TMR1L de ha én kiszámolom 1/(32768/4/65536) az 1:1 -es előosztó miatt az = 8, tehát akkor F2 -vel kéne feltölteni nem ? Vagy valamit nagyon félreértelmeztem (esetleg maga a program rossz, de ezt nem nagyon hiszem a jelenlegi 'tudásom' miatt), illetve számoltam, de a 192 -es eredmény akkor jönne ki, ha az 1:8 -as előosztást használnám.
0xC000-ról számol felfele. Amikor 0xFFFF után jön a következő él, akkor átbillen 0x10000-ra (vagyis 0x0000-ra, mivel csak 16 bites a számláló), és akkor megszakítást okoz. 10000-C000=0x4000, vagyis 16384. Tehát 16384 oszcillátorciklus után keletkezik megszakítás. Másodpercenként 32768 oszcillátorciklus van, tehát félmásodpercenként van megszakítás. Ha külső órajelről járatod a timer1-et, akkor nem kell néggyel osztani, mint a belső órajel esetén.
Megjegyzem, éles programnál az nem jó, hogy csak törli a TMR1L regisztert, ott igazából először ki kellene olvasni a benne levő tartalmat, majd hozzáadni a konstanst, és végül visszaírni. Csak itt mivel a kontroller mást nem csinál, van elég ideje lekezelni a megszakítást, mielőtt újabb lépést tesz a timer.
Korai volt az öröm: még mindig nem kapható.
Sőt, a Mircochiptől azt a választ kaptam, hogy még fejlesztési stádiumban van és csak Október-December környékén kerül gyártásra
Azokat a 18F1xK50 chipeket énis kinéztem már magamnak, de amíg itt a Status mellett az In Production helyett Future Product-ot ír, addig nem érdemes a beszerzési lehetőségek után kutatni.
Értem (nem jön be az oldal, majd később megnézem), naívan azt gondoltam, ha szerepel az árlistában, akkor meg lehet venni
Szerk.: bejött, néztem már ezt az oldalt, de nem tűnt fel a Future Product
Üdv. mindenkinek!
Walleman K8í48-as "égető" áll pillanatnyilag rendelkezésemre, de ezzel nem sikerült 16F628A-ba betölteni a hex file-t. Kicsit messze vagyok a saját dolgaimtól (kb 2600 km) és így nem tudok utána nézni. Compaq deskpro gépen XP fut és van rajta COM 1 és 2 is. Hardwer testnél müszerrel látszólag jók a feszültségek. IC Proggal és WINPIC800-al is 3FFF-eket olvas vissza, már az első bájtnál. Ha tud valaki segiteni azt előre is megkösszönöm.
Köszi, megoldodott, minden jelet invertálni kellett.
Sziasztok!
Próbálgatom az INDF regiszterbe irkálást, FSR ...stb és ezzel kapcsolatban kérdeném hogy az MPLAB SIM ben hogyan lehet láthatóvá tenni a watch ablakban az INDF tartalmát? Minden szép és jó, csak éppen azt nem látom mit csinálok mert az érték helyén csak egy "Restricted Memory" megjegyzés van.
Az INDF fizikailag nem létezik, álregiszter. Bővebben: Link
Kérdés Kölyöknek:
Szenzorokat ki tudnád cserélni? Mi az adatok végső nyughelye? Mert: Van olyan pic ami herdverből 2 USART. Tehát elég lenne kettő PIC, ha az USART hardveres megoldásához ragaszkodsz. Én viszont javasolnék olyat hogy a PIC fogadja a szenzorok adatait, akár 32 analog bemenettel, és utánna az egyik USART-ra raksz egy FTDI 232-t és mehet az adat PC-re. Programozva a cucc soros, mégis USB-t dugsz a gépbe. (Virtual soros port). Szóval ha esetleg részletezed a project-et akkor lehet benne számos "javaslat", bár tudom azzal tele a padlás. PIC-ben, főképp az erősebb PIC24-ben tudok segíteni.
Nem vagyok Mplab-közelben, de ha jól emlékszem, van olyan ablak, ahol az SFR-ek látszanak. (Talán pont SFRs a neve, vagy Special Function Registers, vagy ilyesmi.)
Ott azt hiszem, megvan az INDF is.
igen, azzal tisztában vagyok hogy ez egy virtuális regiszter. De azt gondoltam ettől függetlenül a szimulátorban látszik hogy mi a tartalma.
Sziasztok!
Sosem használtam még SRAM-ot, de most szeretnék egyet kötni a PIC-hez, mert sürün kell irnom az adatokat és nem akarok EEPROM-ot használni. Tudnátok segiteni? Létezik I2C-n kommunikáló SRAM? Ajánlanátok valamit? Esetleg minta bekötést tudna valaki linkelni? Előre is köszönöm! Üdv.: Zoli
Szia!
Melyik szenzorok cseréjére gondolsz? A nyomásmérőket nem tudjuk cserélni. Ezek a jelenlegi többmilló forintos csúcstechnikát képviselik, ugyanis a felbontásuk 0.1 Pa (azaz egy tized(!) Pascal). Az adatok a másik PC-re masíroznak át áramhurkos soros összeköttetésen, mivel nagy a távolság közöttük. Itt archív és jegyzőkönyv készül belőlük a szükséges számítások után. Egyáltalán nem ragaszkodom HW USART-hoz, ha jó lehet az SW is. Az átviteli sebesség nem szignifikáns, akár 2400 bauddal is beérem. Arra gondoltam, elég lehetne egy PIC is a feladathoz, mondjuk a 18F-es szériából "valami combosabb".
Nézelődtem és találtam egy két példányt, bár nem tudom itthon beszerezhetőek-e:
- I2C SRAM - Nem egy nagy memóriaméret az is igaz. - SPI SRAM - Ezek már tűrhetőek. A soros SRAM-ok sebessége nem valami nagy szám, ezért is ritkább a használatuk.
Ez egy érdekes probléma, mert szinte végeláthatatlanul sokféle PIC létezik, de valahogy a kisebb példányokból nincs olyan, amelyiknek több soros portja lenne. Pedig szerintem lenne rá kereslet. 24-es családban és az újabb 18-as J jelzésűekből létezik 2 soros portos. Az 5V-os 18-as család esetén csak a 64 lábúaknak van 2 soros port, a 80 lábúaknak 3.
Most én is ezzel szívok, hogy jó volna 3 soros port, elég lenne PIC18, de 5V -ról kellne járatni, és gyakorlatilag a 3 soros porton kívül szinte semmi más nem kell. Tehát elég lenne 18-20 láb, nincs kedvem 80lábú szörnyeteggel bajlódni.
Nekem nem is kellene HW soros port. CCS C-ben lehet "definiálni SW soros portokat", vagyis én mondom meg, hogy melyik láb legyen RX, illeteve TX.
Ha ez ebben az esetben így nem megy, akkor természetesen kénytelen leszek több PIC-kel megoldani a problémát, csak szeretném minél egyszerűbben megvalósítani az áramkört.
Az a baj, hogy így gondolkodsz: "CCS C-ben lehet definiálni SW soros portokat". Ha tudod, hogy az ezeket kezelő rutinok mit csinálnak (nem hatnak ki egymás működésére, nem akadnak össze, stb.) akkor nyugodtan csinálhatod. A PIC önmagában képes akár 10 darab 2400bps-es szoftveres soros port megvalósítására is, csak a CCS kész rutinjai nem biztos, hogy ebben partnerek lesznek, hanem lehet, hogy szinte nulláról kell hozzá sajá rutinokat írnod.
Igen, pont ez a kérdés, hogy van-e esetleg valakinek már hasonló témában tapasztalata. A problémám tulajdonképpen az, hogy a mérőrendszer ritkán (évente négyszer) van összeállítva méréshez, rövid ideig. Vagyis nekem a teszteléshez szükséges volna 4 db PC, hogy tudjam emulálni a többi eszköz (nyomásmérők, adatgyűjtő, másik PC) soros jeleit.
|
Bejelentkezés
Hirdetés |