Fórum témák
» Több friss téma |
Fórum » PIC programozás
Szia!
Azért nem mert pl.: a GOTO label_0001 utasítást követve egy szubrutinba jutunk, amit lezár pár utasítás után a return. és onnan nem megy a progi sehova, illetve tévútra fut.... ez a program rossz.
Szia! Köszönöm a gyors választ!
Mit kellene rajta módosítani hogy működő képes legyen?
Ez micsoda amugy? Ugy tunik mintha egy visszafejtett program lenne. Miert van DOC allomanyban?
Idézet: A PIC bármilyen értelmetelen is programmal működik, legfeljebb nem azt csinálja, mint amit a programozó, vagy felhasználó szeretne.„Mit kellene rajta módosítani hogy működőképes legyen?” A kérdés tehát úgy szól, hogy mit értesz működés alatt? Nem tudjuk hogy milyen áramkörben van a PIC, s azt sem, hogy mit vársz tőle.
Sziasztok!
Sikerült beszereznem ennek a kenyerének a fiatalabb változatának a pic tartalmát. Majdnem tökéletesen működik. Kisebb finomitgatásra lenne csak szükségem. Megvan a asm tartalma is átírva.Csak át kellene fordítani hex-be. Milyen progit javasoltok?Ti mit használtok? Üdv frigo
Gondolom MPLAB-ot kellene használnod.
Szia!
Azt használom. De azon belül nem nagyon találtam még meg.
MPASM Suite (nem keverendő össze az MPLAB ASM 30 Suite-tal, ami a 16 bites vezérlőkhöz való).
Célszerű létrehozni egy új projektet a Project Wizard-dal, s hozzá kell adni az .asm állományt.
szia!
Oké megvan! Köszönöm szépen!!! Tudom kicsit hülyének néztek! "Mert hát ne kezdjen senki erőművet csinálni először" Ez nem is arról szol,Csak hát többek között én is gyakorlati ember vagyok.Azaz ha valaki szóról szóra elmondja akkor sem fogom megérteni! De ha valakit látok hogyan csinálja és rájövök mivel mit lehet akkor menni fog! Üdv frigo
Kedves Fórumozók (Hozzáértők)
Én egy kezdő emberke vagyok, s segítséget szeretnék kérni. Szeretnék összerakni egy olyan panelt ami adott időközönként kapcsol 11 db 12 V-os ledet és egy sima 10ledes ledsort. Az adott időpillanathoz tartozó "mintázatot" már összeírtam. Mikor minek kéne világítani. Összesen 20 lépcsős a mire újból elölről kéne kezdődjön loopooljon. Egy másik topikban azt mondták egy chipbe bele lehetne ezt programozni. Ha igen ezt megtudja valaki oldani nekem? Illetve készítettem egy elvi rajzot az egészről. Remélem ez az egész kis helyen elférő mód megvalósítható. (A ledek és a ledsor nem a panelen kapna helyet, hozzájuk csak a feszültség lenne kivezetékelve!) Várom megtisztelő válaszaitokat! Feri
Sziasztok
Segítsetek rajtam, ha tudtok. Nekem egy pic-es monostabil multivibrátor kéne, ami 0-5 percig lehessen állítani egy potméterrel. Megoldottam 555-tel, de mivel ez egy hajón van az aksi merülése miatt változik az idő. Ezért szeretném Pic-el megoldani.Sajnos eggyáltalán nem értek a programozáshoz, ezért kérnék tőletek segítséget. Kapcsrajz és hex kéne. Tudnátok segíteni? Természetesen nem kérem ingyen. Tisztelettel Káró György bubuszoft@freemail.huetek
Van egy másik lehetőség is. Készítesz egy Step-Up konvertert ami mindig állandó kimenő feszültséget generál pl. MC34063 IC-vel.
És ha stab IC-t raknál az áramkör elé?
Nyilván azt tudod, hogy azért a chipecskének lesznek foglalt lábai (minimum Vdd + GND), illetve sokan megrohamoznak majd a multiplexelés megoldásaival és valószínűleg igazuk is van (programozó vagyok, nem elektrotechnikus, csak érdekel a téma hobbi szinten) ...
A PIC assemblybe még nagyon nem ástam bele magam, így konkrét forráskódot egyelőre nem tudok neked szülni, maximum elméleti anyagot. Ha olyan chipet választasz, amely viszonylag nagyobb mennyiségű memóriával rendelkezik, érdemes lehet a láncolt lista alkalmazása az egyes lépcsőfokokhoz, így a lista bármikor, bármely ponton módosítható, illetve bővíthető lesz, ezért cserébe viszont a metaadatoknak tárhelyet kell feláldoznod. Ha a ledek számát nem kívánod változtatni, akkor a bittérkép kiválóan megfelel a célodnak, mint a konkrét ledsor-állapotot tároló adat. Két szó (WORD) típusú adatkára lesz szükséged, egy a 12V -os, egy pedig a "sima" LED -ek állapotát hordja. Egy szó adat szakmai berkekben 2db bájtot jelent, ami 16bit, így 16-16 LED -et lesz lehetőséged maximálisan vezérelni ezzel az adattal.
Megpróbálom C-ben is, kissé talán érthetőbb, bár ilyemsihez egy jó ideje nem nyúltam
Az ilyetén láncolt lista komoly hátránya lehet, hogy állásonként 8 bájtot felzabál. Ezért cserébe meglehetősen komoly dinamizmus a jutalmad: A listát bármely pontján módosíthatod, beszúrhatsz, törölhetsz, módosíthatsz könyűszerrel, akár a közepén is, ellenben nagyobbacska listáknál a módosítás futási ideje jelentős is lehet.
A lista elméleti maximális hossza WORD pointer esetén 8192 lépés, ezt azonban erősen továbbkorlátozza a rendelkezésre álló szabad memória. 64 bájt szabaddal, illetve 16 bites pointerekkel számolvam elvileg 7 lépés tárolása megoldható. Ha nem szeretnél túl gyakran változtatni az állásokon, akkor egy kissé más megoldás javallott (egyszerű, 16 bites állás-szavak használata), ezesetben a 64 bájt elvi maximuma 16 lépcsőfok. E megoldásnál az egyes lépcsőfokok változtatása újraprogramozást kíván meg. Továbboptimalizálható, természetesen: 11 bit a nagy LED -ek számára, 10 bit a kicsiknek, így az elvi limit olyan 24 lépés körülire növekszik, viszont az adatokat lekezelő kód futása jelentősen lassulni fog. Hogy ne offoljam nagyon szét a témát, keress fel privátban és kidolgozunk egy neked megfelelő megoldást, ha gondolod.
Idézet: „E megoldásnál az egyes lépcsőfokok változtatása újraprogramozást kíván meg.” kívánHAT, bocsika
Lehet, hogy csak en nem ertettem meg a feladatot, de szerintem tulbonyolitod. Ez egy husz elemu vektortabla es kesz. Mas neven huszelemu egydimenzios tomb, ahol osszesen 32 bit info van egy elemben (Szakmai berkekben DWORD -Double word- a neve).
A lepes szamat megszorzod neggyel es az megadja a bajt kezdocimet byteban relativen a tablazat elejehez kepest. Igy 0-19 lepest kulonboztetunk meg.
Idézet: „Double word- a neve” Ha szőrszálhasogatunk, legyen duplaszó A túlbonyolítás beidegződés lehet, ugyanis az utóbbi időben csak olyasmi került ki a kezem közül, amelyben a legegyszerűebb megoldások nem voltak elfogadhatók, valamilyen univerzális, könnyen bővíthető, avagy bonyolított megoldás volt célravezető; kapásból ezek jutnak eszembe. Plusz ilyenkor azért még eléggé reggel van... A 32bit oké, ha van több, mint 64 bájt memó, bár erről pontosan még nemigen tudok, talán a napokban lesz időm utánaolvasni a chipnek komolyabban. Pl. fogalmam sincs, hogy a bírt prog részei hogyan lesznek elrendezve a memóriában; ha minden előre deklarált cucc a kódmembe kerül, akkó' nem szóltam. Ha az általános regisztereknek csúfolt területtel kell beérnünk, akkor viszont a 32bit helyett egy pakolt megoldásra lesz szükség, hogy elférjen a 20 lépés. Ha csak LED villogtatására kell az áramkör, valószínűleg nemigen lesz érzékelhető a parser rutinok miatti lassúság; 1..5 MIPS sebességből már csak ki lehet hozni annyit, hogy az emberi szemnek a számolgatás ne tűnjön fel A listát csak a fentebb megjelölt okok miatt hoztam fel, mint legelső ötlet; a kellően felxibilis megoldás nálam beidegződött követelmény, ezért első ez ötlött be. Ha megsértettem volna a szakmai önérzeted, elnézést kérek érte.
Idézet: „akkor viszont a 32bit helyett egy pakolt megoldásra lesz szükség, hogy elférjen a 20 lépés.” ...vagy olyan PIC -re, ahol van legalább 80 bájt hely (pfuj, de gyűlölöm, ha nem tudok KVzni )
Sziasztok!
12F675-nél használok TIMER0 és GPIO2/INT megszakítást, de valamiért összevesznek, és néha (a Proteus szerint) a programszámláló (PC) értéke 0x0800 akar lenni. Lehet az a baja, hogy amíg a timer0 által keltett megszakítás van folyamatban, akkor nem szereti ha a GPIO2/INT is generál megszakítást?
Nagy eséllyel az utolsó sorod a probléma. A megszakítások lekezelése elején tiltsd le az interrruptokat, majd a lekezelés végén pedig engedélyezd újra.
szerk.: Ja, hogy ez a PIC-es téma?! Hova nem keveredek én...
Vissza az AVR-es totyikba!
Sajnos már ezt is próbáltam, de ez se jó, valamiért megbolondul a PC. Egyébként köszi hogy írtál!
Esetleg ha feltenned a forrast, lehetne tobbet is segiteni. Az IT-k nem szoktak osszeveszni, mert a 16-os sorozatban egy szintu az IT, es amig az egyik lekezelese megy, addig a masikkal nem tud foglalkozni.
Valószínűleg, csak nem akarom hogy a számba rágják mi a hiba, szóval kicsit magam jöjjek rá...
De akkor csatolom... Mivel 18F-hez vagyok szokva ezért valószínűleg van benne egy két furcsaság, de úgy-ahogy, saját kútfőből van.
A megszakításban TILOS matatni az interrupt biteket!
Ha érdekel miért, olvass vissza, nemrég beszéltünk róla... (használd a keresőt)
Utána fogok olvasni. AVR esetében nem tudok ilyen tilalomról, ami persze nem jelenti azt, hogy nem létezik, ezért hoztam fel lehetőségként...
Mindenesetre én is utána kerestem, de nem találtam (hozzászólásaidban kerestem az "interrupt" és "megszak" szavakkal, januárig).
Vagy talán ez? A megszakítást jelző Flag bitet se a megszakításban töröljük? szer.: vilmosd: amit csatoltam asm fájlt, akkor az hibás (bár nem ez a baj, ha kiveszem, úgyanúgy bugos), mert a megszakításban letiltottam a megszakítást
Szia!
A megszakítás rutint tedd rendbe! (mentés-visszamentés) Javaslom, hogy a PIC adatlapja szerint írd le. A GIE-t Neked nem kell kapcsolgatnod a megszakításban, az autómatikusan megy.
A visszatöltést (elvileg csak a Workot meg a STATUS regisztert kell) a RETFIE előtt csináljam, tehát a megszakító rutinban?
|
Bejelentkezés
Hirdetés |