Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Idézet: „and the target Vdd is above 3.6 volts” Ebből úgy tűnik, mintha az ICD2-re nem kötötted volna rá a 3,3 V-ot! Ha nem érzékeli, hogy a PIC 3,6 V alatti tápfeszen van, akkor jogosan reklamál, mert ő csak 5 V-os tápfeszt tudna adni, ami önmagában véve nem gond, de az ehhez tartozó magas jelszintű PGD/PGC jel tönkre tenné a mikrovezérlőt. Végkszükség esetére egy megoldás arra, hogy az ICD adja a tápot és programozza a PIC18F14K50, de ezt nem szívesen használnám, mert kinyírhatja a mikrovezérlőt, ha egyszer adapter nélkül csatlakoztatod!!!. Ennél sokkal korrektebb megoldás a külső táp (3,3 V) alkalmazása, abból nem lehet baj!
A kísérleti áramkör csatlakoztatása és bekapcsolása ELŐTT csatlakoztatni kell az ICD2-őt a PC-hez és az MPLAB menüjében gondosan be kell konfigurálni, hogy ne akarjon tápfeszültséget adni a céláramkörnek. Ez megtörtént?
Túl sok kapcs rajz nem kell hozzá... D+, D- USB aljzaton, 470n a VUSB-n, 20MHz kristály két kondival, 100n a tápon.
Ennél primitívebb kapcsolást nehéz elképzelni, egyik gépen 100% a felismerése, a másik 2-n 0. A tápra tettem már bazinagy elkókat is eredményteklenül. Nem hiszem el hogy senkinek nem csinált még ilyet.... Senkinek nem csinált ilyet? Ha a HID oscilloscope HEX file-ját töltöm bele, akkor egyszer ugyan már látott belőle valamit, de felkiáltójeles maradt az eszközkezelőben, azóta semmi. A másik gépen azzal is jó. Lassan hajlok rá hogy a gépnek van valami baja, de eddig semmi mád USB eszközzel nem volt baja.
Megpróbálhatnád egyszer a Microchip gyári HID programjaival is, hogy kizárjuk a szoftver hiba (valami a határon lehet benne...) lehetőségét.
Hardver: tényleg jó lenne a kapcsolás! Külső felhúzás, VBUS figyelés, ugye, nincsen bekötve?
Szia már csak egy kérdés a kapcsolási rajzon R1 21k ellenálláson kapcsolódik a Vpp +12V?
Zavaró mert a kapcsoláson +5V van írva Idézet: „R1 21k ellenálláson kapcsolódik a Vpp +12V?” Szerintem a rajzon R1 = 10 kOhm. Ennél kisebb ne legyen! De a 21 kOhm (ha az van kéznél) is jó. Sokkal nagyobb ne legyen! De nem ezen kapcsolódik a Vpp, hanem közvetlenül az MCLR lábra. R1-nek az a szerepe, hogy programozás után felhúzza a RESET lábat, hogy elindulhasson a program. Programozáskor Vpp és a +5 V között kiegyenlítő áram folyik R1-en, ezért nem szabad túl kicsinek lennie. A dióda ezt a kiegyenlítő áramot hivatott megszüntetni az eredeti kapcsolásban, de vannak egyéb mellékhatásai, ami miatt nem javasolt a használata (VDD megszűnésekor nem húzza le az MCLR lábat, mert lezár a dióda). A drótosok ezt szebben el tudnák magyarázni, de a lényeg az, hogy elég oda egy 10 kOhm, az mindenkinek bevált...
Javasolnam, hogy rajzoldd le mit szeretnel megepiteni, mert mar a beszelgetesetek alatt elhangzott par dolog amiket jo lenne feltuntetni a rajzon, es utana azt atnezni. A rajzon termeszetesen legyen rajta az ICSP csatlakozo is, es akkor lehet majd latni, hogy jo helyre gondoltad-e a bekoteset vagy sem.
Szia!
Igen, beállítottam, hogy külső tápról menjen a programozás. A tápot most USB-ről kapja a panelka és lemértem, hogy el is jut a 3.3V az ICD2-es csatlakozásáig. (Az usb két kommunikációs lábát kikötöttem programozás előtt, hogy csak a tápot kapja) De ha ennek így működnie kellene, akkor nem tudom mi lehet a baj. ![]() Esetleg újra kiméregetem, hogy biztos jól kötöttem-e be az ICD2-es csatiját... Köszi
Rajzoltam a kapcsolást így gondoltam
szerintetek jó lesz?
OK, valahogy átküzdöm magam rajta, bár nem hiszek benne, ugyanis mint említettem ugyan az a program egy másik nyákban (ugyan az) tökéletesen működik, és a HID scope amit gondolom páran már megépítettek az is ugyan ezt produkálja, de mit lehet tudni. Egy próbát megérhet....
Nem láttam még ICD2-őt közelről, ezért csak kérdezem: a Programmer/Settings menüben nem kellene a kívülről kapott Vdd-nek valahol megjelennie? (vagy a Power vagy a Status fülre kattintva)
A bekötést ettől függetlenül érdemes ellenőrizni.
Lehet, hogy teljesen triviális dolgot kérdezek, de (sajnos még) kezdő vagyok....
PIC18F4685-öt használok tanulni (a jó nagy memória miatt néztem ki magamnak). A kérdésem, hogy a számlálókat interrupt nélkül is lehet-e használni? A számláló regiszter kiolvasható-e? Esetleg írható is? Egy olyan megoldást szeretnék, hogy két - nem számláló okozta - interrupt közt szeretném mérni az időt. Ugyanakkor nem szeretnék folyamatosan egy számlálót pörgetni fő ágként.
D1 meg mindig ott van, azt szedd ki, es mindket Vdd es Vss koze tegyel hdegito kondit -- most csak egyet latok (C3)
Idézet: Igen„a számlálókat interrupt nélkül is lehet-e használni?” Idézet: Igen„A számláló regiszter kiolvasható-e?” Idézet: Igen„Esetleg írható is?” Idézet: „Egy olyan megoldást szeretnék, hogy két - nem számláló okozta - interrupt közt szeretném mérni az időt. Ugyanakkor nem szeretnék folyamatosan egy számlálót pörgetni fő ágként.” A szamlalo sajat magatol porog ha egyszer beallitottad. Mikor jon egy megszakitas, tedd el a szamlalo pillanatnyi erteket, majd mikor megint jon, akkor szamold ki, hogy a pillanatnyi es az eltarolt ertekek kozt mennyi ido telt el. Persze ugy is csinalhatod, hogy a szamlalot az elso alkalommal torlod -- azonban mindket esetben biztosnak kell lenned abban, hogy a szamlalo nem csorgott tul.
Köszönöm a gyors választ!
Idézet: „Persze ugy is csinalhatod, hogy a szamlalot az elso alkalommal torlod -- azonban mindket esetben biztosnak kell lenned abban, hogy a szamlalo nem csorgott tul.” Az írhatóságot a nullázás miatt kérdeztem. Az idők akkorák, hogy "lötyögve" el kell férnie a 2 byte-os számlálóban.
Szia!
A mindegyik timer regiszter írható olvasható, de az írás megzavarhatja a működést. (Az a timer, amibe az írás történt, egy ideig nem számol. A Timer1 írására nézd meg a Timer1 Errata-t is.) Elég lenne a folyamatosan számlóló timer állapotát kiolvasni a kérdéses időpontokban és az értékeket kivonni egymásból. A két CCP modul capture üzemmódját pontosan ilyen feladatokra tervezték... Az esetleges túlcsordulás állapot figyeléssel vagy megszakításosan is lekezelhető, a számlálás tetszőleges bitszámra növelhető.... Szia
Ilyen jellegű bizonytalansággal egyszer találkoztam a PICkit2-vel kapcsolatban, amikoris az összeszerelésnél valami forrasztást "segítő" kencét használt a gazdája, és annak a maradványai tréfáltak meg. A kvarcoszcillátor indult vagy működött bizonytalanul. Egy alapos tisztítás után megszűnt a hiba.
Ha nem is feltétlenül szennyeződés miatt, de nálad is a kvarcoszci problémájára tudok gondolni. Esetleg próbáld meg kvarccserével, vagy a kvarc melletti kondik értékének változtatásával 815-33pF között). Ha USB-zel, akkor amúgy is lehet akár 16, 12, 8 és 4MHz-es kvarcról is járatni a megfelelő sebességgel a PIC-et, ehhez csak a config bitekbe kell belenyúlni (én 12MHz-eset szoktam leginkább használni). A config-ban esetleg a power up timer ki/bekapcsolásával is lehetne kísérletezni.
Szia!
Cseréld össze a két egyforma szerkezet kvarcát. Ha a hiba marad azon a készüléken, amiben eddig is volt, akkor a kapacitások, átvezetések a hiba oka, ha a hiba átmegy a másikra, a kvarc az oka. Épen tegnap vesződtem a 18F2550 HID bootloaderrel 4MHz kvarccal, előosztás nélkül, nem indult el, 20MHz kvarc, 5-ös előosztással (a kvarcot cseréltem, PicKit2-vel kiolvasva, csak a config területet módosítva beprogramozva), ugyan az a program rendesen fut. A PLL nagyon szűk tartománnyal rendelkezik a 4 MHz alapfrekvenciára (+/- 0.25%), a kvarcom egy régi magas tok volt 4MHz felirattal, a mostani egy új, alacsony tok, 20.000MHz jelzéssel. Szia
A frekimérőben pont így használom a timereket. Az egyik (timer2) adja az időalapot, a másik (timer1) folyamatosan számolja a külső bemenetre érkező impulzusokat. Az timer2 által generált interruptban kiolvasom a timer1-et (16 bites módon, hogy a kiolvasás közben ne csússzon el), és kivonom belőle az előző interruptban kiolvasott értéket.
Szia!
Ezen az elven, de a CCP modullal tároltatva, már 1 ppm-es mérést is tudok csinálni.... Két dolog miatt nem érdemes a felbontást tovább növelni: a felhasznált alaposzcillátor pontossága - ára, illetve a mérési idő - 1 ppm felbontáshoz már 1MHz méréséhez 1 másodperc kell... Szia
Szia!
Elnézést, nem annak válaszoltam, akinek a két szerkezet közül az egyik rendetlenkedik.... Szia
Elfeledtem ki venni a D1 diódát
Akkor 31 és 32 láb közé 100Nf kondit rakni és 11 és 12 láb közé is 100nf kondit rakni Akkor így minden tiszta már csak az égető kapcsolást kel meg építenem pont azon dolgozom Köszönöm az eddigi segítséget
Az sem volna butaság, ha mindkét áramkörnél a korábban általam javasolt sorrendben vezetnéd ki a jeleket, hogy az ICSP tüskesorod a PICkit2 készülékkel is kompatibilis legyen!
Rendben az jó ötlet
1. MCLR (ez a VPP) 2. VDD (+5V) 3. VSS (GND) 4. PGD 5. PDC 6. PGM (ez csak LVP módban kell...) De mi az a (LVP)? Van még valami a R1 lábára +5V ír oda csak a teszteléskor kel +5V kapcsolni? Égetésnél viszont a PIC 1 lábára +12V kapcsolok de akkor a R1 lábára +5V akkor nem kel ugye?
LVP --> Low Voltage Programming
Akkor kell neked, ha alacsony feszultseggel programozod a chip-et (tehat a Vpp-n nem 12-13V, hanem 5V van). A PIC-en a PGM/LVP labat amugy erdemes lehuzni egy 10-20k -val a foldre, illetve a configban az LVP legyen kikapcsolva...
Sziasztok!
Próbanyákon összeraktam egy kis pic18f14k50-es áramkört, programozni lehet PICkit2-vel, az le van tesztelve, csak le szeretném ellenőrizni, hogy működik-e rendesen. A 8-as lábára, azaz az RC6-ra tettem egy LED-et, és azt szeretném vele villogtatni. Ott akadtam el, hogy az elején ugye be kell állítani pár regisztert, hogy működjön a dolog, például a lábakat analógról digitálisra átállítani, meg ilyenek. Csak a mikrokontrolller adatlapjában rengeteg regiszter van, és nem tudom, hogy ezek közül melyeket szükséges beállítanom, meg hiába olvasom el, sokról nem is értem, hogy mire való. Tudnátok nekem abban segíteni, hogy mely regisztereket kell beállítanom? Köszönöm előre is! Ja és itt van az adatlapjához a link: Bővebben: Link
Megint egy kérdés....
Ha jól olvasom a dokumentációt, akkor sima I/O regiszter megszakítást csak a B7-B4-es lábak tudnak. (PIC18F4685) PicKit2-m van. A programozáshoz a B7-B6 foglalt. Mit csinál a PicKit, amikor éppen nem égeti a programot? Használhatók ezek a lábak a PicKit lehúzása nélkül nyomógombhoz? A tanuló panelemen pillanatnyilag jumper van a B6-os, B7-es lábon amivel a PGD, PGC bemenetekre, illetve a kiegészító panelek csatlakozójára lehet a lábakat kötni.
A legegyszerűbb, ha az adatlapban megkeresed az I/O portok alatt a PORT C-ről szóló szakaszt (a linkelt doksiban 9.3). Itt találsz egy példát az inicializálásra (example 9.3), de ez sajnos jelen esetben nem teljes, mert ott van megjegyzésben, hogy a 6. bit analógként indul bekapcsoláskor.
Ezért érdemes megnézni ennek a szakasznak a végén a Table 9.5-öt, amiben az összes olyan regiszter fel van sorolva, ami a PORT C-vel kapcsolatban áll (a PORT C viselkedését nem befolyásoló bitek ki vannak szürkítve). Innen látszik, hogy az ANSEL és ANSELH is beleszól. Az ANSEL-re rákeresve a 9.4 pontban találtam meg a bitek jelentését, az ANSELH-ban van az a bit, ami az RC6 analóg vagy digitális voltát állítja. Érdemes még a portról szóló szakaszban a Table 9.14-et tanulmányozni, amiben a PORT C minden bitjéről le van írva, hogy a digitális I/O-n kívül milyen más funkció van hozzárendelve. Ha nagyon korrekt akar lenni az ember, akkor az adott bithez kapcsolódó minden modult érdemes végignézni, hogy induláskor nem aktív-e, de a 18F-eknél ez már nem szokás, 16F-eknél kellett az analóg komparátorra figyelni ilyen esetekben.
Sziasztok!
A gondom ami némi fejtörést okoz: adott egy teljesen alap feladat: led villogtatás a főprogramban, és egy megszakítás rutin, amibe beletettem egy darab NOP()-ot, illetve törlöm a megszakításforrás flag-jét. Amint generálok egy megszakítást, úgy néz ki, mintha nem térne vissza a megszakítási rutinból, tehát megszűnik a led villogása ![]() paraméterek: hitech-c fordító, 16f1937, a megszakítás PORTB egy pin-jén lefutó él hatására. Megnéztem a fordított asm-et, abban benne van a RETFIE utasítás. Van esetleg valakinek valami öltete? Illetve a másik kérdés: PICKIT2-őt használok, rá lehet valahogy bírni az MPLAB-ot, hogy hajlandó legyen a PK2-vel kommunikálni/debuggolni a 16F1937-et? Köszi, Blint
A PORTB változás által okozott megszakítás lekezelésénél meg kell szüntetni a "változás" állapotot. Ezt úgy lehet elérni, hogy ki kell olvasni a PORTB-t (a változás flag-et talán nem is tudod törölni, mert az generálódik a legutolsó PORTB kiolvasáskor eltárolt állapot és az aktuális állapot különbözőségéből). A kiolvasott értékkel nem kell semmit csinálni, csak a kiolvasási művelet a fontos.
Egyéként ez benne van az adatlapban is. |
Bejelentkezés
Hirdetés |