Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Az a 0.65V lehet egy si dióda, ekkor együtt melegedik a "referencia" is, tehát kvázi hőkompenzálva van...
egyébként ha jól emlékszem 2,5K lehet az osztó maximális ellenállása. A hozzászólás módosítva: Ápr 12, 2014
Köszönöm a segítséget, közben találtam 470ohm-os potit, amit terheletlenül beállítottam 3V-ra, ezt már csak 0,03V-al húzza lejjebb a Vref+ láb. Megpróbálom majd 220+330 ohm-os ellenállásokkal, mert ahhoz nem kell nyákot módosítani.
Persze lehet hogy vak vagyok, de továbbra sem találok erről semmi infót. Én most használok először külső referenciát, de nem hiszem hogy más még nem futott bele ebbe...
Használj TS431-et (SOT-23). Más PIC-nél találtam ilyet (16F887):
Idézet: „AD09* IREF VREF Input Current 10 — 1000 μA During VAIN acquisition. Based on differential of VHOLD to VAIN. — — 50 μA During A/D conversion cycle.”
Köszi, így meg is találtam:
AD08: IREF Current Drain 10 / 600 uA ADC off / ADC on Hát persze hogy itt nem szerepelt a "Vref" szó, csak amit te néztél.. különben még meg is találtam volna.. Köszönöm! TS431-et SOT-23 -ban eddig nem találtam Mo.-on.
Üdv!
Sikerült időt szakítanom a ws2812B projectemre. Egyenlőre egy LEDel szenvedek. Be tudom kapcsolni, de valamiért nem tudom a színeket módosítani. Mindíg fehéren világít. Játszott már valaki ilyennel? Bitbillegtetéses módszerrel próbálom vezérelni. A kódot innen implementáltam, és egy PIC16F1459-essel hajtom RB-6-on. Szkópom sajna most nincs ezért nem tudom megnézni a valós kimenő jelet, de szimulátoron jó volt a jel. Van valakinek tapasztalata ezzel a leddel, hátha valamit rosszul értelmezek? Bár nem egy bonyolult protocoll, de mégsem megy valamiért. A hozzászólás módosítva: Ápr 14, 2014
Szerintem kevés a 20MHz a rövid impulzusokhoz. Nálam még éppen elindult, de továbbléptetni már nem tudtam. Számításaim szerint 48MHz-es kell minimum...
Bővebben: Link
Én egy primitívebb módon oldottam meg, 16Mhz órajel esetén kb 5 utasítás fér bele az időzítésbe.Sajnos el kellet tárolni az egész szalag képét, ez után kimeneti port a PORTC 0
Sajna így a portot teljesen lefoglalja, de több utasításra nincs idő. Az FSR regiszterrel címzett területről teszi ki a képet.
A hozzászólás módosítva: Ápr 14, 2014
Elégnek kellene lennie.
200ns-os utasitásonként, és az LED adatlapján +-150ns egy bitidő tűrése. Persze a port ki-be kapcsolását nem számoltam, de az minimális. proba: Ez hasonló ahhoz a módszerhez amit alkalmaztam, valamit mégis elrontottam. Kipróbálom ezt is.
Már a szín beolvasás tárolás, utána a feltételes ugrás megette az egy impulzusra jutó időt. Ilyen alacsony órajellel csak előre teljesen kiszámolt képet lehet kiírni szerintem.(a port kiírás ugyan úgy 4 órajel ciklus mint a többi.Sajna az ugrók meg 2*4 így az én rutinomba is van egy túl hosszú idő, a byte váltásnál, de ez az én szalagomon nem okozott gondot. A 60.ledet is úgy állítottam ahogy akartam.
A hozzászólás módosítva: Ápr 14, 2014
Az utasítások ciklusidejével tisztában vagyok, így utólag belegondolva a 3 szín közötti kapcsolatot nem számoltam át, azt csak átemeltem, mondván ha neki jó volt nekem is jó lesz, átszámolom, de nem hiszem, hogy ott lesz a hiba. Lehet, hogy megemelem az órajelet a végén, és akkor mahinálhatok is benne, a PIC tud 48MHz-t is belső órajelről.
A hozzászólás módosítva: Ápr 14, 2014
Hello!
Tudtok mondani olyan PIC-et ami a 16f1459-el kompatibilis digital I/O, és utasításkészlet szemponjából?
Itt kiválasztod a Family-nál az Enhanced mid range-t, Pin Count-nál kiválasztod a 20-at, és akkor kapsz egy listát.
Új kérdés.
A BANKSEL utasítás mennyi ciklusidő, 1 vagy 2? Ezt nem találtam meg sehol. Mert ez eredetileg ugye az RP0 és RP1 biteket állítaná, ami 2 ciklus , de nem tudom, hogy mint kibővített utasításkészletet hogyan kezeli a PIC. A hozzászólás módosítva: Ápr 15, 2014
A banksel nem utasítás, hanem makró. Kontrollere válogatja, minek fordul le.
Megtaláltam köszönöm.
MOVLB és 1 ciklus.
18F-nél MOVLB és 1 ciklus. 16F-nél inkább két BCF/BSF utasítás (BCF/BSF STATUS, RP0/RP1), vagyis két ciklus.
Valóban, de ez bővített készlettel rendelkezik, megnéztem az adatlapját is meg a disassembly listingben is MOVLB-nek fordítja.
Tegnap olvasgattam az edaboardot és meglepődve tapasztaltalak.
Eladhatatlan lenne az Advanced Midrange, ha a 32 lapjának váltását 5 darab bitállítgató utasítással lehetne csak elvégezni.
A hozzászólás módosítva: Ápr 16, 2014
Az MCP4922-nél az működhet, ha a chip select lábat fixen lekötöm nullára? Az SPI ponton csak ő van, szóval ha bezsél hozzá a PIC az biztos hogy csak neki szól nem másnak. Viszont spórolnék egy lábat.
Nem. Az SPI kommunikációját a CE lefutó éle indítja.
Idézet: „The write command is initiated by driving the CS pin low,...”
Szeretném kicsit átvariálni a programomnak a programmemóriában való elhelyezkedését. Alább bemásoltam az ide vágó részt. Ahol "..." van ott egy tonna utasítás van csak azokat kitöröltem mert most feleslegesek. A mikrovezérlő programja két részből áll: egyrészt az érdemi szoftverből ami a lelke az egész áramkörnek és van egy legalább ekkora rész amin pedig adatokat tárolok. Nagyon-nagyon sok adatot. Azt szeretném, hogy a program érdemi része a programmemória elejétől kezdődjön, az adatok pedig utána legyenek. Ezt az alábbi kódrészletből láthatóan úgy oldottam meg hogy a szoftver a 0x0030-as címről kezdődik, az adatok pedig a 0x7530-tól. Ez tulajdonképpen nekem már jó, csak ha később a szoftvert tovább bővítem és hosszabb lesz, akkor esetleg lehet hogy eléri majd a 0x7530-as címet. Hogyan lehetne megoldani hogy ez ne történhessen meg, és hogy az adatok közvetlen a főprogram után legyenek a memóriában? Azaz ne fixen a 0x7530-tól kezdődjenek hanem dinamikusan változzon a kezdetük.
(A szoftver szempontjából mindegy hogy hol vannak az adatok a programmemóriában mert táblamutatókkal dolgozom amik a "TESZTPROGRAMOK" címkére állnak rá és onnan kezdik el kiolvasni az adatokat a programmemóriából.)
Miért nem írod akkor a programod végére egyszerűen az adatokat?
Igen, ez egy nagyon logikus kérdés.
Azért mert így jobban olvasható a kód mert a fejlécben lenne a vektoroknál megadva az egész. Igazából csak a megvalósításának lehetősége érdekelne mert mondom, tulajdonképpen nekem ez így is jó. Ha esetleg elérné a főprogram az adatok kezdeti címét, akkor úgy is visít a fordító.
Akkor tegyél a programod végére egy címkét és azt írd az adatbázishoz tartozó ORG után ( nem próbáltam, de jó lehet ! ) !
A hozzászólás módosítva: Ápr 18, 2014
Közben lett egy másik, sokkal fontosabb kérdésem is.
Meghívok egy szubrutint (CALL utasítással) ami nagyon hosszú ideig, akár órákig is eltarthat míg benne szaladgál a mikrovezérlő. Viszont van egy nyomógomb a PIC int lábára kötve és azt szeretném hogyha ezt a gombbot megnyomják akkor azonnal kilépjen a szubrutinból. Tulajdonképpen egy vészgomb funkciójához hasonló dolog megvalósítása miatt kell ez. Meg lehet ezt valahogyan oldani? A veremtárral kellene valahogyan játszani szerintem, de még nem jöttem rá hogy pontosan hogyan... Valahogy a PUSH/POP utasításokkal kellene manipulálni a vermet. Viszont nehezíti a dolgot hogy a nyomógomb megnyomását is a PIC megszakításban kezeli azaz a gomb megnyomása is új címet rak a verembe. Illetve a kérdéses szubrutinból is lehet hogy meg van épp hívva egy másik szubrutin, ez esetben kettővel kellene feljebb ugrania a mikrovezérlőnek. Arra gondoltam hogy annak a szubrutinnak az elejére amelyikből ilyen módon "kényszerítve" szeretném kiugrasztani a mikrovezérlőt, tehát ennek a szubrutinnak vagy szubrutinoknak az elején bebillentenék egy erre kijelölt bitet és amikor megnyomják a gombbot akkor a megszakításban ellenőrizném hogy ez a bit 1-be van-e állítva. Ha igen akkor végrehajtódna ez a móka, ha meg nem akkor nem. Ezzel nagyon egyszerűen ki tudnám jelölni hogy mely szubrutinokból akarom erőszakkal kirángatni a PIC-et. (Természetesen a szubrutin végén a RETURN előtt pedig 0-ba állítanám ezt a bitet.) Csak honnan tudjam hogy a veremtár tetejéről hány visszatérési címet kell eldobálnom? Mert mondom; lehet hogy a szubrutinban egy másik szubrutint is meghívok, vagy akár azon belül is egyet stb.
Szerintem nem jól szervezed a programot, ha valahol ilyen sokat időzik és onnan kell kitépni. Javaslom az állapotgépek tanulmányozását!
|
Bejelentkezés
Hirdetés |