Fórum témák
» Több friss téma |
Köszönöm nektek!
Megfogadom a tanácsod, előbb inkább az óra részeit, működését értelmezem, tanulmányozom. Így az általad lebontott formában. Igazából nagyon az elején vagyok még a dolgoknak, de szeretném elsajátítani az elektronika ezen műfaját is, igaz suliban tanítanak mikrovezérlőket (sajnos nem sok órában), viszont félek nem fogom megérteni rendesen, így önszorgalomból próbálnám a dolgokat helyre rakni.
Valóban, piros code protect... Ilyenkor mi a helyzet? Benne van a progi a PIC-ben?
Code protect: Kiolvasásvédelem. A levédett PIC kontrollereknél minden utasításkód helyett 0 -t (nop) olvas ki a programozó.
A PICkit2 az írást úgy végzi, hogy a konfigurációs szót (szavakat) programozza be utoljára. Ha az írás közbeni ellenőrzés be van kapcsolva, a konfigurációs szó (szavak) programozása előtt ellenőrzi a kontrollert. Ha a programot és az adatokat sikeresen beírta, akkor beírja a konfigurációt is. Idézet: „Benne van a progi a PIC-ben?” Ha be volt kapcsolva az írás közbeni ellenőrzés és az írás végén nem jelzett hibát, akkor biztosan beírta. Az írás befejezése utáni ellenőrzések már hibát jeleznek a védelem aktivizálása miatt. Ha egy védett konrtollerből olvastad ki a progarmot, akkor egy csupa nop utasításból álló program van a programozott kontrollerben. Idézet: „Ilyenkor mi a helyzet?” Ha állományból töltötted be a programot (hex file), akkor egy kis ügyeskedéssel (a hex állomány módosításával) le lehet tiltani a védelmet.
Nagyon köszönöm a kimerítő választ. Most építem az Attila86 féle panelmérőt, és ezek szerint a PIC is készen van. Köszönöm mégegyszer.
Uraim, a PIC32-eseket lehet PICKIT2-vel programozni?
Vagy azzal már nem? Gondolok itt a Max 3.6v-os PIC-ekkre, meg arra, hogy azt írják a Microchip fórumon, hogy az már nem támogatja a PIC kit 2. A hozzászólás módosítva: Okt 1, 2014
Csak Vdd állítós PICkit2 -vel lehet programozni őket. A Szilva félével nem, mert az ICSP vonalakon nem korlátozza a feszültséget a Vdd_tgt szintjére. A gyári kezelő programja elég szegényes választékot ad és az azonosítás is hibás. Csak néhány bitet használ, így "összetéveszthet" típusokat. Sajnos a programming executive is be van vasalva a programba, ami lehetetlenné teszi a 32MX1x, 32MX2x -ek kezelését.
Egy kis C# programozással megoldható az összes 32MX programozása, de az MpLab és MpLabX valamint az MpLab IPE nem támogatja sem programozásra sem nyomkovetésre a PICkit2 -t.
Nekem ez a PicKit2 típusom van: Bővebben: Link
PIC32MX795F512L-re gondoltam, hogy ki kellene próbálni, de egyből felmerült a programozási probléma. Akkor ezek szerint megoldható majd csak kell kis piszkálás egyéb még számomra ismeretlen helyen...
Nagy szerencséd van:
- A PIC32 családnál 0xFF000 DeviceIdMask -ot használ a program, a PIC32MX795F512L -é ennek ellenére is egyedi marad. - A programozási utastása szerint a bevasalt Programming execitive is megfelelő, - Van már definiálva ekkor memóriával kontroller. PIC32MX795F512L könnyen beletehető: - Töltsd le és telepítsd a Pk2DevicefileEditor -t. - Mentsd el a Pk2Devicefile.dat állományt más néven is. - Nyisd meg a Pk2DevicefileEditor -ral, - Keresd meg a PIC32MX340F512L -t, - Duplicate, írd át a típust PIC32MX795F512L -re, - Mentsd el a módosított állományt. - Nyisd meg úja, - Módosítsd a DeviceId -t 0x37000 -ra, a ConfigBlank[] és a ConfigMask[] adatokat a programozási leírás alapján. - Mentsd el a módosított állományt. A hozzászólás módosítva: Okt 2, 2014
Erről a a ConfigBlank[] és a ConfigMask[] módosításról tudnál valami szájbarágósabb információt is adni?
Egyszerű programfeltöltés enélkül is ment, de a konfigurációs bitekhez még nem mertem hozzápiszkálni, nehogy fejreállítsam a vezérlőt.
ConfigBlank[] és ConfigBlank[] 16 bites értékek. A ConfigWords mező tartalmazza a konfigurációs szavak (16 bites részek) számát. Maximum 9, de itt a tömbben csak 8, a 9. az UNUSED4 32 bites mezőben van, ConfigMask[8], ConfigBlank[8] sorrenben (PIC24FxxKA bővítés).
A legalacsonyabb címen található szó (32 bites esetben annak alsó 16 bitje) kerül a 0 indexre. A két tömb indexelése azonos. ConfigBlank tömb a törlés utáni értékeket tartalmazza, a WriteConfigOnErase mező utasítja a programot, hogy törlés után a ConfigBlank tömbben megadott értékeket írja be a kontrollerbe a törlés után. A kontroller adatlapjában megtalálható a konfigutációs szavak értéke törlés után. Ezeket kell megadni a ConfigBlank[] tömbben. A bitkiosztásnál funkcióval bíró biteknél 1 -et kell megadni a ConfigMask[] tömbben. Az újabb adatlapokban olvasható a maszkok táblázata: PIC32 esetén DS61145L-page 45.
Húú ez nagyon hasznos infó..
Köszönöm.. Viszont az utóbbi kicsit bonyolultnak tűnik.. (mondjuk minden az ameddig az ember rá nem jön mit kell csinálni) A programot már töltöm lefelé. Gondolom itt minél újabb annál jobb a program legalább is remélem. "PK2DFE 1.0.0.7"-est találtam ezen az oldalon: Bővebben: Link A hozzászólás módosítva: Okt 2, 2014
Az a legújabb, de még ez sem tükrözi a PICkit2 v2.61 értelmézését. Sőt egy hiba is van benne: A tömb elemeket cím szerint másolja a duplicate parancsra. így ha módosítod az újat. módosul a régi példány is. Ezért írtam, hogy a diplicate parancs után csak a típust írd át, majd mentsd ki az állományt és töltsd be újra. A betöltésnél már két független példány jön létre.
Ez is egy hasznos olvasmány. A hozzászólás módosítva: Okt 2, 2014
Újra elővettem a sebességmérő projektemet (PIC16F877A, ASM.), de elvesztettem a fonalat valahol. A lényeg, hogy CCP-vel fogadom a jelet. Elméletileg két CCP között számol a Timer1. Mivel két jel között többször is túlcsordul a Timer1, ezért a túlcsordulás növel egy változót. Az elképzelés az volt, hogy a túlcsordulásokat megszorzom 65535-tel és hozzáadom a két CCP értékét.
Na kb itt vesztettem a fonalat, nem igazán áll össze fejben, hogy mi lenne a következő lépés. Ha valaki adna egy kis szamárvezetőt azt megköszönném!
Szia! A timer0 csak 256-ig számol, nem 65536 ig . A timer0 nak a felső byte számlálója(RAM ban) lehet több darab is, nem okoz gondot. A timer0 előosztója beállítható 256-os osztásra.
Ha lassú jeleket kell detektálnod, akkor érdemesebb a timer2 számlálóval 1mS -os megszakítási alapot készíteni, (mert ezt könnyű pontosra beállítani) és ez az 1mS os időzítő már könnyen léptethet más számlálókat, amiket főprogramból lehet adott értékre állítani, resetelni stb.
Nem egészen értelek. A timer1-et használom, mert ez van a ccp-hez rendelve. A timer2 már foglalt.
Bocsánat, elsiklottam az adott szövegrész fölött.
A timer2 attól mert foglalt például pwm időalap, attól még használható pontos időzítésre, pl a PR2 249-re állításával. és az utó osztója beállításával pontos megszakítást generálhat. Ha a timer1-el kell elvégezni, az is járható út, amikor átfordul, megszakításban növeled az adott változót... jó úton jársz.. A hozzászólás módosítva: Okt 2, 2014
Megoldas lehet egy CCP INT, es ebben nullazod a TMR1-et. Esetleg, ha a TMR1 tulcsordulna a ket CCP megszakitas kozott, akkor arra is kell egy INT, aholis egy szamlalot novelsz minden INT-nel, majd a CCP INT-nel azt is nullazod a feldolgozas utan.
Nem kell szorozgatni semmit, ha számolod a túlcsordulásokat a CCP felfutáskor (vagy lefutáskor) előáll egy 24 bites számod ( túlcsordulás+CCPxH+CCPxL). Ezt elmented és következő capture eseménynél a új értékből levonod az előzőt (mint itt írtam), így megkapod az időt. Már csak a utat kell ismerni (körülfordulás) és ki tudod számolni a sebességet. A TMR1-et nem kell manipulálni, legfeljebb azt kell figyelni, hogy a túlcsordulás számlálód nem csorduljon túl kétszer (egyszer ugye szabad neki ). Amúgy is érdemes egy időkorlátot figyelni, különben soha nem írna ki 0 km/h-át.
Értem már! A 24 bites szám összeállítása nehezen esett le, de azt hiszem felfogtam. Gyúrom a kódot, majd jelentkezem! Köszi!
Habár ez 32 bitesre van:
PIC16F1527-re, bár nem hiszem, hogy lenne bármi speciális utasítás benne (legfeljebb a 16 bites makrók ).
Miért kell egy Advanced Midrange kontrolleren egy 16F84 -re fejleszett megoldást alkalmazni?
Midrange - 16F : "Only 35 single word instructions to learn" Advanced Midrange - 12F1xxx, 16F1xxx "Only 49 instructions" Köztük van már addwfc és subwfb utasítás is. Érdemes megnézni...
Teljesen igazad van. Két oka van: lustaság (Ctrl+c - Ctrl+v ), és a programot több picben is is kipróbáltam.
Csak azt nem értem, hogy ha megcsinálták az addwfc és subwfb utasításokat miért nem került a készletbe az addlwc és a sublwb.
Sziasztok!
Foxi készített nekem egy programot.
Ezt csak be kellett másoljam, átírtam a bemeneteket és a kimeneteket arra amire nekem szükségem van, de nem működik a program, rátölti, de aztán semmit nem csinál ha nyomogatom a gombokat. Szerintetek mi a baj?
Uraim, mit jelent pontosan, hogy földhurok?
Nem tudom, hogy ide e tartozik ezért elnézést, ha nem...
Inkább az analóg kapcsolásokhoz tartozik.
Köszi srácok
Olyan értelmében kérdezem, hogy ilyen földhurok előfordulhat PIC-es kapcsolásoknál, áramköröknél? Vagy tápegységeknél ami a kontrollerünket hajtja? A hozzászólás módosítva: Okt 3, 2014
Akkora aramok nem folynak, hogy a digitalis jeleket zavarna, mert ha igen akkor mar regen rossz. Viszont analog jelek feldolgozasanal elofordulhat, es ezzel meg tudja hamisitani a merest. Talan a telifold megoldhatja ezt a problemat, ja meg persze a megfelelo hidegito kondik. Vannak olyan PIC-ek ahol az analog GND es a digitalis GND kulon kivezetes
|
Bejelentkezés
Hirdetés |