Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Itt alul találod a Downloads rész alatt. Azért nem írok direkt linket, mert regisztrálni kell hozzá, hogy letölthesd. Ez nem teljes verzió, de 60 nap után a csak az egyes chipeknél levő bővített utasításkészlet használatát tiltja le, illetve az optimalizálások közül a "Procedural abstraction"-t. Minden egyéb tekintetben teljesértékű, komoly fejlesztéseket végzők számára is megfelelő az ingyenes verzió.
Vagy vadaszni kell egy kesz rutingyujtemenyt az lcd-dhez, es akkor nagy valoszinuseggel szabvanyos vagy ahhoz hasonlo fuggvenyekkel lehet ikalni.
Ha ilyet nem talalsz vagy nem megfelelo akkor neked kellene ezt megirni - szerencsere a C-ben eleg konnyu string kezeloket irni, pl egy putstr fuggvenyt ami egy nullaval terminalt stringet kikuld az lcd-re. Ha mar 1 karakter kiirasa sikerult, akkor ennek a fuggvenynek a megirasa sem jelenthet tul nagy problemat.
Én az ilyesmire jobban szeretek saját függvényt írni, akkor tudom, hogy az mit csinál. Egyszer kell megírni, és utána esetleg csak egy kicsit módosítani az alkalmazástól függően.
Nem írod, milyen C-t használsz, CCS esetén a drivers könyvtárban van LCD.C néven egy fájl, abban vannak kész rutinok. De sosem használtam, nemtudom, hogy milyen lcd-hez vannak.
Hali.
Gondoltam kicsit kipróbálom ezt a c-t egy kicsit, elvégre a diplomamunkámat abban írtam anno. Mivel ez egy pic24fj64g002-es ezért a microchip oldalról ezt szedtem le: MPLAB_C30_v3_02-StudentEdition.exe fel is ment, kérdezte módosítsa e a path-okat mondtam persze, baromi bonyeszos hello.c examlet betöltöttem, kiválasztottam a configure-ban a fenti chipet, megmondtam, a project/select language-ban kiválasztottam a c30-at csináltam egy tök üres linker scriptet, mert ezt írta: Executing: "C:\Program Files\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=24FJ64GA002 -c -x c "hello.c" -o"hello.o" -g -Wall Skipping link step. The project contains no linker script. BUILD FAILED: Sat Feb 02 23:45:00 2008 Ezek után ujra build egymilló sor kijött egyik sor error: c:\program files\microchip\mplab c30\bin\pic30-coff-ld.exe Error: A heap is required, but has not been specified végeredmény: Link step failed. BUILD FAILED: Sat Feb 02 23:47:46 2008 mi a fenét kell írni a linker file-ba?
Végül is találtam egy könyvtárban egy a chip-emnek megfelő linker filet, amitől a helyzet jobb lett sok uga megszűnt de most meg ez jött:
c:\program files\microchip\mplab c30\bin\pic30-coff-ld.exe Error: A heap is required, but has not been specified Link step failed. BUILD FAILED: Sat Feb 02 23:53:48 2008 Aztán a project build configban megtaláltam a heap méret beállítást, úgyhogy megoldódott.
már megtaláltam a hibát nem volt jó a kábel de azért kösszi . de lenne még egy kérdésem,hogy lehet a picből ki olvasni mert véletlenül letöröltem a programot a picben meg még meg van
Ha nem kódvédett a PIC-ben lévő tartalom, akkor egy PIC-égetővel pillanatok alatt kiolvasható a tartalom. Ezt a tartalmat viszont átlátni elég bonyolult feladat, sőt, majdnem hogy lehetetlen. Ha a PIC kódvédett, akkor nincs esélyed.
Jobban járnál, ha feltennél a gépre (ahol a forrásprogramod volt) egy fájl-visszaállító szoftvert, ami a teljes mértékben törölt fájlokat is sokszor vissza tudja állítani; így megmenekülnél sok szenvedéstől...
de ha kiolvastam belőle akor eltudom menteni és be tudom égetni másikba váltosás nélkül és legalább valamilyen formában megvan program
Helló Mindenkinek.
Ha egy PIC-ben lévő prg kódvédet, attól én még tudom törölni, és új prg-t betölteni? Köszönettel
Egy eve vagy talan tobb is elkezdtem egy projectet amivel lehet disassemblalni a PIC HEX file-okat. Ha assemblyben van irva akkor akar eleg eselyes is lehet, hogy egy viszonylag ertelmes forrast kapjal - persze annyira szep sohasem lehet mint az eredeti.
http://unpic.sourceforge.net/ Sok sikert! Tamas
Hello Noberto
Köszönöm a pontos, és egyértelmű választ.
Ha a PIC-ben levo program kodvedett, akkor kiolvasni azt a PIC-bol nem lehet, de felulirni igen - de csak bulk-erease-zel. Ez nem arra szolgal, hogy a PIC-et ne tudd tobbet hasznalni, hanem arra, hogy a firmware-ed vedve legyen - a konkurrencia ne tudja se masolni se megfejteni hogyan oldottal meg egy-egy problemat.
Ha az kell, hogy a PIC-be ne lehessen mas programot betolteni, akkor lehet hasznalni az OTP-s valtozatokat (one time programming). Ezeket egyszer lehet irni es aztan tobbet nem. C jelzesu PIC-ek ilyenek (pl 12C509).
én még nagyon az elején vagyok a pic programozásnak de szeretném megtanulni le lehet valahonnan tölteni a pic hez az utasitás készletet
Szia!
Én is teljesen kezdő vagyok ebben a témában, ezt találtam, talán neked is segít majd. Pic utasításkészlet
Hello Trudnai.
Köszönöm, minden világos, én a sajátomat szeretném védeni, de ha módósítok, akkor felülírható legyen. Köszönöm.
Sziasztok!
PIC-et programozgatok egy ideje. Megszakításokról keresgélek anyagot. Talátam párat, de számomra az összes ködösítettnek tűnt. Le tudná valaki írni normálisan, hogyan működnek. Addig eljutottam, hogy a timer0-t inkább counterként használjuk. Ami most kellene, és egyszerűen is hangzik. Azt kellene kiszámolnom, hogy 2 gombnyomás között mennyi idő telt el, minél pontosabban. A progi közben mást csinál. Úgy gondoltam, hogy lenyomáskor meghívódik az interrupt, a háttérben kiszámolja, beteszi egy globális változóba, és így tudom a főprogramban az eltelt időt. Erre tudna írni vki egy példaprogit? Mikrobasicben írom, de c-ben is jó lenne. Köszi
A Cikkek között találsz egy írást, címe "Nulláról a Robotokig".
Ennek a sorozatnak a harmadik része foglalkozik igen nagy részletességgel a megszakításokkal. Csak meg kell érteni. Én is azon vagyok
Köszi!
Megtaláltam. Ha lesz ezzel kapcsolatban még kérdésem, majd írok.
Gombnyomások között eltelt idő esetén a pontosság azért elég relatív fogalom. Mit értesz pontosság alatt?
Minél pontosabban kellene megmondani.
Pl 0.01sec
A két felfutó ág közti idő kellene.
És mennyi a max idő amire számítani lehet?
Az a baj a gomboknál, hogy azokat kézzel nyomogatod, így a pontosságot eleve buktad.
Én ezt egy 500us-ra beállított timerrel csinálnám. A 10ms pontosságba belefér némi szoftveres pergésmentesítés is. Minden megszakításban ránéz a gombra, ha mondjuk 10-szer ugyanaz volt, akkor elkönyveli, hogy a gomb stabilan abban az állapotban van, és ezután lehet valamit végrehajtani. Ez kb. 5ms pontosságot fog adni. Felfutó ágak közötti időt akár lehetne mérni a CCP modullal is (Capture mód), csak akkor kívülről kell pergésmentesíteni a gombot.
Az PIC esetén nem túl nagy "pontosság", néhánytíz mikroszekundum elérhető nem túl nagy macerával. Viszont a megszakítás és a számlálók pont erre valók.
Ha pl. a timer0-t ismert frekvenciával (órajel valahanyad része) számoltatod, akkor csak meg kell jegyezni az állását a gombok lenyomásakor és az értékeket kivonogatni egymásból. Persze ha a számláló csak 1 byteos, akkor a túlcsordulásakor interruptból, szoftveresen kell az esetlegesen szükséges többi számlálóbyteot megnövelni.
Noigen, erről a részéről (mi a "gomb", mi szolgáltatja a jelet) nem tudunk semmit, a pergésmentesítés nem maradhat el.
Ha valami ipari környezetben lévő jeladóknál kellen mondjuk két jeladó közti időt mérni, akkor lehet, hogy azt mondanám, inkább érdemes hardveres, mondjuk RS tárolós pergésmentesítést és morzekapcsolós érzékelőt használni, így a mérés sokkal pontosabb lehet. Kézi nyomkodásnál ennek nincs jelentősége, ott bőven megfelel pl. az Általad leírt szoftveres megoldás is.
Ehhez még annyit, hogy a CCP láb úgy nézem, a legtöbbi pic-nél Schmitt-Trigger bemeneti bufferrel rendelkezik, szóval egy RC taggal elég jó eséllyel megoldható a pergésmentesítés.
|
Bejelentkezés
Hirdetés |