Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Áhh, én már nem merem mondani semmire hogy értem mert olyankor mindíg kiderül hogy nem értem az egészet..
![]() ![]() "Komolyra" fordírva, nekem a végén ha jól számolok kb 10 - 11 el kell osztanom ahhoz hogy a potmétert elejétől a végéig tekerve 0 - 10 értékeket kapjak a kijelzőn. Tehát ha nincs térerő akkor egy 0 hoz közeli értéket kapjak, ha nagy térerejű állomást veszek a rádióval akkor 10 körüli értéket mutasson. Ez az egész függ a referencia feszültségtől vagy sem? Mert most úgy van állítva a program hogy a tápfeszt veszi referenciának. Viszont nekem a max térerőhöz tartozó DC értéke 2 V DC. Tehát szerintem mielőtt bármit is csinálnék be kell állítanom az RA2 lábon a 2 V referencia értékét és átprogramozni az ATCON0 reg. 6. bitjét hogy ne a VDD t vegye referenciának. Vagy a referenciától függetlenül mindíg 0 és 10 közötti értéket kapnék a kijelzőn?
Nem, csak egyszerubb volt a megszokottakat hasznalni. A goto-t is makroztam jmp-ra.
Csinaltam kis move utasitast, meg movbb/movww-t, stb. Minel tobb dolgot igyekeztem kozositeni, hogy minel kisebb megrazkodtatas legyen. De az assemblybol nem engedek, egy mikrokontrollert C es felette programozni nem az en vilagom...
Termeszetesen fugg a referenciatol.
A ref- az also ertek, a ref+ a felso. Ha 5V-ot adtal a ref+-nak (es a ref- a gnd) akkor ertelemszeruen 5/1024 V a lepeskozod. Ha ilyenkor 2V-ig terjed a jeled, akkor kevesebb, mint a felet tudod kihasznalni a pontossagnak, bar szerintem az 1-10-es skalaba az is boven belefer. De ilyenkor mondjuk az 1023-as max. ertek helyett nalad a 2V-hoz tartozo kb 400-as ertek. Efelett nem fogsz erteket kapni. Ha a referenciat 2V-ra kotod (kulso referenciaIC-bol vagy egyszerubben egy feszosztoval (ket ellenallas)), akkor maris 2/1024 a lepeskoz, ebben az esetben az AD teljes tartomanyat kihasznalhatod. Tulfeszultseg 5V-ig nem okoz problemat, csak persze 2V felett minden 1023 lesz...
Nem, hanem kb 204-el kell elosztanod, ha a 10 bitet ki akarod hasznalni. Ha eleg a 8 bit, akkor kb 25-tel.
A problema szerintem innentol kezdve mar elegge alapszintu, ha ezekkel gondjaid vannak, akkor javaslom, hogy rajzold le egy kockas fuzetbe. Ezzel vizualizalod a gondot, nekem is sokszor segit. En meg szoktam mm-ben is rajzolni, legalabb korulbelul kiderul, hogy jo-e az ertek ![]()
Valoszinuleg a hasznalhato homerseklettartomanyban.
illetve 102-vel kell osztanod - faradok...
Én úgy tudom, hogy a referencia fesznél nagyobb fesz nem szabad ráengedni az AD-re. Rosszul tudom? Ha igen, hol találom ezt az adatlapban? Köszi!
Ha osztás rutinokat keresnél, találsz az oldalamon, ábrázolva hogyan működik az elve.
Persze! Semmi sem tiltja, hogy neked tetsző megoldásokat alkoss, ha úgy kényelmesebb a programozás.
![]() Láttam már olyat is, hogy a z80-ra hasonlító utasításokkal programozták a PIC-et. (Akit érdekel, a beépített makróutasításokat itt tanulmányozhatja.)
Köszönöm a fejtágítót Neked is, és "bbalazs" nak is. Minden nap tanulok valamit. Körülnézek az oldaladon, meglesem a példaprogramokat hátha ragad rám valami a koszon kívül.
![]()
Watt, ugy tunik, igazad van. Bar az absolut max. ertek csak a tapfeszrol szol, az AD reszben 0.3-mal mehetsz a ref+ fole max. Akkor viszont Menyus zener diodat fog vadaszni, asszem 2.1-es van is.
Igen, de a Zener diódák már a nyitásuk előtt kezdenek terhelni és ezért az előtét ellenálláson(ami nélkül ugye nem véd, hanem füstgépet alkot), esik a fesz ,ami hibás mérést okoz. Ezt én tranyó+zener áramörrel oldottam meg, de ez is kétélű, mert csak ott működik, ahol lehet terhelni a mérendő feszt, pl. akkutöltő.
Itt mivel 10 egységre akarja a poti teljes tartományát lebutítani, maradhat az 5V referencia, nem okoz semmi bajt, csak az általad említett végértékek szerint kell az egész osztás történenet elvégezni. Ekkor védelem sem kell, csak egy 100n-s kondi szűrésnek, zavarevőnek!
Hát igen, ahogy "halad "ez a dolog előre úgy szaporodnak a problémák. És az még nincs benne hogy mivel ez egy 9 V ról járó elemes vevő lenne, jobb lenne az egészet 3 / 3,3 V ról járatni. LCD t már szereztem hozzá ami megy 3 V ról, viszont ezek szerint akkor jól át kell gondolni ezt az egész osztás dolgot. Azért nem mondtam mert gondoltam ezt a programozási dolgot gyorsan megtanulom (
![]()
Erősen gondolkodom rajta, hogy kell e nekem LCD s térerő mérő a vevőmhöz...? Lehet megelégszem egy komparátorral meg egy BATT LOW LED el
![]() ![]() Idézet: „viszont ezek szerint akkor jól át kell gondolni ezt az egész osztás dolgot.” Ne hagyd, hogy az a vélemény alakuljon ki benned, hogy ez bonyolult! Foglalkozz kicsit a számrendszerekkel, értsd meg, hogyan működnek bennük a műveletek, mi az a túlcsordulás és mikor miért következik be. Bontsd le az osztást-szorzást, összeadásra-kivonásra. Nézd az adatlapokon az asm parancsokat, melyik mit csinál(részletesen le van írva, ha nem értesz egy jelet, kérdezz!!), és próbálj az általuk kínált lehetőségekkel operálni. Nem sok parancs van amit használunk, és mág kevesebb ami fejtörést okozna! A másik, hogy van időd, ne add fel, ez még sokat érhet neked! Én is hobbiból kezdtem neki, most meg +100ezreket keresek egy egy, ritkán ugyan, de becsöppenő projecten! És közben nagyon jól szórakozom!
Pont ezért kezdtem el foglalkozni ezzel a PIC dologgal mert én is látom / rájöttem hogy ez a jövő útja. Ezt az egész elektronika dolgot én is hobby szinten kezdtem még kissámlis kölyökkoromban. Van még bőven mit tanulnom minden téren. De jelenleg én is ebből élek, itthon dolgozom a saját egész jól felszerelt kis 12 nm es műhelyemben. Megtalálnak egyedi dolgokkal, elmondják mit szeretnének (én elmondom mit lehet, mert kitalálnak néha agyament dolgokat... pl a múltkor egy magán klinika lenyelhető kamerát akart 2,4 Ghz en..stb
![]() ![]()
A "túlcsordulás" szerintem azt jelenti amikor egy számláló elér a végéig és előlről kezd számlálni. Pl egy 10 bites számláló esetén ez 1023 után következik be. "Alucsordulás" meg szerintem az ha a számláló visszafelé számol és eléri a 0 - > 1023 állapotot. Vagy nem jól tudom ezt sem?
De jól tudod, de nem feltétlenül ezt kell megragadni. A lényeg inkább az, hogy nem fér bele a rendelkezésre álló bitszámba a kapott érték, ezért átvitel keletkezik, ami a Carry-be lép. A Carry a +1. bit, amit át kell vinni a másik bájtba, mert különben elveszik! Ez a 10-es számrendszerben is így van, csak ott maradéknak nevezzük.
Tehát a carry a 8 bites regiszterbe nem beleférő bit értékétől függően lehet 1 is és 0 is. És csak akkor kell törölnöm ha 1, különben nincs értelme törölni gondolom. A Status regiszteren belül van olyan hogy Carry/ Borrow és Digit Carry / Borrow. Mi a különbség a Carry és a Digit Carry között?
A byte-on belul ha a felso nibble-re tortent atvitel, akkor lesz magas.
En meg eletemben nem hasznaltam... A carry a kilencedik bit. Igy fogd fel, konnyebb megerteni. Tehat carryt torlod, 255-hoz hozzaadsz harmat, akkor az eredemeny 2 es a carry magas lesz. Vagyis tulajdonkeppen 102H-t kaptal. Amikor kivonsz, akkor magasra allitod (tulajdonkeppen hozzaadsz 256-ot). Ha a kivont ertek nagyobb, mint amibol kivontal, akkor 'negativ szam' keletkezik, amit konnyu detektalni, mert a carry 0 lesz. Neked kell beallitani MINDEN esetben, ha hasznalni akarod az elonyeit. Egyebkent szoktak pl. rutinbol valo visszatereskor egyszeru hibajelzesre hasznalni (c=0 nincs hiba, c=1 hibas lefutas). Tehat nem kotelezo hasznalni.
bbalazs által említett nibble, az a fél bájt, tehát 4 bit. A többit érted gondolom.
A Carryt nem kötelező törölni, hanem van olyan mikor szükséges(ilyenkor felesleges vizsgálni, hogy 1, vagy nem). A törlés szükségessége attól függ, hogy milyen művelet következik egy a Carryt beállító művelet után. Mert ugye nem mindegyik művelet állítja a flageket(STATUS regiszterben vannak a jelző bitek, amiket flageknek is szoktunk nevezni, ilyen többek között a Z és a C) és amelyik igen, az sem feltétlenül mindegyiket! Valamint nem mindegyik utasításnak okoz gondot a C, vagy Z állapota. (pl. MOVF) Nézzd meg az utasításokat, melyik milyen flaget állít, ill. nem állít! (pl. MOVWF állít, SWAPF nem állít!)
Bocsi!! A MOVWF nem állít!!!
A MOVF állít(Z-t), SWAPF nem állít! Idézet: „Valamint nem mindegyik utasításnak okoz gondot a C, vagy Z állapota. (pl. MOVF)” Ezt pedig úgy értem, hogy beálítani beállítja a Z-t, de a a C, Z , DC állapota nem befolyásolja a végeredményt.
Köszi mindkettőtöknek, akkor most megemésztem az új infókat, átgondolom mit is szeretnék, és ezek ismeretében nekifutok újra a programomnak. Majd beszámolok az eredményről...
Idézet: Arra szavaz, mert a számítással annyi jön ki. Viszont az a kód, amit beírtam, a szimulátor szerint 15B0-nál jár pontosan azért, mert a Timer adott időre le van állítva, és mert közben van néhány utasítás. Persze ha nincs másik magas prioritású megszakításod, akkor simán mehet csak a hozzáadás is, nem kell a túlcsordulásra figyelni. De arra vigyázz, hogy először ki kell olvasnod a TMR0L tartalmát egy bármilyen változóba, majd a TMR0H-ba beírni a felső bájtot, és az ideiglenes változódhoz hozzáadni az alsó bájtot, majd ezután írni vissza a TMR0L-be az ideiglenes változót. „sajna nem tom, mennyi idő alatt szedte össze, de majd vhogy megfigyelem egyelőre 5536-ra állítottam, így kerek 200 jön ki osztónak most látom, szabi_o is az 5536-ra (15A0) szavaz én nem állítottam be másik megszakítást”
Ha nem muszály, nem variálok a kódon, inkább finomítom a kompenzálást.
5536-al késett, ha jól emléxem, aztán 5544-re állítottam (5536+(5552-5536)/2), sok óra alatt 1 másodpercet késett, ezért most 5540-el próbálkozom.
Akkor valószínűleg az oszcillátor nem a névleges frekvencián jár. Mondjuk nem csoda, ezek a nagyobb frekis kvarcok nem szoktak atomóra pontosságúak lenni, de azért be lehet célozni nagyjából pontosra, ha egy kicsit állítgatjuk a programot.
Hali !
Mostanában kezdek PIC-ezgetni, gondoltam építek egy 7 szegmenses órát így elsőre, aztán majd ha az jó akkor bele hegesztem a nixie csőveimet, de egyelőre nem akarok azzal szenvedni, csak menjen az alap. Csináltam egy rajzot közös anódos kijelzővel. A kijelző panel készen van, anódok AN0 .. AN3 ig, meg az összekötött szegmensek normálisan A .. G ig. Tehát van 7 madzag, most készültem el a PIC nyákrajzával, belinkelem, légyszi nézzetek rá hogy mit csináltam nemjól ![]() Felmerül egy igen fogós kérdés: A 2 beállító kapcsoló bekötésével kapcsolatban.. amikor a ledeket akarom világítani akkor egyértelmüen kimenet a pin, amikor viszont időt akarok állítani akkor ugye bemenet kéne legyen. Ahogy a rajzomon van olyasmi példákat láttam, de semmi épkézláb forráskódot a kezelésre. Valaki elmagyarázná hogyan kell ezt a progiból lekezelni ? A rajz Ja igen! Milyen kristályt használjak ? Mi az ami egyszerübbé teszi majd a programot ? 4MHz vagy 32.768KHz ? Előre is köszi minden segítséget ! Edga'r
Megépítettem a pongot, és működik rendesen, tök buli atom retro feeling, csak a szögek nem változnak attól függően, hogy az ütő melyik részével találom el a labdát, ezt majd még át kell írni.
|
Bejelentkezés
Hirdetés |