Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   650 / 1319
(#) frecsko válasza gydanee hozzászólására (») Jan 24, 2010 /
 
Lehet az a baj, hogy túl sokat akarok egyszerre.
(#) gydanee válasza frecsko hozzászólására (») Jan 24, 2010 /
 
Először ez volt a gond, de már egy ideje rájöttem hogy az alapoknál "lemaradtam" ezért a kezdő részeket igyekszem értelmezni. Bár nem is birok most annyit foglalkozni vele, mint kellene. (érettségi, felvételi, suli stb..) Majd a nyári szünetben.
(#) Attila86 hozzászólása Jan 24, 2010 /
 
Az MPLAB-ban létrehoztam egy új projektet, de a programkód minden betűje fekete és a "Text mode"-nál nem is tudom átállítani semmire. Miért?
(#) sucuka válasza Attila86 hozzászólására (») Jan 24, 2010 / 1
 
Ha minden igaz, és jól olvstam, akkor színes lesz, ha elmented a fájlt .asm kiterjesztéssel.
Persze lehet, hogy tévedek. Azért egy próbát megér.
(#) trudnai válasza frecsko hozzászólására (») Jan 24, 2010 /
 
Es mennyit szansz erre?
(#) Attila86 válasza sucuka hozzászólására (») Jan 24, 2010 /
 
Köszönöm, sikerült!
(#) sucuka válasza Attila86 hozzászólására (») Jan 24, 2010 /
 
Ok.. Közben tanulgatok én is, bár még ott nem tartok ahol te
(#) Attila86 válasza sucuka hozzászólására (») Jan 24, 2010 /
 
Még én sem tartok túl messze...
(#) Attila86 hozzászólása Jan 24, 2010 /
 
Egyszerűen nem értem ezt a megszakítás dolgot hogy hogyan működik. Illetve a megszakítást még nagyjából értem csak a lapváltást nem hogy miért kell hozzá...

Tudna valaki küldeni nekem egy egyszerű mintaprogramot asm-ben, amiben van megszakítás-kezelés valamelyik TIMER-ra?
(#) trudnai válasza Attila86 hozzászólására (») Jan 24, 2010 /
 
A lapozas azert kell, mert a PIC kulonbozo lapokon tarolja a dolgait. Mint egy konyv: Egy lapon korlatozott a sorok, bekezdesek szama, ezert tobb lapja van egy konyvnek. Ha egy bizonyos dologra kivancsi vagy, elobb oda kell lapozni, hogy el tudd olvasni.

Megszakitasnal kb ugy lehet folytatni ezt az analogiat, hogy olvasod a konyvet, kozben jon valaki aki mondja: "Figyi, bocsika, meg tudnad nekem nezni milyen autoban ul a foszereplo?". Te meg megjegyzed hol tartottal (egy konyvjelzot beleteszel), majd atlapozol arra az oldalra ahol arrol van szo, hogy ki milyen autoban ul, majd mikor vegeztel a konyvjelzo alapjan vissza megy arra az oldalra, ahol eppen tartottal.

Mivel nem tudod, hogy epp mikor fognak felbe szakitani, ezert kell a konyvjelzo -- mindig vissza talalsz oda, ahonnan megszakitottak. Ez ugye a kontextus mentesnek felel meg a PIC-eknel...
(#) watt válasza trudnai hozzászólására (») Jan 25, 2010 /
 
Maga a megszakítás elmenti a visszatérési lapot is, csak a megszakításból hívott rutinok esetén kell a lapot beállítani, de ezt is csak 18F-től kisebb PIC-ek esetében. Rosszul tudom?
(#) watt válasza Attila86 hozzászólására (») Jan 25, 2010 /
 
Milyen PIC-et programozol most?
(#) Hp41C válasza watt hozzászólására (») Jan 25, 2010 /
 
Sziasztok!

Vannak olyan regiszterek, amiket a nagyobb pic-ek elmentenek (WREG, STATUS, BSR), de itt többről van szó.
Minden olyan regisztert, amit a megszakítási rutin megváltoztat (kényszerűségből - azaz nem a megváltoztatása a cél) menteni és visszaállítani kell. Ezeket már nem menti a hardver. Az előbbi analógiájára: legyen többkötetes a könyv, amit olvasunk, az autó egy másik kötetben szerepel. Nem elég a lapszámot (PC), hanem a kötetazonosítót (PCLATU, PCLATH) is menteni kell. Továbbmentve ilyen regiszterek még az FSR, FRS0..3H és FSR0..3L - ha a megszakítáasi rutinban indirekt címzés is van, ha még netalán szorzunk is, akkor a PRODH, PRODL stb...
Nagyobb PIC-ek esetén többszintű lehet a megszakítás: a magasabb szintű félbeszakíthatja az alacsonyabb kiszolgálását - általában csak egyszeri HW mentésre van lehetőség. Analógia: Miközben az auto típusát keressük, vásvalaki egy másik szereplő ruhája iránt érdeklődik...

Sziasztok
(#) trudnai válasza watt hozzászólására (») Jan 25, 2010 /
 
Hat ezert nem szeretem a kifejezeseket magyaritani Mivel a "lapozas" ugye a "page", de azt hittem, hogy a ram lapokra, azaz a "bank"-okra vonatkozik a kerdes

Amugy igen, a stacken a teljes cim eltarolodik igy a return jol ter vissza, de ettol fuggetlenul azt hiszem a PCLH nem fog valtozni. Tehat ha az ISR azt modositja akkor azt is bel ekell venni a kontextus mentesbe. De nem tudom, mar kezdek rozsdasodni - remelem egy honapon belul megint aktiv leszek
(#) Attila86 válasza watt hozzászólására (») Jan 25, 2010 /
 
(#) watt válasza Hp41C hozzászólására (») Jan 25, 2010 /
 
Azért Attila kérdése nem pont ez volt, és én sem azt állítottam, hogy ha ilyen regisztereket használunk a megszakításban, akkor azokat nem kell menteni(sőt bármely RAM rekeszünket is el kell, ha megszakításban hazsnálnánk, pl. RAM helyszűke miatt), csak azt, hogy a megszakítás alapból elmenti az egész visszatérési címét és nem rontja el az említett regiszetereket. Tehát ha a megszakításban nem piszkáljuk ezeket, akkor nem szükséges menteni. 18F-eknél nem szükséges ezeket a regisztereket piszkálni, kivéve ha indirekt címzést, vagy ha retlw-s tömbkezelést használunk, amit ugyen nem túl elegáns, mikor erre külön utasítások vannak!
Naszóval ennyit akartam ezzel kapcsolatban mondani!
(#) watt válasza Attila86 hozzászólására (») Jan 25, 2010 /
 
Miért akarsz lapozni(lapozás a program flash memóriát érinti, a bankváltás a RAM-ot. Melyikről van most szó?) a megszakítás alatt, mit szeretnél?
(#) watt válasza trudnai hozzászólására (») Jan 25, 2010 /
 
Jól (nem)értetted a kérdést, és én is elbizonytalanodtam a lap és bank ügyben.
(#) Attila86 válasza watt hozzászólására (») Jan 25, 2010 /
 
Volt korábban ez a problémám: Bővebben: Hozzászólás
Erre azóta kaptam válaszokat, de bármennyiszer is olvasom át őket, nem értem igazán a dolgot. A probléma gyökere az, hogy a megszakításban hívott tábla nem működik rendesen mert teljesen más helyre ugrik vissza és nem értem hogy hogyan lehetne ezt kiküszöbölni. Ezért szerettem volna kérni egy biztosan működő, megszakítást kezelő rutint tartalmazó programot hogy abból lelessem hogy mit ronthattam el.
(#) watt válasza Attila86 hozzászólására (») Jan 25, 2010 /
 
Az oldalamon bemutatom az adattábla kezelését 18F-ek esetében. Ha ezt használod, akkor nem kell mentened, mert a tábla pointerek tartalmazzák a megfelelő címet, és így nem sérülnek meg a lapmutatók értékei. Sokkal egyszerűbb és gyorsabb az adatok kezelése.
(#) roland0327 hozzászólása Jan 25, 2010 /
 
Sziasztok!

Az lenne a kérdésem, hogy elég-e ha az olcsóbbikat veszem meg kezdésnek? Vagy nem.Bővebben: Link
(#) watt válasza roland0327 hozzászólására (») Jan 25, 2010 /
 
Egyrészt a hivatalos forgalmazónál ez a PIC 330Ft nettó(ha már itt is így van megadva), másrészt ebben nincs A/D. Kezdéshez én 18F-et ajánlanék(Keress rá az okokra, kismilliószor leírtuk az indokainkat. Az oldalamon is olvashatsz erről, ott típusokat is említek.).
(#) Hp41C válasza Attila86 hozzászólására (») Jan 25, 2010 / 1
 
Szia!

Feltűnt nekem, hogy 18F -es pic-et programozol, és a 16F sorozat dokumentációját olvasod....

Mintha ezeket a kérdéseket egyszer már megválaszoltam Neked:

- A 18F-en egy goto utasítás 4 bájtot foglal, a címzés byte-os: azaz a memóriában egy goto mondjuk a 0x100 címre kerül, akkor a következő utasítás a 0x104-re fog kerülni.
TABLA2:
- A működés látszatát kelti, de valójában nem oda ugrik, ahova szeretnéd (az első két goto még jó helyre ugrik.) A goto kódolása olyan, hogy a második szóra való ugrás egy nop végrehajtásával egyenértékű (2. goto ezért működik). A harmadik a másodiknál megadott címre ugrik.....
- Javasoltam, hogy a goto helyett használj bra utasítást, ami csak két byte - működik - kipróbáltam a szimulátoron az előző verziódat.
- Nincs feltöltve a PCLATH, PCLATU: ajánlottam, hogy az addwf PCL,f előtt olvasd ki a PCL-t egy változóba - ez feltölti a PCLATHU és PCLATH regisztereket. Szerencséd volt itt, a címkék mind az első 256 program bájton voltak (az előző verziót próbáltam...).

TABLA1:
- Nincs feltöltve a PCLATH, PCLATU: ajánlottam, hogy az addwf PCL,f előtt olvasd ki a PCL-t egy változóba - ez feltölti a PCLATHU és PCLATH regisztereket. Itt már nem volt szerencséd (az előző verziót próbáltam...).

A megszakítási cím a 16F dokumentációjából származik, nem a 18F -éből.

Még azt is kipróbáltam, hogy a megszakítás tényleg a 0x008 ill. 0x018 címekre ugrik. Most nem emlékszem pontosan melyik szintű megszakítást használtad, de a 0x08-ra tettem egy ugrást a 0x18-ra. A megszakítási rutint áttettem a 0x18-ra. Ekkor mindegy melyiket állítod be, mindkettőnél a megszakítási rutin fog lefutni. A megszakítási rutinban nem kell állítgatni a GIE -t.

Még egyszer ajánlom, hogy állítsd be a MPlab szimulátorát és próbáld ki Te is a programot lépésenként futtatni:

Töltsd be a projectet. Debugger / Select tool / MPLAB SIM. A beállítás után újra le kell fordítani a programot. F6 - Reset , F7 egy lépés - a szubrutin hívásba belép, F8 - egy lépés - a szubrutin hívásba nem lép be. A sor elejére (a sötétebb részbe) kétszer kattintva lehelyezhetsz töréspontot - a program futása megszakad, ha a töréspontra ráfut. Kb. egy óra múlva működni fog...

Szia
(#) roland0327 válasza watt hozzászólására (») Jan 25, 2010 /
 
Visszaolvasgattam és láttam, hogy Attila86-nak ajánlottad a 18f2550-et, szerintem az nekem is bőven elég árban is jó ! Mit rendeljek még kezdéshez. Eddig ledek nyomógombok, 7szegmenses kijelző, potik, Rs232. Mi kellmég?
(#) watt válasza roland0327 hozzászólására (») Jan 25, 2010 /
 
Ezt így nem lehet leírni. Most is az oldalamat ajánlom, ahol egy fajta próbapanelt is találsz. Aztán azt kötsz rá, amit akarsz. Persze érteni kell az elektronikához, ez nyílvánvaló, és azt se árt, ha van valami elképzelésed mit akarsz megépíteni!
(#) icserny válasza roland0327 hozzászólására (») Jan 25, 2010 /
 
Idézet:
„Mit rendeljek még kezdéshez?”

Esetleg USB-B aljzatot és 20 MHz-es kvarcot (legalábbis 4 MHz többszöröse legyen: 4, 8, 12, 16 vagy 20 MHz)

Esetleg I2C vagy SPI perifériák (hőmérő, portbővítő, EEPROM, digitális potméter, stb. - ami érdekel)

Én a PIC18F2550 helyett annak nagyobbik testvéréve készítettem kísérleti áramkört.

Egy másik érdekes megközelítás a PIC18F2550-re épülő Pinguino project.
Mellesleg a Processing fejlesztői környezetét kipróbáltam, de nem ajánlom. A fapadosabbnak tűnő MPLAB hibadiagnosztikája jobb és itt több segítséget kapsz hozzá.
(#) roland0327 válasza icserny hozzászólására (») Jan 25, 2010 /
 
Azt elfelejtettem mondani hogy ICD2-es égetőm lesz. Rendelek 4Mhz és 20Mhz-es rezonátort és kvarcot is.
(#) Attila86 válasza Hp41C hozzászólására (») Jan 25, 2010 /
 
Szia!

Idézet:
„Mintha ezeket a kérdéseket egyszer már megválaszoltam Neked:”

Igen, de akkor sem értettem teljesen. Na megpróbálom megint megemészteni...
(#) watt válasza Attila86 hozzászólására (») Jan 25, 2010 /
 
Kérdezz vissza, melyik választ nem érted! Tisztázni kell mind, különben elakadsz! Tudod már használni a szimulátort? Talán az a legfontosabb lépés, hogy lásd mit csinálsz!
(#) Attila86 válasza watt hozzászólására (») Jan 25, 2010 /
 
A szimulátor persze, tudom használni! A 16 bites bináris számot 5db decimális számmá konvertáló szubrutinom megírásába bele is őrültem volna ha nincs a szimulátor.

Egyébként miért nem tudom most lefordítani a programomat?
  1. ----------------------------------------------------------------------
  2. Debug build of project `D:\Elektronika\Projektek\Laminalo\Laminalo.mcp' started.
  3. Preprocessor symbol `__DEBUG' is defined.
  4. Mon Jan 25 13:27:51 2010
  5. ----------------------------------------------------------------------
  6. Clean: Deleting intermediary and output files.
  7. Clean: Deleted file "D:\Elektronika\Projektek\Laminalo\Laminalo.mcs".
  8. Clean: Done.
  9. Build aborted.  The project contains no source files.
  10. ----------------------------------------------------------------------
  11. Debug build of project `D:\Elektronika\Projektek\Laminalo\Laminalo.mcp' failed.
  12. Preprocessor symbol `__DEBUG' is defined.
  13. Mon Jan 25 13:27:51 2010
  14. ----------------------------------------------------------------------
  15. BUILD FAILED
Következő: »»   650 / 1319
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