Fórum témák

» Több friss téma
Fórum » PIC programozás
 
Témaindító: G-Lex, idő: Okt 24, 2005
Lapozás: OK   36 / 66
(#) foxi63 válasza frigo833 hozzászólására (») Jan 16, 2011 /
 
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.
(#) frigo833 válasza foxi63 hozzászólására (») Jan 16, 2011 /
 
Szia! Köszönöm a gyors választ!
Mit kellene rajta módosítani hogy működő képes legyen?
(#) trudnai válasza frigo833 hozzászólására (») Jan 17, 2011 /
 
Ez micsoda amugy? Ugy tunik mintha egy visszafejtett program lenne. Miert van DOC allomanyban?
(#) icserny válasza frigo833 hozzászólására (») Jan 23, 2011 /
 
Idézet:
„Mit kellene rajta módosítani hogy működőképes legyen?”
A PIC bármilyen értelmetelen is programmal működik, legfeljebb nem azt csinálja, mint amit a programozó, vagy felhasználó szeretne.

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.
(#) frigo833 hozzászólása Jan 23, 2011 /
 
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
(#) kukac_24 válasza frigo833 hozzászólására (») Jan 23, 2011 /
 
Gondolom MPLAB-ot kellene használnod.
(#) frigo833 válasza kukac_24 hozzászólására (») Jan 23, 2011 /
 
Szia!
Azt használom.
De azon belül nem nagyon találtam még meg.
(#) icserny válasza frigo833 hozzászólására (») Jan 23, 2011 /
 
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.
(#) frigo833 válasza icserny hozzászólására (») Jan 23, 2011 /
 
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
(#) Inter-face hozzászólása Feb 13, 2011 1 /
 
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
(#) bubuszoft hozzászólása Ápr 22, 2011 /
 
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
(#) bbatka válasza bubuszoft hozzászólására (») Ápr 22, 2011 /
 
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.
(#) zenetom válasza bubuszoft hozzászólására (») Ápr 22, 2011 / 1
 
És ha stab IC-t raknál az áramkör elé?
(#) Powerslave válasza Inter-face hozzászólására (») Máj 4, 2011 /
 
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.

  1. ; Itt most némi 8086-tal borzolom a kedélyeket (TASM)
  2.  
  3.   lepcsofok struc
  4.      nagyLED dw 0   ; A nagy LEDek 16 bites WORDje
  5.      kisLED     dw 0  ; A kis LEDek 16 bits WORDje
  6.      elozo       dw 0  ; WORD pointer az előző lépésre
  7.      kovetk     dw 0  ; WORD pointer a következő lépésre
  8.   lepcsofok ends
  9.  
  10. ; A pointerek a struktúrában közvetlen vagy közvetett
  11. ; módon mutatnak a következő illetve az előző lépés
  12. ; ugyanilyen bejegyzésének memóriabeli helyére
  13.  
  14. ; Az aktuális állapot stuktúrájából a nagyLED értékét
  15. ; kirakod a nagy LED -ek portjaira, a kisLED értékét
  16. ; pedig a kicsikére
  17.  
  18. ; Átrendezési-, módosítási-, hozzáadási-, törlési kódot, ill. algoritmust igény szerint szívesen megszülök


Megpróbálom C-ben is, kissé talán érthetőbb, bár ilyemsihez egy jó ideje nem nyúltam

  1. *lepcsofok legelso; // A lista gyökere
  2.  *lepcsofok aktualis; // Az éppen aktuális állás pointere
  3.  
  4.  struct lepcsofok {
  5.    unsigned int nagyLED
  6.    unsigned int kisLED
  7.    *lepcsofok elozo
  8.    *lepcsofok kovetkezo
  9.  }
  10.  
  11.  function elore() {
  12.    aktualis=aktualis*.kovetkezo;
  13.    outportw(nagyLedPort,aktualis*.nagyLED);
  14.    outportw(kisLedPort,aktualis*.kisLED);
  15.  }
  16.  
  17.  function hatra() {
  18.    aktualis=aktualis*.elozo;
  19.    outportw(nagyLedPort,aktualis*.nagyLED);
  20.    outportw(kisLedPort,aktualis*.kisLED);
  21.  }
  22.  
  23.  // A beszúrással, ilyesmivel most nem strapálnám magam, de valamivel kidolgozottabb megoldást szívesen megosztok privátban
  24.  // NEM tudom garantálni, hogy ugyanez a C kód
  25.  // PIC -kel is működjön, mivel annak programozásával
  26.  // egyelőre nincs tapasztalatom
  27.  // Hangsúlyoznám: ez itt mind csak elmélet
(#) Powerslave válasza Powerslave hozzászólására (») Máj 4, 2011 /
 
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.
(#) Powerslave válasza Powerslave hozzászólására (») Máj 4, 2011 /
 
Idézet:
„E megoldásnál az egyes lépcsőfokok változtatása újraprogramozást kíván meg.”


kívánHAT, bocsika
(#) bbalazs_ válasza Powerslave hozzászólására (») Máj 4, 2011 /
 
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.
(#) Powerslave válasza bbalazs_ hozzászólására (») Máj 5, 2011 /
 
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.
(#) Powerslave válasza Powerslave hozzászólására (») Máj 5, 2011 /
 
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 )
(#) zenetom hozzászólása Máj 5, 2011 /
 
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?
(#) zenetom válasza zenetom hozzászólására (») Máj 5, 2011 /
 
Jaj, és persze assemblyben.
(#) zolee1209 válasza zenetom hozzászólására (») Máj 5, 2011 /
 
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...
(#) zenetom válasza zolee1209 hozzászólására (») Máj 5, 2011 /
 
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!
(#) vilmosd válasza zenetom hozzászólására (») Máj 5, 2011 /
 
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.
(#) zenetom válasza vilmosd hozzászólására (») Máj 5, 2011 /
 
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.
(#) watt válasza zolee1209 hozzászólására (») Máj 5, 2011 /
 
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)
(#) zolee1209 válasza watt hozzászólására (») Máj 5, 2011 /
 
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...
(#) zenetom válasza watt hozzászólására (») Máj 5, 2011 /
 
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
(#) nemgyuri válasza zenetom hozzászólására (») Máj 5, 2011 /
 
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.
(#) zenetom válasza nemgyuri hozzászólására (») Máj 5, 2011 /
 
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?
Következő: »»   36 / 66
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem