Fórum témák
» Több friss téma |
Sziasztok!
Elkezdenék foglalkozni a PIC32-vel, de már is problémám akadt. A probléma az lenne, hogy rá akarok írni kezdésnek egy LED villogtató programot, de az MPLAB X mindig hibaüzenetet dob: Idézet: „ Failed to program device Selected device and target: memory mismatch.” A PIC-et felismeri és neki is kezdene a programozásnak, de mindig ez a hibaüzenet fogad. Itt találtam rá hibalehetőséget és az lenne a kérdésem, hogy ez tényleg okozhatja a hibát, hogy nem megfelelő kondi van a VCAP lábon? Gondolom azért mert (doksiban láttam) itt a processzoron keresztül történik a flash írása. A hozzászólás módosítva: Dec 14, 2015
A PICKIT2 vel történő programozása kapcsán vetnék fel egy gondolatot. Mi van akkor ha a PIC -ben olyan program fut amely kimenetnek definiálta a programozói lábait és a PICKIT 2 éppen vele szembe fel van dugva? Nem sérül ettől valamelyik?
Megnéztem a PICKIT2 kapcsolási rajzát, és ez nem nyugtatott meg. Lényegében egy sorosan kapcsolt 10 és 33 Ohm -on keresztül néznek szembe a portok. Ez nem igazán védne meg a kritikus áramoktól. Persze lehet olyan üzemmódja a rendszernek, hogy a PICKIT2 ha éppen nem programoz a beépített PIC lábak bemenetnek definiáltak. Ha meg programoz csak az MCLR aktivitása után válik kimenetté a PGD és a PGC. Szóval kell aggódni amiatt hogy a PIC ben futó program zavarhatja a PICKIT2 -t?
Azért ez így nem teljesen igaz! A PK2 saját programjával az Tools menü "Use Vpp First Program Entry" opciójával ekkor is működik a programozás. Másik jól működő megoldás lehet, hogy a program legelejére egy 1 másodperces késleltetést teszel minden előtt. Mire ez lejárna addigra belép a programozásba és nem kavar be semmi.
Ez rendben. De külső órajelről megy, végeredményben azon tűnődöm lehet -e PGEDx és PGECx lábakat általános I/O ként is konfigurálni, miközben a PICKIT2 a rendszeren marad. Eddig mindig "megúsztam" azzal, hogy a kimenetként definiált portokat Low ba állítottam Most viszont a kevés I/O láb miatt szükséges lesz használni PGEDx és a PGECx. et is.
Én is pont erről az esetről beszéltem.
A szolga ilyenkor minden adatot vesz, viszont bármilyen zavar az SCK vagy SDI lábon a szinkron elvesztését okozza. Az /SS jel szolgál(na) a szinkronizálásra.
Üdv!
Ha 16F690 belső oszcillátorról megy és RA0,RA2 port analóg akkor lehet használni a RA4, RA5 portot digitális kimenetnek?
Nem tudom pontosan nem ismerem a PIC-et, de valószínűleg le kell tiltani az RA4-et mint OSCOUT és utána használhatod őt is I/O-nak az RA5-el nem kell semmit csinálni.
Szerk.: csak a TRIS biteket kell beállítani, hogy kimenetek legyenek. A hozzászólás módosítva: Dec 15, 2015
Szimulátorban próbálom de sehogy nem akar digitálisra állni.
ezeket a beállításokat használom. Mit nem állítok jól be?
Kicsit bőbeszédűbb leírás segítene. Milyen szimulátor? Mi a konkrét hibajelenség? Mi van a programban? Stb.
A szimulátor proteus, a hiba az az, hogy a RA4,RA5 analóg marad, a program feldolgoz egy gombnyomást majd a ra4- re magas szintet kellene adjon. A RA0,RA2 feszmérést csinál az jól működik.
A konfigurációs szót milyem értékre állítottad?
Idézet: „INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN”
Köszönöm, az oszcillátor beállításnál volt a hiba. INTOSC volt beállítva INTOSCIO helyett.
Sziasztok!
Egy PIC16F1613 PIC-kel szeretnék PWM szabályzást megvalósítani, de valamiért semmi áron nem akar PWM jelet adni a kimenetein. Mindkét PWM modult használni szeretném, amik az RC5 és RC3 lábon érhetők el. A MikroC beépített függvényét használom, amit már számtalanszor használtam eredményesen, nem hinném hogy azzal lehet gond. A kimeneten néha magas szint, néha alacsony szint jelenik meg teljesen véletlenszerűen. Sajnos nincs több ötletem, ezért nagyon örülnék ha valaki tudna segíteni.
} Idézet: „void PWM1_Set_Duty(unsigned short duty_ratio); Sets PWM duty ratio. Parameter duty takes values from 0 to 255, where 0 is 0%, 127 is 50%, and 255 is 100% duty ratio. Other specific values for duty ratio can be calculated as (Percent*255)/100.” Idézet: „PWM1_Set_Duty(512); // Duty cycle = 50%” Olyan, mintha
írtál volna.
Köszönöm a gyors választ.
Már próbáltam kisebb értékekkel, de sajnos nem lett jó. Jelenleg így próbálom:
Az eredmény: Az RC5 lábon alacsony szint, az RC3 lábon magas szint van, de nem PWM. Az errata-ban ír valamit a CCP modulról, de sajnos nem teljesen tiszta számomra.
Szia!
Ennél a picnél teljesen használhatatlan a mikroc-s függvény. Annyira átírták a CCPxCON struktúráját, hogy össze-vissza kever mindent. Például a 7-6 bit kapcsolja a pwm modult és a lábakat, amit a függvény egyből kinulláz. Már nem ebben a regiszterben van a duty LSB-je, helyette itt állítható, hogy milyen módon kezelje a két nyolc bites beállító regisztert. És persze nem kezeli azt sem, hogy pl. a CCP2-höz ne a TMR2-t rendelje hozzá, mint az 1-eshez, hanem a 4-6 valamelyikét. Sajnos itt kézzel kell megcsinálni a pwm-kezelést.
Szia!
Köszönöm a válaszod. Ez esetben inkább választok egy másik kontrollert hasonló lábkiosztással. Mire figyeljek, van esetleg egy széria, amit ilyen módosított regiszterekkel gyártottak?
Az újak már egyre inkább ilyenek lesznek. De pl. a 1823-as még a régi szisztéma, a 616-os meg egészen az. Egyszerű megnézni. Ha az adatlapban a CCPxCON felső két bitje P1M, akkor az a régi és megy vele a függvény, ha EN OE, akkor nem.
Sajnos van még több hiba is. Az 1xxx pic-eknél már aktív a TxCON alsó bitje is (korábban az mindegy volt), emiatt előfordulhat, hogy rossz osztót állít a függvény. A hozzászólás módosítva: Dec 17, 2015
A nyákot már legyártottam, ezért korlátozva vagyok SOIC 14-es tokra, és minimum 2 CCP modul kellene. Ezeknek eleget téve a 1824-et találtam megfelelőnek, azonban a TxCON alsó bitje ennél is aktív.
Legalább már tudom, hogy mire kell figyelni.
Arra azért vigyázz, hogy mindkét CCP alapból a TMR2-t használja, vagyis ha eltérő frekvenciát állítasz be, nem fog rendesen menni. Az utoljára beállított lesz az igaz mindegyikre.
A függvény meg csak a TMR2-t kapcsolgatja mindegyiknél akkor is, ha a CCPTMRS0-t átállítod. (6.0-ás mikroc-nél így van. Lehet, hogy már kijavították, de még nem néztem meg.)
Inkább írd meg azt a három függvényt a 16F1613 -ra.
Mi a bajod azzal, ha azt a pár sort te írod meg?
Egyszer úgy is meg kell tanulnod, mert előbb utóbb még szükséged lehet ilyesmire. Adatlap biztosan segíteni fog, hogy melyik regisztereket kell állítanod és mire.. Ne félj tőle..
Prendick:
Egyforma frekvenciát használok mindkettőnél, csak a kitöltési tényező változik. Köszönöm, hogy megemlítetted, később hasznos infó lehet. Hp41C & don_peter: Valóban hasznos lenne megírnom, de sajnos most idő híján a gyorsabb megoldást kellett választanom.
Sziasztok!
Még régebben csináltam egy I2C-s LCD vezérlőt(slave i2c) és nem figyeltem, hogy hiába veszi az adatot NACK-al tér vissza. Elkezdtem utána járni és elég lehetetlen dolgot találtam. Idézet: „There are certain conditions where an ACK will not be sent by the slave. If the BF bit of the SSPSTAT register or the SSPOV bit of the SSPCON1 register are set when a byte is received.” Ebből számomra a lényeg az volt, ha a BF bit 1 akkor és a 9 órajel jön akkor NACK-al tér vissza. Utána jött a kommunikáció kép és azon az látszik hogy a 8 órajel utána az adat vagy cím vételével a BF bit = 1 és csak a 9 órajel után keletkezik a megszakítás. Ez számomra érthetetlen, hogyan oldhatom meg, hogy megszakítással használjam az i2c-t de ne NACK-ot küldjön mikor tisztán veszi az adatot?
Sziasztok!
Meg tudnátok mondani, hogy hogyan is kell értelmezni a képen látható kimeneti értékeket, ha ezek elvileg előjel bittel vannak ellátva, de mégsem szimmetrikusak (0x2852 és 0xD7AE)? Miképpen van ez átváltva 24 bites értékre mire a waveform regiszterbe kerül és mi az átszámítás matematikája a tényleges érték megkapásának a PIC-ben? Először meg kell vizsgálni az előjel bitet, majd ettől függően a kettő közül az egyik értéket kell hozzárendelni a maximális bemeneti értékhez és ebből már visszavezethető az LSB-hez tartozó érték? ADE7753 adatlap A kép a 26. oldalon van, az ADC transzfer képlete a 23-on.
Szia! Egy azért biztos, hogy a két érték "szimmetrikus" a 0x2852 =10322 és a 0xd7AE = -10322
Kösz! Erre közben rájöttem én is, de ahhoz hogy eldöntsük hogy éppen negatív vagy pozitív ahhoz a legegyszerűbb egy olyan IF-et használni, ahol az érték a 0xFFFF (maximális érték) és a minimális a 0X8000 (csak az MSB 1-es) és közöttük van a regiszter/változó értéke? Szokott erre lenni konvertáló függvény (mikroC)?
Ha az IF lefut, akkor meg -1 és negálás után kerül az érték a regiszterbe és bebillentünk egy sign bitet, hogy negatív volt? A hozzászólás módosítva: Dec 17, 2015
Sziasztok!
Egy teljesen kezdőnek melyik az a PIC széria, amelyik kísérleti célokra legjobban megfelel (többnyire valószínűleg alap funkciókra, LED-eket működtetve)? A legopcionálisabb az lenne, ha az égetőjét is el tudnám készíteni házilag, ahogy nézegettem húzós árban mennek. Válaszokat előre is köszönöm
10F, 12F, 16F, 18F eléggé hasonlóak az utasítások zöme ugyan az. Ezekhez a PicKit2 teljesen jó. Egyéb programozó nem ajánlott. Egy használt példányt pár ezresért megkapod, a klónt megépíteni sem olcsóbb.
A hozzászólás módosítva: Dec 18, 2015
|
Bejelentkezés
Hirdetés |