Fórum témák
» Több friss téma |
Nekiálltam nyúzni egy boardot hibák után kotorászva (az a gyanúm, más schematicot adtak nekem, mint ami valójában van), és szép lassan elkezdett semmi sem működni a boardon. Van egy pic32mx795, rajta 3 led d1, d2, b10 lábakon, és összesen csak annyit gondoltam egy külön programba, hogy kapcsolódjanak be. Ennyi a teljes főprogram (hiba üzenet nélkül fordul, ég be, gyakorlatilag egy demo-bol ollóztam ki, amiben működtek a ledek rendesen):
Jelenség: hát nem kapcsolódnak be. Elvileg mire van még szüksége a 32mx-eknek egy ennyire egyszerű dologhoz, mint lábak kimeneti szintjeit beállítani? Feltettem egy gyári demót, hogy leteszteljem a boardot, működik rendesen. A hardvernek kutya baja. De az a fenti program se kép se hang se semmi. Egy kicsike segítségre lenne szükségem, hogy tudjam, épelméjű vagyok-e még?
Hova van kötve a LED másik kivezetése? Nem alacsony szint kiadásakor világítana?
Még mindig fenn áll ez a probléma. Ha így csinálom akkor nincs baj:
Ilyenkor világít mind a két led. De amint egy bsf, vagy bcf-et használok elszáll az egész és csak az adott láb változik. A többit kikapcsolja. Mind a két kimeneten egy-egy FET található 470 ohm-os előtéttel. A hozzászólás módosítva: Jún 17, 2013
Az a kódrészlet egy működő programból lett kinyisszantva. Egészen konkrétan a HardwareProfile.h-ból. Biztosan nincsen baja. Egyéb iránt ez volt az eredeti formája:
Azzal a programmal valamiért az az érzésem van, hogy egyáltalán el sem indul, vagy nem tudom. A config biteket is a működő hwprofile-ból nyisszantottam ki, azok sem lehetnek elszúrva. Más meg egyáltalán nincs is a programban.
Sziasztok,
most kezdek csak gyakorlatban PIC-ezni, sok hülye kérdésem lesz, előre is elnézést értük. Mire kell figyelnem ha egy PIC lábaira tesztnek ledeket szeretnék kötni. Ha jól tudom lehet simán előtét ellenállással kötni. konkrétan 12f683-al kísérletezgetnék. Ha stabil 5V a tápfeszültség akkor logikai kimeneten is 5V lesz vagy valamivel kevesebb? Ha jól tudom max 25mA-t bír lábanként ez a PIC, akkor ha az előtét ellenállást a ledhez úgy számolom hogy 10mA legyen az rendben van elvileg? Mire kell figyelnem? Előre is köszönöm!
Valamivel kevesebb lesz, mint 5V, de nem sokkal és a PIC kimeneteire nyugodtan lehet kötni ledet előtétellenállással.
Köszönöm, akkor ha jól értem csak arra figyeljek hogy a PIC lábán a max mA alatt maradjak!?
Aztán az a max mA igazából peremfeltételek mellett értendő. Például kikábelezel valamit 10 méterre, és amikor feszültséget váltanál rajta, "visszarúg" a kábel (parazita induktivitás). Nem sokat, nem is fog tőle kisülni a pic, éppen csak egy koporsószög a kimeneti meghajtónak piff beverve
Igazából nem túl nagy baj, ha a max áram felébe bele tudsz férni. A hozzászólás módosítva: Jún 18, 2013
Köszönöm, ha jól emlékszem 12f683 nak 25mA a maximuma (majd megnézem az adatlapján biztos ami biztos).
10mA-re lőttem be az ellenállás mértékét, ahhoz bőven elég hogy a programot teszteljem és lássam amit kell. Köszönök minden segítséget!
Ezt nem értem még mindig. Bekapcsolok BSF utasítással egy portlábat. Fel is kapcsolja. Ha utána bekapcsolok egy másik lábat BSF utasítással akkor az előtte bekapcsoltat kikapcsolja. Mit rontok el? Felrakom az forrást!
Ezt a programot lefordítva és beégetve azt érem el hogy a két led felváltva villog. Pedig nem azt kellene csinálnia. A hozzászólás módosítva: Jún 18, 2013
Tárold az port képét egy memóriacellában, módosítsd, és azt írd ki.
A bsf utasítás bolvassa a GPIO-t, módosítja a tartalmát, és visszaírja. Valami (=terhelés) miatt a 0 bitet 0-nak látja a kontroller. A hozzászólás módosítva: Jún 18, 2013
Sziasztok! Van egy I2C soros eprom IC-m amivel kísérletezek! A típusa 24C16WP . A kérdésem az lenne hogy lehet-e adattokkal feltölteni pickit2-vagy 3 mal? A Pickit3 manual select-nél csak 24LC típusokat találtam... Van jelentős különbség C és LC típusok között?
Köszi. Így már jó.
Hallottam már erről de még soha nem tapasztaltam ilyet. Sőt. Idáig tökéletesen működött. Egyszer csak megbolondult. Azt hittem hogy a programban van a hiba. Azért is butítottam le ennyire, hogy lássam hogy mi a gond.
Lehet, az SDA lábat a Vdd -re kell húzni 2k7 ellenállással. 24LC16 beállítással programozható.
A hozzászólás módosítva: Jún 19, 2013
Hello!
Egy olyan kérdésem lenne, hogy pic et lehet úgy programozni, hogy folyamatos olvasson adatokat 1 port 4 lábán. És amennyiben a lábon nem 0000 hanem pl 0001 legyen akkor egy másik port valamelyik lábát kimenetre kapcsolja. De ha pl 0010 át kap akkor egy harmadik port valamelyik lábát kapcsolja kimenetre. És fontos lenne, hogy ez folyamatosan menjen, úgymond állandó ciklusban. Remélem érthető.
Érthető. Lehet ( feltétel vizsgálat ! ).
Köszönöm szépen!
A szabály bármi lehet, Te adod meg egy beégetett program formájában.
A tokba épített összes hardver (I/O portok, AD konverter, komparátor, időzítő, I2C, SPI stb.) a rendelkezésedre áll.
PIC18F RTCC modulját próbálom működésre bírni egyenlőre csak szimulátoron.
Sajnos nem látom szimulátorban, hogy az RTCVALL és az RTCVALH regiszterek felvennék a W értékét. Mi lehet az oka? Másik kérdés, hogy a szimulátorban simán beáll RTCWREN bit ezen kód nélkül is:
Akkor az adatlap miért ajánlja a fenti megoldást?
Sziasztok!
Egy szervo motort vezérlő programot szeretnék írni, ami 5 uSec-onkénti megszakítással, szoftveresen állítja elő a jelet. A kontroller a beépített FRC-s 7.37MHz-en fut, vagyis az utasítás végrehajtási frekvencia elvileg ennek a fele. Az időzítéshez a Timer2-t használtam, PR2-t az alábbi képlettel számoltam, 1-es előosztással: [5uSec * (7,37MHz/2)/Prescale] -1 = 17. Viszont azt a furcsaságot figyeltem meg, hogy 5uSec helyett 10uSec-onként érkeznek a jelek, vagyis olyan, mint ha 3.685/2-ről futna a kontroller, de nem értem miért, ha nincs előosztás beállítva. Próbáltam pontos képet kapni a jelről a PK2 logikai analizátorával, de sajnos állandóan megfagy a szoftver mikor elindítom a RUN-t, így oszcilloszkóppal figyeltem meg, hogy a jelek ideje mindig duplája annak, mint ami 5uSec-onként lenne. Jelen program 5uSec-ra van írva, vagyis a "szamlalo" adja a 20msec-os periódust, a "szervo" pedig az aktív magas jel idejét. Ha az említett két számlálót a felére csökkentem, akkor tudom vezérelni a szervót, viszont nagyon bosszantó, hogy nem értem miért van benne ez a 2-es osztás. Ha tudtok, kérlek segítsetek, mert nem tudom hol csúszhat el a dolog ennyire.
A hozzászólás módosítva: Jún 21, 2013
Szia!
Idézet: „A kontroller a beépített FRC-s 7.37MHz-en fut, vagyis az utasítás végrehajtási frekvencia elvileg ennek a fele.” Ugyan nem írtad a konkrét típust, de a végrehajtási frekvencia az órajel negyede. 7.37 MHz mellett 1.8425 MHz. Azaz egy utasítás végrehajtási ideje: 542 ns. A megszakításba legalább két utasítási idő a belépés és az retfie is ennyit visz el. A szükséges mentések még 8 utasítás igényelnek még (movwf WREGSAVE / movf STATUS,w / clrf STATUS / movwf STATUSSAVE / ... / movf STATUSSAVE,w / movwf STATUS / swapf WREGSAVE,f / swapf VREGSAVE,w). Ez maga 4.342 us + 2.17 us = 6.15123 us. Ha jól számolok..
Ne haragudj, igazad van. 16 bitesről van szó, PIC24HJ128GP504-ről. Ennél viszont FOSC/2 a végrehajtási frekvencia. Tehát még sajnos mindig nem értem honnan jöhet a 2MHz.
PIC-eket nem programoztam ASM-ben sajnos, viszont az általad felvázoltak alapján még ki is csúsznék a megszakításból az 5uSec-mal?!?! A hozzászólás módosítva: Jún 21, 2013
Szia!
Ha 24HJ -ről van szó, akkor minden általam kiszámolt idő feleződik. MpLab szimulátorában tegyél egy töréspontot a megszakítási rutin szamlalo=szamlalo++; utasítására és a _T2IF=0; utasítására. (Apropo szamlalo=szamlalo++; nem szamlalo++; akart lenni?) Lehet, hogy a T2IF törlése csak akkor történik meg, ha már másodszor is belillent.
MPLABX-et használok és a szimulátor órajelét nem bírom átállítani 1MHz-ről, ráadásul 1MHz-cel sem tudom rávenni a programot, hogy mutassa a logikai jeleket az analizátorban. Sajnos elég sok nyűgöm van MPLABX-szel, de legalább sok kényelmi funkciója van, ezért maradtam e mellett.
De azért köszi a tippet, akkor valahogy megpróbálom rávenni az analizátort a működésre, hátha az elárulja mi a gond. De amúgy az akart lenni, csak előtte volt már ott +5, +10, stb, aztán most éppen ++ lett.
Nem is fogod visszalátni RTCVALH és RTCVALL regiszterekbe írt értéket, mert a PIC adatlapja szerint ezek bitjei: "Unimplemented: Read as ‘0’".
Ettől még íráskor RTCPTR decrementálódhatott volna... Mondjuk én sem értem pontosan a doksi miért fogalmaz így, utalva arra, hogy RTCVAL olvasható is... Idézet: „ Points to the corresponding RTCC Value registers when reading the RTCVALH<7:0> and RTCVALL<7:0> registers; the RTCPTR<1:0> value decrements on every read or write of RTCVALH<7:0> until it reaches ‘00’. ” Idézet: „...nem programoztam ASM-ben...” Bocsi a kukacoskodásért, de az ASM nem egy programnyelv, hanem csak egy mozaikszó a fordító számára, ami az Assembly nyelvű kódrészletre utal egy C, Basic, stb. nyelvű programban.
Szerintem meg az. A gépikód fogyasztható szöveges verziója.
Szerbusztok!
A következő problémám lenne : Van egy áramkör teljes leírással, csak picit módosítani kellene rajta. A feladat az lenne, hogy egy kétdigites 7szegmenses kijelzőn meg kell jeleníteni a számokat 0-15-ig úgy, hogy a léptetést egy-egy up/down nyomógombbal lehessen előidézni. Erre van is kész pices megoldás forráskóddal, alapos leírással. A link itt található. A kapcsolás pedig az alul látható lenne. Nekem annyival többre lenne szükségem az ott megoldásra kerülthöz képest, hogy a négy szabadon maradt RA4-RA7 lábakon meg kellene jeleníteni a kijelzőn megjelenő szám hexadecimális kódját. De ha máshonnan közelítem a dolgot, és arra van valakinek kész megoldása, hogyan tudok két nyomógombbal fel/le számoltatni úgy, hogy azt kijelezze egy ilyen ledes displayen, és közben a bináris kódjait is fel tudjam használni - nem lennék hálátlan!
Ezzel a kapcsolással csak három szabad kimeneti láb marad, mert az RA5/MCLR láb csak bemenetként használható. Mindenképpen más bekötést kell alkalmazni.
A kijelzést ezzel a kontrollerrel 4 digitre lehet bővíteni két további ellenállás/ tranzisztor beiktatásával. Neked egyszerre kell a decimális/hexadecimális kijelzés, és az x darab kimeneti láb? A PIC18F628A meglevő alkatrész? A PIC16F182x olcsóbb, és első ránézésre megfelel a feladatnak. A hozzászólás módosítva: Jún 24, 2013
|
Bejelentkezés
Hirdetés |