Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szia!
Az Excel feladata: A gombok oszlop és sorszámát egy állományba írja. A stimulus feladata: Az Excel által írt állomány alapján a port lábak között összeköttetés szimulálása. Indítsd el az Excel -t az xls állománnyal, engedélyezd a futtatást. Indítsd el az MpLab -ot a feltöltött állományban levő projettel (mcp). A projectben az MpLab SIM be van állítva, továbbá a Wath ablak futás alatti frissítése is engedélyezett. Debuggerrel indítsd el a program futását. A Watch ablakban a KEY változó étréke mutatni fogja, melyik gombot nyomtad meg a képen. Persze a gombok elheyezése nem biztosan egyezik meg az általad megvalósított panelével, de a működés lényege látszik. A programodban a PORTB -t töröld ki a SCAN rutin hívása előtt. A tömörített állományban levő forrásban a nem található rutinok hívását kikommenteztem, az include állomány könyvtárát töröltem - nálam nem ott található...
Nem rossz ez az Excel allomany sem, de megnezheted akar a VirtualBreadboard-ot is (ld csatolt kepek)
Hát nem tudom...
Kipróbáltam. A key_value.txt-be csak két 15-öst tesz bele, bármit nyomok. Amikor elindítom a debugot, akkor szépen végiglépdel a programon soronként, és nem csinál semmit. Még az ugrásokat sem hajtja végre. Szimuláció nem megy. Szimuláció ide, vagy oda, van továbbra is a probléma. 4 teljesen azonos programrészlet, amidől kettő tök máshogy működik, mint a másik kettő. Nem lehet, hogy az 5-ös, és 7-es bitek a PORTB-n valami speciális dolgot csinálnak, amit ki kéne kapcsolnom, csak nem vettem észre?
Ez a VBB nagyon okos dolog lenne, de hogy lehet saját csipet beletenni?
Ugy erted olyan PIC-et ami nincs benne eleve a konyvtaraban?
Szia!
XLS: Nyomd meg egérrel az egyik gombot, és amíg lenyomva tartod, ALT+F4 segítségével zárd be az excel ablakát. Így nézve a key_value.txt már a gomb sor és oszlop adatát tartalmazza... Programod: - A GOMB változót minden SCAN lefutás elején törölni kell. - Miért mehet egy SCAN maximum ötször a SORTESZT rutinra?
Pontosan.
Programozni kell ehhez... Hacsak mar valaki nem csinalta meg es megtalalod a neten.
Amugy en ugy szoktam az ilyeneket csinalni, hogy egy hasonlo PIC-en fejlesztem ki az algoritmusokat es utana mikor minden mukodik ahogy szeretnem atultetem a vegleges chip-re es csak akkor keazdem el tesztelgetni / debuggolgatni az aramkoron. Utana is meg lehetnek problemak de sokkal kevesebb, mint ha amugy csinalnam. Megjegyzem a Proteus nevu cucc sokkal kifinomultabb, mint ez, es abban rengeteg alkatresz mar eleve benne van, csakhat az fizetos es nem berbol es fizetesbol eloknek van kitalalva az ara...
Valóban, az utolsó oszlop után nem kell vizsgálat, csak RETURN.
Módosítottam a SCAN rutint. Így most annyi változott, hogy a négyes oszlop is működik, csak a 2. nem csinál semmit.
Hol van a kapcsolasi rajza ennek? Nem ertem ugyanis miert torolgeted a vezerlo vonalakat es hogyan probalod mukodtetni?
1. Inicializalas 1.1 Globalis felhuzot az elejen tiltsd le 1.2 Egyeni felhuzokat is az elejen allitsd be -- vezerlo jeleknel kikapcsolni, minden mas bemenetnel bekapcsolni 1.3 ANSEL + ANSELH beallitasa 1.4 Mivel tristate-ben akarod hasznalni a vezerlo jeleket, ezert a PORTB-t is az elejen allitsd be (osszes vezerlo vonal 1-es, tobbi meg a funkciojanak megfelelo, az inputoknal nem erdekes mi van ott) 1.5 Ezekutan allitsd csak be a TRIS-t -- igazandibol az elejen minden kapu bemenet, tehat nem is kell allitani, de azert jobb felni mint megijedni 2. Pollozas 2.1 Megfelelo vezerlohoz tartozo TRIS bitet BCF-el kinullazod, ezaltal az adott portlab kimenet lesz, es mivel a legelejen beallitottad a PORT kapujat magasra, ezert mikor kimenetre kapcsolsz a PORT regiszterhez mar nem kell nyulnod, a kimenet automatikusan magas lesz. 2.2 Lekerdezes -- BTFSS es tsai 2.3 vezerlo jel TRIS bitjet 1-re allitod, hogy ismet bemenet legyen (aramkor szempontjabol lebegjen, megintcsak, PORT regiszterhez nem kell nyulni) 2.4 Ismetled az osszes labra ezt 3. Billentyuk kezelese -- szabadon valasztott... Ja, es kommentezz mindent fel, ha valtoztatsz a kodon a kommentet se felejtsd el valtoztatni, es tagoldd a kododat, hogy jobban lehessen latni melyik muvelet hova tartozik -- pl ures sor es sor kozti komment az egyes vezerlo vonalak kivalasztasanal... Idézet: Inkább 0, ha a felzúzó ellenállásokat akarjuk használni... „ezert a PORTB-t is az elejen allitsd be (osszes vezerlo vonal 1-es,”
Nincs ott valami túlterhelés, zárlat, stb. Egy egyszerű led villogtató programmal ki kellene próbálni a PORTB bitjeit...
A gombok állapotának vizsgálatához kellene egy kis prellmentesítés is.
Most kicsit összezavarodtam.
A kezelés elve az, hogy a PORTB magas szinten van. Az egyik oszlopnak megfelelő bitet kimenetre állítom, és alacsonyba váltom. Utána végignézem a sorokat, hogy melyik bemenet váltott alacsonyra. Ha egyik sem, akkor lépek a következő oszlopra. Közben a GOMB változót minden sor vizsgálatánál egyel növelem, hogy a végén megtudjam, hányadik gomb van lenyomva. Amit az 1. -es pontokban írsz, az csak sorrendi változás. Kivéve a globális felhúzót, azt a sort kivettem. Aztán azt írod, hogy a PORTB-t nem kell állítgatni. Hp41C éppen az ellenkezőjét írta. A TRIS kapcsolgatásának módja nem hiszem, hogy befolyásolja a működést. A teljes port írásával egyszerre állítom vissza bemenetre az előző lábat, és kimenetre a következőt. Ez így is két utasítás, meg akkor is, ha BSF TRISB,4 BCF TRISB,5 alakban írom. Azt tudom, hogy ha az egyik lábat kimenetre állítom, a felhúzó ellenállás automatikusan kikapcsolódik. Azt viszont nem tudom, hogy ha visszalököm bemenetre, akkor visszakapcsolódik-e. Ezért állítgatom inkább újra be. De még mindig nem tudom, hogy a második vonalam miért nem működik. A programozása nem tér el a 3.-tól, ami viszont működik. Most újra felteszem a módosításokkal. Prellmentesítés egyelőre nem lényeg, csak a kezelést próbálom megoldani. Majd hosszan nyomom.
Ezekkel a módosításokkal teljesen elrontottam.
Most gombnyomás nélkül is villognak a ledjeim össze-vissza.
Örömmel jelenthetem, hogy kész van.
Köszönöm mindkettőtöknek a segítséget, és meg is osztanám a tapasztalataimat. Az előbbi káoszból a globális felhúzó sorának visszaírása hozott ki. Ez tehát mindenképpen szükségesnek mondható. A második oszlop pedig valóban egy áramköri szakadás miatt nem működött. Szégyellem, de nem jutott eszembe magamtól megnézni. A ledvillogtató viszont rögtön kimutatta a dolgot. (meg a nagyító) Köszi mégegyszer. Nem megyek messzire, mert következik az LCD project újraindítása. Lesz kérdésem az biztos.
Szép napot!
Csináltam egy saját kódolású távirányítót amelyben 6 parancsbit van. Ami egy poti és az A/D segítségével tologatok 0-64-ig Ehhez csináltam egy vevőt is, ahol láthatom decimálisan a kijelzőn az értékemet. A problémám az, hogy ez infrán remekül megy, de tx 4msil- bc-nbk rádiómodul adójára ugyanezt elküldve villódzanak a számok. elfogadhatatlan az átvitel. Amit még kérdezni szeretnék. rendben van a 0-64- ig lesz a modellben a gáz szabályzás de ugyanazon az adón egyszerre hogy kormányozok szintén 0-64-ig vagy akár 0- 255-ig és ugyanakkor egyéb funkciókat is kapcsolok lámpa, index, detonátor Feltételezem, hogy sorosan csak csomagokat küldhetek, és akinek inge az veszi magára, máskülönben elmodulálnám a jelet, és senki se értené? Köszi!
Ez megint nem PIC kérdés...
Rádió átviteltechika: Menchester kódolás. Jelen esetben a jeled középátlaga nem 0, ezért a rádió adó-vevő kiakad egyik irányba. Soros adatátviteli protokollok: Igen, csomagokban kell a különféle értékeket megfelelő sorrendben, vagy jellel ellátva, ha nincs sorrend, küldeni és dekódolni. CRC fontos, főleg rádiós átvitelnél.
Igen.
Sziasztok.
Van egy érdekes jelenség, amit nem értek. Készítettem egy egyszerű 4*4-es LED-mártixot. Egy port vezérli. Amikor egyenként végigléptetem, akkor mindegyik felvillan, de ha egy B'11111111'-at küldök ki a portra, akkor csak a képen pirossal ábrázoltak világítanak. Nem kellene mindnek?
Jó lenne egy rajz is, hogy megértsük a kapcsolást...
Ha jól kötötted volna be, akkor egyiknek sem kéne! (Feltéve, hogy csak a lábakra kötötted, és nincs meghajtó tranyó, vagy IC.)
Nem kell ide rajz.
Az oszlopok a LED-ek anódjai, a port egyik feléről kapják a tápot, ha 1-be állítom. A sorokat a LED-ek katódjaira kapcsolt tranzisztorok látják el 0 V-al, ha a tranzisztorok bázisára a port másik feléről 1-et kapcsolok.
Egy-egy áramkorlátozó ellenállás kellene még... Mindnek világítania kellene, ha jó a kapcsolás. Szakadás, fordítva beültetett, más színű, típusú, fényerejű LED esetleg zárlat lehet az oka. Ellenállás nélkül nagy áramok mehetnek a tranzisztorok kollektor körében 4 * (40 .. 100 mA).
Milyen tranyók, milyen ellenállásokat tettél és hová? Csak kéne az a rajz, bár megint elmegyünk LED mátrix bekötésbe!
A PIC melyik portját használod? Biztos mind kimenet és kijön rajta az 5V? Nem A/D kimenetek? Mi másra valók még a lábak? Nem lenne egyszerűbb a rajz?
Nincs rajz, mert fejből csináltam.
Ezért nem is fogok neki rajzolni. Az oszlopok bemenetére 1-1 db 180 Ohmos ellenállás van kapcsolva, a bázisra pedig 4,7k-n keresztül jut. Több alkatrész nincs. A PORT a C, vagy D. Esetleg kevés az áram? Egyébként nagy fényerejű fehér LED-ek. A portok jók.
Próbáld egyesével, de legalább soronként (tranzisztoronként), programból vagy kontroller nélkül vezérelve - a durva hibák így kijönnek... Azonos típusúak a led -ek? A led -ek eltérő küszöbfeszültsége okozhatja azt, hogy két párhuzamosan kötött led közül csak az egyik világít - az alacsonyabb feszültségű elviszi az áramot, és nem engedi a feszültséget tovább emelkedni. Az egyszerre kiadott vezérlésnél is megtörténhet.
Egy biztos, hogy valamit nem jól kötöttél be. És nehogy lerajzold, mert akkor lehet, hogy kiderül mit rontottál el. Végül az is biztos, hogy ennek innentől semmi köze a PIC-hez (Mehet a LED-es topicba, ez itt a PIC haladóknak topic!), ha azt állítod, hogy a portok rendben vannak!
Egyesével minden rendben.
Soronként meg elég érdekes. A vízszintes sorok kigyulladnak, a függőleges meg az elsőnél 1, a másodiknál mind, a harmadiknál 1 a negyediknél ismét 4 világít. Kicserélem az egyedül világítókat.
Hogy még a LED-eket is párba kell válogatni...
Egy újabb kérdés. 24 db RGB LED vezérléséhez hány port kell minimum? Az RGB-k egyébként bármilyen színt ki tudnak adni? Feltételezem, hogy ha igen, akkor a lábakra adott feszültségektől függ a színe. Ezt be lehet állítani egy PIC-ben előre? |
Bejelentkezés
Hirdetés |