Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   103 / 1210
(#) trudnai válasza pajti2 hozzászólására (») Márc 28, 2011 /
 
Tenyleg nem bantasbol, de eleg zavaros amit irtal. Szoval egy sajat keretrendszert szeretnel, ahol tokenizalt utasitasokat hajtanal vegre? Magyaran egy interpretert szeretnel irni?
(#) trudnai válasza Auf hozzászólására (») Márc 28, 2011 /
 
0x40 -tol 0x70-ig toltesz fel? Miert SWAPF-et hasznalsz amugy es miert bitmintat a vegcim ellenorzeshez? Elegge nehezen atlathato igy az algoritmus.

Egy aprosag: Neha kiirod, hogy 'w' meg 'f', neha meg szamokat irsz oda. Legyen konzekvens, ugy ertem soha ne hasznalj szamot mert az sokkal nehezebben ertheto...
(#) pajti2 válasza trudnai hozzászólására (») Márc 29, 2011 /
 
Oké, egy átgondolatlan zagyvalékot írtam. Így utólag szívesebben törölném ki

Szóval van az a bootloader. Kellene arról valami jól megcsiszolt fejtágító. Kotorászok az MC oldalakon, de valahogy csak mellébeszélést találok.
(#) watt válasza pajti2 hozzászólására (») Márc 29, 2011 /
 
A bootloader egy olyan program, ami elfoglal a PIC memóriájából egy részt és lehetőséget ad arra, hogy soros vonalakon keresztül (USART, USB, Ethernet, stb. PIC kiépítéstől függően) módosítani lehessen a programot. Gyakorlatilag helyettesíthet egy égető áramkört, ha már benne van a PIC-ben. A program megírását, módosítását nem pótolja, viszont könnyen fel lehet tölteni a módosított programot, akár egy távoli céláramkörbe is, ha megvan a kapcsolat.
Egyébként én sem értem mit szeretnél, mert amit írsz, az kicsit operációs rendszerre emlékeztet. Egyébként az is létezik PIC-re, csak minek...
(#) icserny válasza pajti2 hozzászólására (») Márc 29, 2011 /
 
Idézet:
„Ennek a bootloader technikának még utána lesek, de előre gyanítom, ott is fixen rögzített kódról van szó, és nincsen kitalálva dinamikusan részletenkénti kód bővítésre - vagy igen?”
Nincs részletenkénti bővítés, de nem is fixen rögzített, hanem az egész alkalmazást lehet lecserélni vele.

Sokféle bootloader létezik, tehát előre célszerű rögzíteni, hogy milyen mikrovezérlőről és milyen kommunikációs lehetőségről van szó, honnan akarod letölteni a programot (soros vonal, USB, CAN, I2C stb.).
(#) pajti2 hozzászólása Márc 29, 2011 /
 
Ez az egész még csak elméleti szinten létezik, lehetőségeknek nézek utána jelenleg. Nem akartam bő lére ereszteni, de akkor most közkívánatra tessék.

Adva van egy ethernetes hálózati eszköz (van ip címe, elérhető, meg minden), amin működik rajta éppen az a program, ami. Fel van szerelve valahol egy nem túl hozzáférhető helyen. Tegyük fel, a programot módosítani kell. Ez egy karbantartás jellegű dolog. Normál esetben le kell szerelni a cuccost, hogy hozzáférhető legyen, újraprogramozni, felszerelni újra. Ezen gondoltam egyszerűsíteni.

Ha a bootloader segít abban, hogy az egészet ethernetről újraprogramozzam távolról hálózaton keresztül, akkor az egy jó pont neki. Legalább a sétát megspórólja nekem.

Kifinomultsági kérdés, hogy ezt a teljes "újraprogramozást" részemről működés közben akartam végrehajtani, a működési adatok és egyebek megzavarása nélkül. Ehhez olyan program modulok kellenek, amiket pluginok formájában tudok betölteni a memóriába, onnét végrehajtani / eltávolítani egyik pillanatról a másikra, sőt flash-be is lementeni őket, ha szükséges. És persze akkor a rendszer behúzás is igényelne egy kis kotorászást, mert ilyen programnál gyakorlatilag csak egy program mag van (afféle mini kernel), minden más modulárisan kell ráépüljön. A működés közbeni SW frissítésnek logikailag én nem ismerem másik módját.

Kezelhetőségi kérdés, hogy ha van is valami technika erre az újraprogramozásra kidolgozva, az egy windowsos program, amiben kézzel kell pötyörgészni, vagy egy parancssoros valami, amit scriptbe tehetek, és sok tucatjával is lehet automatizáltan végrehajtani. A grafikus programok tényleg igazán ízlésesek, meg minden, de azért az automatizálhatóság nekem lehet többet érne.

Hogy ennyire sült galambot kapjak a számba, azt nem is reméltem. Gondoltam utána lesek, fordítóprogram tud-e mondjuk 2-3 KByte fix szerkezetű kódblokkokat fordítani. Kellene a .hex file-ok szerkezeti leírása, hogy saját kézbe tudjam venni a lefordított állományokat. Megírom azokra én magam a letöltést, sőt pic oldalon a flashbe tárolást / visszatöltést is. Igazán örülök én a bootloadernek is, csak hát az ember mindig többet akar.

Szóval kb ennyi. Ha mindehhez van már valami support féle is, amit felhasználhatok, annak valóban örülnék. Van ilyen?
(#) Hp41C válasza pajti2 hozzászólására (») Márc 29, 2011 /
 
Szia!

Azt hiszem nem egészen érted a pic programozását. A pic egy szétválasztott program adat memóriával rendelkező kontroller (bár egyes típusokban a program memória elérhető adatterületként is.) A programozásakor a belső flash memóriáját kell beírni, átírni - sajnos egyes típusoknál elég korlátozott az újraírhatósága. Az adat memóriából közvetlenül nem tud programot futtatni.

A letöltött programrészleteket is a belső flash-ben kellene elhelyezni, a programrészlet csere egy teljes flash lap újraírását jelenti - megoldható.

Kivételt képeznek a külső memória illesztési lehetőséggel bíró típusok: pl. 18F96J60, 18F96J65, 18F97J60 - belső Ethernet illesztővel rendelkeznek. Itt lehetőség van külső flash ill. ram illesztésére is, amiből képesek programot is végrehajtani, a tartalmuk programból megváltoztatható.

A hex állomány Intel hex formátumú.
(#) Auf válasza trudnai hozzászólására (») Márc 29, 2011 /
 
Szia!
Az lcd modulban a cgram-ba a pic eepromjából a 0-tol tölteném fel a 16 karaktert. Amúgy mivel mással nézzem meg, hogy a végcimet elérte-e? Mármint, hogy megvolt az utolsó adat is.
A w és f az fel sem tűnt, hogy néha számokat írok helyettük.
Elméletem szerint, beolvas egy adatot majd beírja az lcd-be, majd ujra olvas az eepromból és így tovább.
Sajnos néha túbonyolítok dolgokat. Sok pic könyvet átolvastam, és már viszonylag sok tudást is összegyűjtöttem a témában, de ugyebár ezt át kell vinni a gyakorlatba is...
Köszi
(#) watt válasza pajti2 hozzászólására (») Márc 29, 2011 /
 
El tudom képzelni, hogy a módosító rutin maga a program része, annak átadsz adatot, ami a megadott helyre beírja azt. A módosítás alatt lévő területet eközben nem szabadna használni, csak a módosítás után lehetne visszaadni az engedélyt a terület használatára, azaz az új program kezdene futni ezután.

Ez a művelet igen gondos előkészületeket igényel a memória kiosztásban, hogy a változatlanul hagyott törzsprogram hivatkozásai ne sérüljenek. Esetleg egy ugrótáblával meg lehet oldani azt is, ha egy hivatkozás kezdőcíme megváltozna.

Mindez nagyon magas szintű programozási tudást igényel, és nagyon nagy munkát. Értelmét nem nagyon látom, hacsak az alkalmazás értéke nem hozható egy szintre a megoldás költségeivel.
(#) icserny válasza pajti2 hozzászólására (») Márc 29, 2011 /
 
Ezen az oldalon az "Ethernet bootloaders" szekcióban találsz olyat, amilyet szeretnél. Az ára hardvertől függően 50 - 200 USD.
Idézet:
„Kifinomultsági kérdés, hogy ezt a teljes "újraprogramozást" részemről működés közben akartam végrehajtani”
Ezt szerintem most felejtsd el!
(#) pajti2 hozzászólása Márc 29, 2011 /
 
Hex formatot köszönöm. Memóriából úgy rémlik az összes pic32 tud végrehajtani is. Vásárolni nem áll szándékomban. És igen, könnyen lehet, az ötlet a kukában végzi. Az ötletek némelyike már csak olyan.
(#) watt válasza icserny hozzászólására (») Márc 29, 2011 /
 
Ahhoz, hogy az ő elképzelése szerint működjön a dolog, nem elég egy bootloader, neki kell megírni egy olyan rutint, ami kezeli a program módosítási feladatokat a kapott adatok alapján, menedzselve a közben folyó program korlátozásait, mentéseit. Az igaz, hogy kiindulási alapnak jó a bootloader forrása!
(#) icserny válasza pajti2 hozzászólására (») Márc 29, 2011 /
 
A PIC32 felépítése lehetővé teszi, hogy RAM-ból fusson a program és a programmemóríát úgy olvassuk, mintha adatmemória volna, de a Harvard felépítésből fakadó előnyök ilyenkor elvesznek. Bővebben: Link
(#) trudnai válasza Auf hozzászólására (») Márc 29, 2011 /
 
Idézet:
„Az lcd modulban a cgram-ba a pic eepromjából a 0-tol tölteném fel a 16 karaktert. Amúgy mivel mással nézzem meg, hogy a végcimet elérte-e? Mármint, hogy megvolt az utolsó adat is.”


  1. incf    EE_cime,1
  2.         swapf   EE_cime,w
  3.         xorlw   b'10000111'


Ugye EE-cime-be ha 16 kerul, az 0x10, tehat B'0001 0000'. Namost ha megnezed a kododat, akkor elobb swapf-el a W-be B'0000 0001' kerul, majd ezt hasonlitod ossze B'10000111'-el... Magyaran 0x78 -nal fog ez talalkozni, mivel SWAPF elott az lenne B'0111 1000'.

Csupan ket sort kellene modositanod, hogy atlathato legyen (nagybetus utasitasok...):

  1. movlw   0x40            ; cg ram első cime
  2.         call    LCD_Cmd
  3. ;
  4.         movlw   0
  5.         movwf   EE_cime         ; kezdőcím beállítása
  6.  
  7. ;olvas  movf    EE_cime,w
  8.         call    RD_EE
  9.         call    LCD_Txt
  10.         incf    EE_cime,1
  11.         MOVF    EE_cime,w       ; tehat nem SWAPF-el, mert az
  12.                                 ; az also es felso nible-ket felcsereli
  13.         XORLW   D'16'           ; es most mar osszahasonlithatjuk 16-al...
  14.         btfss   STATUS,Z
  15.         goto    olvas
(#) icserny válasza icserny hozzászólására (») Márc 29, 2011 /
 
Bocs, ezt a linket szerettem volna megadni az előző hozzászólásnál!
(#) Auf válasza trudnai hozzászólására (») Márc 29, 2011 /
 
Szia!
Gondoltam swapf -el teszem be a w-be. Épp ezért "swap"-oltam át a xorlw-s adatot (10000111).
Ezekszerint tényleg belebonyolodtam.

Köszönöm szépen a javallatokat.
(#) pajti2 válasza icserny hozzászólására (») Márc 29, 2011 /
 
Köszönöm a linket, temérdek sok anyag van ott, amivel még nem is találkoztam :eek2:
(#) pajti2 hozzászólása Márc 29, 2011 /
 
Kellene nekem egy handy amatőr cuccos pic32 kísérletezéshez, és egyszerűen csak nem találok.

Valami "csupasz" panel kellene csak a legszükségesebb dolgokkal. Pld 5V-os táp csatlakozó (jack, 2.1mm-es), 3.3V-os stabkocka, pár szűrőkondi, ICSP tüskesor, a felforrasztott TQFP tok / üres QFN socket 64 pin 9x9mm-es, és pár szigetecske. Esetleg még egy max232-es a DB9-es csatival (én még ezt tenném fel). Mint anno a DV164121 panelja volt a pickit 2 debug express kit-ben.

Amiket találok, már programozóval egybeépített / előre programozott integrált boardok, amik biztos sokmindenre jók, csak éppen olyasmihez nem, amit nulláról magam akarok végig csiszolni.

Valaki esetleg találkozott ilyesmivel? Esetleg saját maga gyártott ilyesmit? Vagy hasonlót?
(#) icserny válasza pajti2 hozzászólására (») Márc 29, 2011 /
 
Néhány a kínálatból:
- CUI32 Bővebben: Link
- Olimex PIC32MX340F512 kártya (ez a monosx.hu címen is kapható).
- PIC32 64pin on a DIP
- USB 32-Bit Whacker PIC32MX795 kártya
- PIC32 Development Demo Board (Ezt azért tettem hátra, mert utálatos módon nincsenek kivezetve a PIC lábai!)
(#) trudnai válasza Auf hozzászólására (») Márc 29, 2011 /
 
A SWAPF akkor lenne celszeru, ha a STATUS regiszterben a Z bitet nem szeretnenk ha elrontana, de itt most ez lenyegtelen hisz az XORLW amugy is beallitja ezt nekunk. Akkor pedig mar ne bonyolitsuk a dolgokat

SWAPF-nek pl fontos szerepe van a megszakitas kezelesben a kontextus vissza allitasaban...
(#) pajti2 hozzászólása Márc 29, 2011 /
 
icserny:
Köszönöm, a PIC32MX340F512 kártya pont jó lesz.


Más.

C30 Lite paraméterezés. Rá kellene venni a fordítót, hogy dobjon lista állományt. Elvileg a preprocesszorja asm kódot csinál a C programból. Azt listába dobatni se lenne vele utolsó. De legalább egy .map-ot, ha mást nem. Nézem az MC leírást róla (van users guide pdf a compilerről), végig szedtem a listát a kapcsolókról, és nem találok ilyen beállítási lehetőséget. Tényleg nem tud ilyet? Vagy én szúrok el valamit?
(#) t_oszi válasza pajti2 hozzászólására (») Márc 29, 2011 /
 
Vagy, ha kísérletezni akarsz, bread board próbapanelt kedvező áron rendelhetsz (72/326529). Nekem is ma hozta a postás, pénteken rendeltem.
(#) pajti2 válasza t_oszi hozzászólására (») Márc 30, 2011 /
 
Van egy totál méretes dugaszpanelom, de az pdip-es pic-ekhez van. QFN / TQFP tokozáshoz már smd nyák kell, és nem lehet megúszni a forrasztást sem.
(#) icserny válasza pajti2 hozzászólására (») Márc 30, 2011 /
 
Idézet:
„Elvileg a preprocesszorja asm kódot csinál a C programból.”
GNU fordítóknál -S opcióval leállítja a fordítást az assembly meghívása előtt. Az .s állományok az assembly forrásfájlok. Ha pedig az assembler kimenetéről akarsz listát, akkor valószínűleg az assembler opcióit kell megnézni.
(#) icserny válasza icserny hozzászólására (») Márc 30, 2011 /
 
A Microchip fórumán azt írják, hogy egy sikeres fordítás után parancssorból használható az alábbi megoldás:
  1. pic30-objdump -d foo.cof > foo.lst
(#) Hp41C válasza pajti2 hozzászólására (») Márc 30, 2011 /
 
Mielőtt kitárgyaljuk a C30 paraméterezlését, a PIC32F -ekhez nem a C32 kell? A C30 a PIC24F illetve a dsPIC30F -ekhez való.
(#) watt válasza Hp41C hozzászólására (») Márc 30, 2011 /
 
Na ja... Én már rég nem tudom követni mi is itt a cél, főleg egy kezdő topicban mindez...
(#) pajti2 válasza Hp41C hozzászólására (») Márc 30, 2011 /
 
Az észrevétel különben jogos. De most még csak a C -> gépikód gyártási lépésnél tartok.

Előszedtem egy c30-as projectet, amit az unalomig szanszét gyűrtem már. Ezt a lépést itt fogom végig tesztelni. Itt jóval kevesebb a hibalehetőség, mint egy új környezetben.

Egyébként c30 vagy c32, amennyire fel tudtam mérni, egyik sem tud stand-alone modult fordítani relokálási táblázattal. Ez valahogy nem gyakorlat még pic32-nél sem. Pedig bizony lehetne.

watt:
A fordító problémáival vacakolni egyébként tipikus kezdő probléma. Egyáltalán nem baj, ha mindenki, aki erre jár, fejébe vési, hogy a grafikus ablakok mögött hogyan is zajlik egy fordítás. Tuti, hogy arról mindenki hajlamos megfeledkezni.
(#) t_oszi hozzászólása Márc 30, 2011 /
 
A PicKit2-höz adtak egy demopanelt. A benne lévő program a CD-n is mellékelve van, .asm fájlban.
A 887-esre az MPLAB azt írja kiválasztás után, hogy nincs hozzá compiler. Gondoltam, én ezt kipróbálom. A gyári .asm-et betöltöttem az MPLAB-ba QuickBild-del lefordítottam .hex-be. A fájl kívülről teljesen azonos a gyárival, de fájlkezelővel összehasonlítottam és talált köztük két bit eltérést. Egyelőre még nem írtam át a 887-be, de kíváncsi vagyok, okoz-e problémát. Továbbiakra most nincs időm, de majd felteszem mindkét .hex fájlt, hogy lássátok az eltérést.
(#) icserny válasza t_oszi hozzászólására (») Márc 30, 2011 /
 
Idézet:
„A 887-esre az MPLAB azt írja kiválasztás után, hogy nincs hozzá compiler.”
Az máshoz sincs, külön kell telepíteni. De ha nem C nyelven programozol, akkor nem is kell. Assembler viszont települ az MPLAB-hoz (minden Microchip mikrovezérlőhöz).

Ha az eltérés a HEX állományok végén van, akkor nagy valószínűséggel a konfigurációs bitek beállításában van különbség. Hogy ez számít-e, az attól függ, hogy melyik bitről van szó...

Szerintem érdemes egy neked megfelelő konfigurációs beállítást kiizzadni (itt is kérhetsz hozzá segítséget, tanácsot), s a jövőben minden hasonló program elejére automatikusan betenni.
Következő: »»   103 / 1210
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