Fórum témák
» Több friss téma |
Fórum
Akkor a mester valahogy így nézzen ki?
(Bal felső sarok) Uart Data sorban?
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.
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.
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..)
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 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.
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
jdani
Megoldottam! Ugye a probléma az órajel és a mérési sebesség, megfejelve a program lefutási idővel. 16F628A picbe csak a jelek számának mérését tettem amit a frissítési idővel küldtem ki.(2ms) A 877A ban pedig az összes többi művelet. Vagyis a 60as szorszás, az LCD vezérlés, és a váltásjelző és eeprom tartalom. Stb... Az uart szintén 2ms al üzemel. Így mind a kettő 4MHz kvarcal üzemel. működik az adatátvitel. A fordulatmérő pontosan mér. Annyi csak még a kiküszöbölendő, hogy az LCD kijelzésnek van egy kis késése. Amit talán befolyásol majd, hogy a teszt alatt 9600baudrate val volt az adat átküldve. Valószínű javul ha 19000 re emelem. Ami még módosult és észrevehető a változás, hogy a mikrokontroller beállításokban vissza vettem 4000000 Hz-re de hagytam HS opcióban. (Szerintem ezzel gyorsabban számol, illetve gyorsabban fut le a program mintha XT lenne) Annyit kellett módosítanom a programomon, hogy most 4 jel per fordulat jön nekem is az infra led érzékenysége miatt. (Vagyis te is tudod használni a programot.) Amúgy is javasolnám, mert így a frissítési frekvencia az UART modulra 2ms lenne miközben a bemenő jeleket 250ms os mérési idő alatt méri. Mindez 1 timermodullal megoldva. Ugye a több timer modul jobban lassít szintén. Néztem a te programodat is. Jó a program, de nálam a 250ms os adatátküldés lassúnak tűnt, nagyobb eltérések keletkeztek a fordulat változáskor. PL: már 4000 forgott mikor még csak 3100 at mutatott. Igaz ha tartottam akkor utolérte magát, de sokat késett. Mellékelem a két programot, nézd át, hátha tudod használni. Valószínű a sebesség mérést is így kellesz majd megoldani. Külön pic méri majd a jeleket és elküldi a LCD vezérlőnek.
És azt is tegyük hozzá, hogy a bemenet nem lóghat a levegőben, mert simán átveszi a másik feszültségét..
Szerintem azért, mert a mintavételezés tartókapacitása nem sült ki az ADC1-es csatornára való átváltásnál.
Van egy programban két hőmérő LM35DZ-vel. ADC0, és ADC1. Ha az ADC0-ra rákötöm az LM35-öt, akkor az jól mutat, viszont az ADC1-re nincs kötve semmi és az is mutat. Az ADC0 23fokot mutat, az pontos. Az ADC1, amire ncisn kötve semmi 13 fokot mutat. De amikor melegítem a szenzort, felmegy a fok fokozatosan 23-24-25-26. De az ADC1, amin nincs semmi, a 13fos is növekszik 14-15-16, stb. Ez miért lehet?
Kipróbáltam 876Aval. Bekapcsolom, kiírja hogy 000fordualt, aztán 100fordulal, és 200fordulat. Ezt kb 500ms idő alatt. Tehát félmásodperc alatt fokozatosan nő az érték 000ról 200ra.
Most jött a "szikra" ! A mérés pontossága az alap frekvencia pontosságától függ ,viszont a 4Mhz nem jön ki kerek értékre ........ (az órám is ezért sietett a kiszámolt értékkel egy nap alatt 11percet ! ) csak az osztás
variálásával lehet közelebb hozni a valósághoz a mért értéket . Az órám 2ms es jeladóval és ha jól emlékszem 242-es osztással már csak pár másodperes késést produkált . 4Mhz-s kvarcnál .
Én megpróbálnám 4M-n csökkenteni az időalap osztásértékét . mondjuk egy 100 körüli értékre, 4 M nál már csak ezt látom járható útnak .
Természetesen....
És XT-ről HS re is a beállításoknál... Arra azért kíváncsi lennék mit csinál HS beállítássl 4mhz en. 4mhz kvarcal. És mit csinál 20mhz kvarcal, de HS - 4mhz beállítással
Amikor kvarcot cserélsz a programot is átállítod 20Megára ?
Értem a csúszást, de ez túl soknak tűnik.
Nálam 4 jel megy be 1 fordulás alatt. vagyis 2ms*125 =250ms Vagyis 1másodperc 1/4-e. Így nem kell felszoroznom 4el semmit, csak 60al, hogy meg legyen a 1/perc értéke. Ennél volt 1 verzió, amit te is csináltál. Kivettem a frissítést és 250ms ot adtam meg direktem Timer modullal. Le vettem minden mást, csak az LCD vezérlés maradt. De semmit nem változott a csúszás. Aztán bepakoltam mindent és megint semmit nem változott a csúszás. Vagyis Nem értem, hogy 4Mhz- full program ugyan annyit késik mint a lebutított program. Ugyan akkor 20Mhz mind a kettő jól mér. De egyenlőre ez nagyon nagy probléma, mert a sebesség mérést is 20MHz-n kell majd megcsinálnom. Ugyan akkor a Vízhőfok adatait, benzinszint adatait, 1-2 visszajelző adatait át kellene vinnem LCD-re amit csak 4MHz-n tudok megtenni.
Bocs ezt benéztem !Jobban átnézve a progidat már látom
a "tárolót" Ha az alap időzítéssel játszol akkor sem javul a pontosság ? A topik elején leírták, hogy minél több dolgot kell csinálnia a programnak annál jobban elcsúsznak az időzítések . Nem lehet hogy itt is ez a probléma ?? A termisztor bekötése : egyszerű , a termisztort rákötöd a zadc lábra és a gnd re , a lábat felhúzod egy ellenállással a + ra és már kész is .Ha a termisztor ellenállásával egyező ellenállást kötsz rá ,akkor 20c' nál pont 2,5v lesz a pic lábán .
Figyelj.
Átnéztem és a mérő része dettó ugyan az, mint az enyémnek, kivéve a mérési időt, én külön számoltatom, hogy legyen frissítési frekvenciám majd a ledekhez, de mégsem jó a natúr mérő része....
Ez a teljes verzió...
Ebből a ledvezérlést levéve, és 1 váltásjelző beállító kapcsolót levéve volt a kiindulási alap. A csalások, után lett egyszerűsítve a bal felső sarok, ahol mérem az időt. Semmit nem változott 4MHz-en. Amint 20MHz lett a kvarc jól mér ez is.
A te programodban is azt a "hibát" vélem felfedezni
amiről Daninak is már legalább egy hónapja papolok: a frekvenciamérést nem jól csináljátok . kell csinálni egy mérést , az értéket menteni egy átmeneti tárolóba aztán onnan kiíratni a kijelzőre és nullázni a mérést végző számlálót . A programjaitok valószínűleg azért "csalnak" mert a számlálók nullázása is időt von el ezért a mérés mindíg elcsúszik pár ms -ot és ez valszeg összeadódik . Neked is ajánlom hogy próbáld ki az előzőleg feltett példát (tar.pic)
Ez az én egyszerűsített fordulatszám mérőm. Led vezérlés nincs is benne.
4Mhz -el 1000 fordulaton 1320at mér - 2000 néál 2600 - 3000nél 2900. 20MHz -el 1000 fordulaton 1020 at. és mindenhol pontosan Vagyis a különbség 2 dolog lehet. A beállítás a XT vagy HS ugyan annál a 4Mhz nél lehet változtat... Vagy a program lefutási ideje miatt lassú 4MHz-en. Más: Nem találtam sehol hőellenállás, termisztor bekötési rajzot.
Ezt a páldát nem a kommunikációra küldtem! Az mint már
kivesézték csak 4 Mhz-n megy . Ez a mérésre példa megnézném hogy 4 Mhz-n pontos e ?
Most nem tudom kipróbálni, de ennek mit kellene mutatnia? Én csak most kezdek az UART-al foglalkozni, de nem kell a küldéshez az UART data-t is használni? Mert itt csak a bázis van.. Miért mondja azt valaki hogy működik nagyobb kristállyal a kommunikáció, valaki meg aztmondja h. nem működik?
Sehogy...
Most próbáltam, és nem kommunikálnak. ![]() Így nem tudom én se, hogyan fogok adatot átvinni az egyikből a másikba. 4Mhz-en tökéletes a kommunikáció, de nem mér normálisan a fordulatszám mérő.
Ezt próbáld ki 4Mhz-n (csak a kíváncsiság kedvéért)
20megával jól mér, viszont használni akarom az UART-ot, és azt nem tudom még, hogy akkor hogyan fognak kommunikálni, ha csak 4megán megy (állítólag)
Jdani
Nálam is ugyan az a helyzet mint nálad. Kicseréltem a 4Mhz kvarcot 20MHz-ra, máris jól mér a fordulatszám mérő. Bár azt nem próbáltam, hogy ha hagyom bent a 4MHz kvarcot és ugyan akkor de HS re és 4MHz állítom a Mikrokontroller beállításoknál. Akkor változik-e. Lehet csak másképp számol ha XT vagy HS van beállítva. Mert az órajel még 20000 jel per 250ms esetén az is csak kb 1Mhz a program lefutása annyira kicsi kellene hogy legyen, hogy nem szabadna észre vennie mivel 4Mhz a lefutás órajele. Más: Ugyan akkor vettem egy "termisztort" aminek 2 lába van. 45kohm 25c fokon. Nincs ráírva semmi csak csíkozás, de fogalmam sincs hogy találjak rá a neten az adatlapjára. A fő kérdés, hogy ezt hogyan kell a pic, hez kötni, mert a fórumba visszaolvastam és az ADC lábak beállításiról van szó, de kapcsolás sehol.(lehet vak vagyok?)
Szitkozódás hosszan...
Átnéztem mindent. variáltam a prograot, agyaltam... mi volt a hiba? Az LCD lábaira forrasztott tüskesorban a test láb leszakadt a próbanyákról, de alig láthatóan, csak nagyítóval vettem észre... Sorry... |
Bejelentkezés
Hirdetés |



