Fórum témák
» Több friss téma |
Hello!
Bocs, hogy bele beszélek, de lenne egy hozzáfűzni valóm.. Szerintem nem érdemes az LCD-re 2msec-onként küldeni a jelet. Mert leolvasni sem lehetne, a mérési eredmény sem változik ez alatt, csak amikor adat jön, és a proci sem csinál mást, mint állandóan ezzel foglalkozik.. üdv! proli007
Az lcd-nél nincs is szükség, ebben teljesen igazad van, de uartnál kell, miután az uart a másikban is 2ms. Ha jól tudom annak is egyezni kell a kettőnek.
Ezen felül a 8 dekádos 10db ledes kijelzéshez is kell majd, hogy minél kevesebb legyen a vibrálás. 1000 fordulatonként 10db led és ezt 8lábon küldi ki. Vagyis az 1500esetén, 10majd, a következő 5 led villan fel. ehhez pedig nagy frissítési frekvencia kell. Ugyan akkor ha az LCDre másik timert teszek szintén csak lassítok. Még kell finomítani, rajta az tény, de már közelebb vagyunk a megoldáshoz, hogy 4MHz val működő pontos fordulatszám méréshez plusz kommunikáció. Jdaninak ha nem kell a ledes kijelzés akkor tudja lassítani a 628 ban a timert 100ms ra és a számláló 125ös értékét 25re állítja. Így a másik picben is lehet csak 100ms. Közben eszembe jutott(hála neked ezen is gondolkoztam), hogy 2ms os frissítést egy számlálóval lassítani tudom a 877ben is 250ms-ra ami még nem darabos de nem is túl gyors az LCD vezérlésre.
UART-al kapcsolatba lenne kérdésem.
Milyen módja van több pic összekötésének? Pl 1 pic LCD-t vezérel, és a többi (2-3-4 pic) adatait írja ki. Mire jó az ACT kimenet a UART DATA modulban?
Az összekötésnek a legyegyszerűbb módja az UART, ha adatforgalomra is gondolsz.
Célszerűen amelyik az LCD-t kezeli az lesz a "mester" A PIC-ek RX-TX lábait össze kell kötni egymással átlósan, Rx>Tx Tx>Rx. A "szolga" PIC-eknek kell egy vagy két Byte-s címet adni és így azonosíthatóak. (van rá példa, "gyári is") Azonos értékű Qurtz-nak! kell minden PIC-nél lennie. Ha kifelé, pl: PC -nem kell kommunikálni, akkor el lehet térni a 4MHZ-től, lehet akár 20Mhz is, de akkor mindegyik... Ez a topicban többször említésre került, tőlem is... ACK - nyugtázás. Felhasználható a programban is, (bit..)
Közbe elküldtem egy emailt is, nem tudtam, hogy itt vagy.
Tiszta sor 2 pic esetén... Azt próbáltam és működik oda vissza. De ha pl:4 pic kell összekötni akkor hogy kötöm a lábakat. 3szolga és 1 mester. A szolgák adják az adatot a mesternek. Aki kiírja az LCD-re.
Kérdés, hogy a mester csak veszi az adatokat, vagy esetleg valamit ad is a szolgák felé?
Tételezzük fel az adás-vételt. A mester Rx lábát összekötöd minden szolga Tx lábával, a mester Tx lábát meg minden szolga Rx lábával. Nyilván a programot úgy kell megírni, hogy egyszerre csak egy pár kommunikáljon. Pl: a mester kezdeményezi egymás után sorban, úgy hogy maradjon idő más feladatra is a mester számára. Itt jöhet szóba az említett ACK, ha befejeződött az átvitel, utána jöhet a következő...stb. Jótanács, ne pakold tele időzítésekkel és timerekkel, esetleg az LCD-t is 100-200ms-al fríssisd. Ebben a felállásban még nem próbáltam, úgy hogy lépésről lépésre haladj, esetleg az összes adatvezetékbe iktass be egy-egy 470ohm-1kohm ellenállást.
Akkor a mester valahogy így nézzen ki?
(Bal felső sarok) Uart Data sorban?
Én valahogy úgy próbálnám , hogy a mester indítaná az átvitelt , és az ack jel egy számlálót léptetne a mesterben ami indítaná
a következő szolga lekérdezését . Minden szolga kapna a mestertől egy egy lábon lekérdezés indítójelet . Valahogy így
Hello!
Azt is tegyük hozzá, hogy a mester-szolga kapcsolat hardver részét is ki kell dolgozni, hiszen több kimenet nem kapcsolható össze, a Parsic-ban pedig nem lehet a kimenetet váltani, még nagy-impedanciás szintre sem.. üdv! proli007
A tippedet átdolgoztam. Így az első frissítésre olvassa az elsőt, aminek a visszaigazolása olvassa a másodikat.
Ez szép... de honnan tudja a Szolga, vagyis az adó, hogy mikor kell adnia? És azt hogyan hangolom össze?
Pedig lejjebb dacsbi lényegében párhuzamosan kötött pic ről ír.
Hello!
Igen, de kimeneteket nem lehet összekötni. Ha pedig ezt ellenállásokon keresztül teszed meg, akkor a vevő bemenetén nem lesz meg a logikai jelszint, hiszen az ellenállások feszültségosztóként fognak működni. Tehát megoldás lehet egy háromállapotú meghajtó használata, amit adás idejére aktiválni kell, vagy nyitott-kollektoros tranyó (Fet) meghajtók összekötése, ahol a vevő bemenetén van a kollektor ellenállás. (Mint ahogy ezt az I2C és egyéb buszok is alkalmazzák.) Korrekt megoldás, egy RS485-ös meghajtók és egy vevő lenne. (De annak adatátvitelét is vezérelni kell.) üdv! proli007
Én nem így gondoltam a dolgot !
hanem hogy a mester pic három külön lábon küldi ki az adásindító jelet a szolgáknak . Tehát ha 3 szolga van akkor mindhárom kap egymás után lekérdező jelet ami a szolgában indítja az adást . Tulajdonképpen simpi is ezt írta csak másképp fogalmazta meg . És ha jobban belegondolunk proli ezt fejelte meg az rs ic vel
Mennyire igazad van... lesz 4 szabad láb a 877esen.
Azt összekötöm minden egyes másik pic 1-1 lábával. Amin ha jel van akkor az UART kap egy engedélyező bitet. Lényegében a program a rámegy a 877esben a bit-byte konverter után az UART DATA (receive RPM) és egy kimenet felé, RC.1, az ACT lépteti a számlálót. Aztán a második esetén az RC.2 és UART DATA(Recieve KMH) és ACT láb lépteti ismét a számlálót. És így tovább a 4. pic-ig ahol kezdődik elölről. Mivel a pic-ek ben 250ms a frissítési idő. Itt meg 50ms onként kér, mire végig ér a 4*50, még mindig az első frissítés után tart a többiben a számláló. Lehet elég lesz a 80ms frissítés is az LCDre és ezekre a műveletekre. És akkor mindig új adatot kaphat. Na már csak kell még 2 628A-t szereznem. Most vettem észre, hogy az egyik 628asom nem A hanem 04/p(4MHz-es)
Ok, vissza néztem, csak nem úgy értelmeztem a programot. A lábak nem voltak elnevezve, csak SX.X
A baj viszont az lenne azzal, ha mindig kéri az összes adatot, de csak 1et kap akkor, a többire is kidobál fals értéket. Az első próbámnál, ha kivettem az egyik szolga(KMH) pic-et, és az nem küldött adatot, csak az RPM szolga küldte az RPM adatot akkor a KMH is kijelzett össze-visszaságot.
De csak akkor kaphat fals jelet ha hiányzik vagy rosz egy pic , tehát normál üzem közben nem jöhet elő ilyen hiba .
Ha nincs jel a szolga bemenetén akkor is ad adatot , 00000000-
Most nem érek rá megírni a progit, de az alapelv az, hogy a mester kiküld egy Byte sorozatot a Tx>Rx-re
és ezen byte-ok Pl: 4 Db 101, 101, 101, 1, ez pl azt jelenti ha az egyes szolga vevője veszi a Byte-okat ezek passzolnak egy összehasonlító modul rendszerrel és csak akkor indítja az adást a szolga. A kettes szolgának a címe Pl: 102,102,102,2, ... azért kell több byte-s cím, mert így bíztosan nem fordul elő ez az adatsor máshogyan a rendszerben. keresd az Uart-al kapcsolatos régebbi hozzászólásaimat. Minden modul minden paraméterrel nem illeszthető egymáshoz össze, vagy ha igen, ne várjuk el tőle, amit nem lehet. A 2ms-os timer az miért fontos? ez valószínű bezavarja a kommunikációt. Ha lehet válassz nagyságrendekkel nagyobbat. Proli007-nek: az Rx az "bemenet" a Tx az "kimenet" és ezek ezen elv szerint mindig azok is maradnak, a szolgák Tx-ét lehet diódával kötni a mesterhez, akkor meglesz a logikai szint. Mindig csak egy szolga ad.
Csak egy gondolat erejéig.
A program 1es lapján van amit a mesterbe tennék. A 2. lapján a szolgákba beillesztendő programrészlet van. Lényegében egy számláló, aminek az értékét megszorozza 10el. Így "KIMENET" értéke 10 - 20 - 30 stb... Ezt elküldi mindegyik picnek. Amelyik picben "KIMENET" értéke 10el egyezik, az elküldi a RPM adatot a mesternek. Ugyan ekkor a többi is vizsgálja az adatokat, de azok nem küldik el a sajátjukat, csak ha a nekik megfelelő feltétel tejesül. A szolgákban csak az RX állandó 50ms os frissítésüek. Ami megegyezik a mester RX-TX frissítésével. A szolgák TX-en csak a feltétel teljesülésekor adnak ki jelet.
Hello!
Így van, ez is egy "huzalozott" VAGY kapcsolat. Csak kérdés, hogy zavarvédettsége megfelel-e, egy gépkocsiban történő adatátvitelhez? üdv! proli007
Sziasztok!
Tudom, hogy jelen témához nem illik, de megkérdezem: Foglalkozott valaki paraméterezhető véletlenszám előállításával Parsic-ben? A paraméterezhető alatt, azt értem, hogy a 0-tól, xxxx -ig, határ beállítható, és közel igazi RND függvény alapján dolgozik a progi. Üdv: Zsolt
Hali
Csak egy eszrevetel. A gepjarmuvekben nem illik hasznalni ezt a soros adatatvitel, mert nagyon zavarerzekeny. Esetleg RS485, vagy CAN busz. Az RS485 sodrott erparon elmegy par szaz metert is zavarmentesen. A CAN busz kimondottan eros zavaru ipari kornyezetre talaltak ki, de az alkalmazasahoz specialis meghajtok szuksegesek. A gepjarmuvekben az ECU es a periferiak kozott altalaban CAN buszt hasznalnak (nem mindenutt), mert ezzel tudjak biztositani a zavarmentes adatatvitelt. Amugy van a 18-as PIC-ek kozott CAN buszos. Vili
Biztosan nem örülnek a moderátorok ennek az ékezet nélküli hozzászólásnak...
Az adatátvitelt biztosan azért választotta a fórumtársunk, mert ezzel a programmal tud PIC-et programozni, és ennek ezek a lehetőségei illetve korlátai. Nagyon sok ember ezzel a programmal tudta először életre kelteni a PIC-et, lehet az esztergályos vagy pék esetleg régi rádióamatőr...stb, nem kell ahhoz villamérnöki karra járnia. A 18-as PIC szerintem ebben a topic-ban nem fog szerepelni, mert a Parsic nem támogatja. Egyébként használtunk CNC vezérlésű marógépek között ipari környezetben sima rs232 kapcsolatot minden probléma nélkül 15-20m-es (nem árnyékolt) kábellel. Hagyjuk meg a társunk fejlesztési ötletében rejlő siker lehtőségét. Egyébként optocsatoló közbeiktatásával is át lehet vinni ezt a sebességet. Idézet: Miota tag vagyok csak igy irok. Nem csak ide, hanem tobb mas forumra is. Eddig meg egy modi sem sirt az irasom miatt. Amugy ez a Ti jatekotok nagyon erdekes. Egy egyszeru adatgyujto, feldolgozo, kijelzo keszulekhez minden funkciohoz kulon PIC-et rendelni, majd osszekinlodni hozza valami soros atvitelt azert tulzas. Nem lenne egyszerubb egy PIC-be belerakni mindent? „Biztosan nem örülnek a moderátorok ennek az ékezet nélküli hozzászólásnak...” Idézet: Gondolom RS485 PHY keresztul. Mert aki ipari kornyezetben RS232-vel visz messzire adatokat arrol megvan a velemenyem. Foleg egy komoly gepnel.„Egyébként használtunk CNC vezérlésű marógépek között ipari környezetben sima rs232 kapcsolatot minden probléma nélkül 15-20m-es (nem árnyékolt) kábellel.” Csa Vili
Szevasz. Hogy miért nem rakunk egy PIC-be mindent? Mert ,,túl sok,, adatot kell feldolgoznia, és így az egyik üti a másikat, elcsúsznak az időértékek, stb. Nem egy profi programozó program, de kezdésnek jó.
Jo. Csak utana meg sirtok mindenutt, hogy az asztalon jo volt, de mikor a motorba raktam minden meghulyult.
És szerinted mit kellene tennem? Azért nem rakom egy PIC-be, mert a parsic csak egy alap kezdőprogram, nem érkezik minden adatot fogadni, azért osszuk külön PIC-ekbe.
"utána meg sírtok mindenütt" Ezt miért mondod ?
tudsz rá példát mondani ? Fejtsd ki bővebben légyszives mire gondolsz .
A projektembe belebigygesztenék egy Órát, viszont nem tudom még honnan vegyem az 1Hz-et. Nem kell olyan, ami a szökőéveket is számolja (ds1302), hanem csak egy sima kapcsolás, ami pontos 1Hz-et ad. Mit ajánlotok?
tegyél be még egy picet 3276800 Hz -s kvarccal
|
Bejelentkezés
Hirdetés |