Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1192 / 1319
(#) Hp41C válasza cross51 hozzászólására (») Jún 9, 2015 /
 
Az errata szerint a 2. verzióig a flash írás nem működött minden órajelbeállítás mellett...
(#) cross51 válasza Hp41C hozzászólására (») Jún 9, 2015 /
 
Köszönöm!

Nem láttam az eratában a fától az erdőt én az oszcillátoról szóló részt néztem és nem vettem észre a flash-ről szóló részt.
(#) Braf válasza Attila86 hozzászólására (») Jún 9, 2015 /
 
Ezek a dolgok, amiket leírtam abszolúte nem PIC/nyelv függőek. Nézd át, hogy hogyan keletkezik a forráskódból futtatható bináris (hogyan működik egy fordítóprogram), és akkor érteni fogod amit leírtam.

Linker:
XC16 dokumentációjában nincs leírva szájbarágós módon (nem is lesz soha). Viszont le van írva, hogy milyen argumentumokkal kell meghívni, mit vár el a linker mint bemenet stb. (http://ww1.microchip.com/downloads/en/DeviceDoc/50002071E.pdf 249. oldal, másik doksira hivatkozik).

Makefile:
Az MplabX sima make környezetet használ, ehhez van végtelen sok példa és dokumentáció.
A make környezet bemenete egy leírás, hogy milyen függőségei vannak az adott fájloknak, ezeket melyik programoknak kell átadni stb. Gyakorlatilag a makefile írja le azt, hogy milyen lépéseket kell végrehajtani ahhoz, hogy bináris keletkezzen de ne programként tekints rá.
(#) Attila86 válasza Braf hozzászólására (») Jún 9, 2015 /
 
Kutakodtam és találtam egy pdf-et:
XC16 ASSEMBLER, LINKER AND UTILITIES
Ha jól gondolom, akkor a 4.4-es fejezet az ami ide vág, mely a konstans inicializáló direktívákról szól. És szerintem a .pword direktíva az ami nekem kell:
Idézet:
„Assembles one or more 3-byte numbers into consecutive addresses in the current
section.”

Már ha jól értelmezem a dolgokat persze.

Most jut eszembe hogy 8 bites PIC-kel, MPLAB 8.92-ben és assembly-ben már csináltam ilyet, mármint hogy adatokat pakoltam a programmemóriába. Ott így nézett ki:
  1. CODE 0xAFC8
  2. db      0x0A, 0xB3, 0xC8, 0x40, 0xFC, 0xB4

A db-t most akkor kiváltja a .pword, utána pedig gondolom ugyan úgy jöhetnek az adatok ömlesztve, csak nem bájtonként hanem hármasával. Viszont hogyan mondom meg a fordítónak hogy honnan, melyik címtől pakolja be az adatokat? (Ami a CODE 0xAFC8 volt.)

Ha ez megvan már csak egy programot kell íratnom az egyik barátommal, ami a wav fájlokból csinál egy ".pword 0x123456, 0x789ABC, 0xDEF012, 0x345678 ..." formátumú szövegfájlt...
(#) Zsora válasza Attila86 hozzászólására (») Jún 9, 2015 /
 
Jaj már! De hisz' korábban leírtam itt.
A .section direktíva adja meg hogy a következő utasítások vagy adatok melyik területre és címre legyenek fordítva. Pl.:
  1. .section .adatok1,code,address(0x8f00)

A terület azonosítóneve: .adatok1, típusa/helye: code (vagyis a flash), kezdőcíme: 0x8f00.
Ezután programutasításokat adhatunk meg, vagy adatokat (ez kell neked):
  1. .pbyte 0x11,0x22,0x33,0x44    ;8-bites adatok tárolása
  2. .pword 0x111111,0x222222    ;24-bites adatok tárolása
  3. .byte 0x11,0x22,0x33,0x44    ;8-bites adatok tárolása (PSV szerint, a felső 8 bit nem használható)
  4. .word 0x1111,0x2222    ;16-bites adatok tárolása (PSV szerint, a felső 8 bit nem használható)
(A .pbyte és .pworld direktívák csak code területen alkalmazhatók.)
A hozzászólás módosítva: Jún 9, 2015
(#) Zsora válasza Zsora hozzászólására (») Jún 9, 2015 /
 
Én is így tárolok el nagymennyiségű adatot a programmemóriában. Sajátkészítésű alkalmazással létrehozom pl. a JPEG állományokból a .pbyte/.pword adatstruktúrát és egyszerűen ezt a szöveges állományt hozzáfűzöm a projekthez, vagy csak beszúrom a program végére. Gyors és egyszerű megoldás.
(#) Attila86 válasza Braf hozzászólására (») Jún 10, 2015 /
 
Idézet:
„Az adatodat amit tárolni akarsz konvertáld át valahogy object-é (makefile-ba beleírod hogy a build során generálódjon erőforrás fájl a tárolandó adatokból).
Linker szkriptben írd át, hogy a generált object fájlokat (program) a memória első x részébe tegye (azaz védd le a flash pl utolsó y lapját) majd a flash végére (kézzel megadva a címet) a linker szkriptből fűzd oda binárisan amit akarsz. A kódban meg csak a kezdőcímet kell megadnod”

Hogyan lehet ilyet csinálni? Elakadtam már a makefájl létrehozásánál, a "Create List of Targets" lapon.
Keresgéltem példa projekt után de sajnos nem találtam, pedig abból biztos megérteném.
(#) Attila86 válasza Zsora hozzászólására (») Jún 10, 2015 /
 
Idézet:
„Jaj már! De hisz' korábban leírtam itt.”

Valóban. Azt akkor még nem teljesen értettem, de így most már világos.
(#) haffre hozzászólása Jún 11, 2015 /
 
Helló,
Sajnos, csalódnom kellett a Proteusban (ISIS-ben): Az IOCIF nem törölhető szoftveresen, csak a hardver tudja törölni. Írtam egy rövid programot, az 1. variációban szoftveres törléssel, a 2.-ban hardveressel. Letöltöttem a PIC-be, a valóságban CSAK a hardveres törlés működik. Sajnálom, a PIC-t nyilván nem magyarok tervezték...
(#) Hp41C válasza haffre hozzászólására (») Jún 11, 2015 /
 
Az adatlapban fehéren-feketével le van írva:
Note 1: The IOCIF Flag bit is read-only and cleared when all the Interrupt-on-Change flags in the IOCxF register have been cleared by software.
A hozzászólás módosítva: Jún 11, 2015
(#) usane válasza haffre hozzászólására (») Jún 11, 2015 / 1
 
Másrészt, meg azt is mondtam, hogy ne bízz a szimulátorban, főleg ha kommunikációról meg megszakításról van szó. A hardver a megbízható teszt.
(#) t_ricsi hozzászólása Jún 11, 2015 /
 
Sziasztok. Pic programozással ismerkedem. A kezdő alapok mondhatni megvannak. De a profi programozáshoz még tanulni kell az biztos. A későbbikekben a terv az lenne hogy egy picet felprogramozni xy feladatra, eztán usb-vel a pc-re kötve egy saját készítésű felületen futás közben állítani egyes paramétereket, változókat. Pl egy pic18f2550-nél ez lehetséges e? Kérdés ha ez a terv akkor milyen programokat ajánlotok?? Programozáshoz illetve kezelő felület készítéshez? Vagy esetleg van olyan program amivel egyszerre megoldható mind a 2 ?

Előre is köszi
(#) icserny válasza t_ricsi hozzászólására (») Jún 12, 2015 /
 
Hajdanában a Microchip USB stack-ben, ami később a MAL (Mcrochip Applications Library) része lett volt egy látványos mindapélda "Device - MCHPUSB - Generic Driver Demo" néven, ami pont ezt csinálta. Sajnos, nem 2550-re, hanem 4550-re, tehát egy kicsit izzadni kell az adaptációval.

Ez a program kissé elavult, az újabb átirata (Visual C++ 2005 Express) pedig kevésbé látványos kinézetű. Mindamellett az MHCPUSB bootloader használata sem leányálom, drivert kell telepíteni hozzá, s atombiztosnak sem mondanám.

Ehelyett én a HID bootloadert használok (ehhez nem kell driver), s hozzá külön-külön letöltőprogramot és alkalmazást. A letöltőprogram a MAL csomagban készen, rendelkezésre áll, az alkalmazást pedig a Device - HID - Custom Demos csomag valamelyik PnP demójából kiindulva készítem.

Link: microchip.com/MLA

Megjegyzés: A MAL utódját már MLA-nak hívják, de erről nem tudok mit mondani, én leragadtam a MAL 2012-08-22 kiadásánál.
(#) t_ricsi válasza icserny hozzászólására (») Jún 12, 2015 /
 
Köszi. Nézelődtem én is tegnap óta. Én mikroC-ben kezdtem a programozást. Nem is szeretnék áttérni másra. Aztán már videókat is néztem ahol a pichez visual studióval csináltak programokat. Ehhez mit szólsz ?
(#) icserny válasza t_ricsi hozzászólására (») Jún 14, 2015 /
 
Idézet:
„Ehhez mit szólsz ?”
Jobb, ha nem mondok erre semmit...

A legtöbb támogatást elvileg akkor kapja az ember, ha a gyártó által támogatott fejlesztői környezetet és eszközöket használja. Az előző hozzászólásomban említett programkönyvtárakat és példaprogramokat például MikroC-ben aligha tudod használni. A MikroC könytárainak forráskódja viszont (tudtommal) nem nyilvános, így fogalma sincs az embernek, hogy mit csinálnak az egyes függvények, nem lehet belenézni, belemódosítani, vagy belejavítani.
(#) t_ricsi válasza icserny hozzászólására (») Jún 16, 2015 /
 
Akkor erősen ajánlott a mplab?
(#) kissi válasza t_ricsi hozzászólására (») Jún 16, 2015 /
 
Én azt használom, de ismerek olyan kollégát, aki ipari alkalmazásokat készít MicroC-vel... Tehát mindegyiknek van előnye és hátránya ( és nagyon sok elégedett felhasználója!), döntened Neked kell !
(#) t_ricsi válasza kissi hozzászólására (») Jún 16, 2015 /
 
Alap dolgokat csinálok még csak.... de valahogy elsőre csak a mikroC fogott meg. Bár suliban Mplab-ot próbálták tanítani... csak a tanítás kicsit silány volt. Úgyhogy most pótolom be. Megnézem az mplabot is még egyszer hátha megtetszik . Igazából a későbbiekben szeretném majd azt hogy a picet usbvel gépre dugva a gépről tudjak majd beállításokat eszközölni a programban.
(#) nedudgi válasza t_ricsi hozzászólására (») Jún 16, 2015 /
 
Ha jól tudom a mikroC demo/ingyenes verziója a program méretében tartalmaz korlátot, a MicroChip viszont optimalizálásban korlátozza a fordítót, a program akármekkora lehet.
(#) t_ricsi válasza nedudgi hozzászólására (») Jún 16, 2015 /
 
Igy van mikorC-ben 2k-s a limit.
(#) nedudgi válasza t_ricsi hozzászólására (») Jún 16, 2015 /
 
Ez a tény engem elgondolkodtatna, melyik irányba menjek tovább. Legelőször megnézném az árát.
(#) matheattila válasza t_ricsi hozzászólására (») Jún 16, 2015 /
 

A mikroC-nek az egszerű használata az ami minenkit elragadtat, mivel midenre van beépített függvénye csak épp használni kell, viszont pont ez is a nagy hátránya, mivel nem tudni, hogy az a függvény valójában hogy is működik...
Ehhez képest MPlab (+ ASM, C18, C30, C32)-ban (majdnem) minden függvényt neked kell megírni ami lehet, hogy nem működik annyira jól mint a mikroC-s változat, viszont itt bármikor kedved szerint módosíthatod, optimizálhatod
Szerintem kezdetnek megfelel a mikroC (max 1-2 év) ameddig elsajátítod a dolgok mikéntjét, majd később MPlab és akkor azt csinálsz amit akarsz (persze saját függvényeket mikroC-ben is pont úgy tudsz írni) nem beszélve az MPlab nagyon jó szimulátoráról, nameg amúgy is az MPlab az mikrovezérlő gyártója által készített fejlesztői környezet amit azért nem árt szem előtt tartani.
Ha már nagyon absztraktizálni akarsz akkor már Visual C++ vagy C#-ban is írhatsz programot, s megfelelő kompilátorokkal jobb esetben még működik is...
(#) t_ricsi válasza matheattila hozzászólására (») Jún 16, 2015 /
 
És akkor még 1 kérdés. C18 vagy xc8??
(#) cross51 válasza t_ricsi hozzászólására (») Jún 16, 2015 /
 
Attól függ a C18 csak a PIC18-hoz jó az XC8 meg az összes 8 bites mikróvezérlőhöz.
(#) icserny válasza t_ricsi hozzászólására (») Jún 17, 2015 / 1
 
MPLAB 8 vagy MPLAB X? PICkit2 vagy PICkit3? C18 vagy XC8?
Pont ezen kérdések miatt ment el a kedvem a Microchiptől és a PIC-től! 5-6 éve még minden egyszerűnek és világosnak tűnt, de most a kérdés sokkal bonyolultabb - legalábbis nekünk, akiket a gyártó kvázi cserbenhagyott az MPLAB 8 + PICkit2 + C18 eszköztárral.

Mindenestre ha most kezded, akkor akkor tudomásul kell venni, hogy az MPLAB X, XC8 és PICkit3 a fősodor.
(#) zilahi hozzászólása Jún 17, 2015 /
 
Sziasztok!

C nyelven programozok.
Hogyan lehet azt megoldani, hogy ha egy PIC bemeneti jele ingadozik két határérték között (pl. 0 és 5v között a bemeneti jel 2.4, 2.5, 2.6v), akkor a kimeneti jel ne egyből változzon, hanem egy kis késleltetéssel? "Mintha egy kondi lenne rákötve".
(PWM jelet változtat a kimeneten, csak szoftveres a PWM jel)
A válaszokat előre is köszönöm.
A hozzászólás módosítva: Jún 17, 2015
(#) usane válasza zilahi hozzászólására (») Jún 17, 2015 /
 
Na lehet, hogy csak én vagyok értetlen, csak hogy tisztázzuk. A bemenő feszültség alapján változtatod a kitöltési tényezőt. Eddig ok. Amit nem értek az, hogy mit akarsz késleltetni. A másik, hogy szerintem nem is késleltetni akarod, hanem folyamatosan átvinni egyik állapotból a másikba. Sötétíts fel egy kicsit minket több információval.
(#) t_ricsi válasza icserny hozzászólására (») Jún 17, 2015 /
 
Mplab X és PK3 van és akkor az xc8 lesz még hozzá Ha nagyon nem tetszik akkor visszatérek a mikorC-re... valahogy még mindig tetszik az egyszerűsége.
(#) zilahi válasza usane hozzászólására (») Jún 17, 2015 /
 
Rendben.

Van egy programom.
Egy pic bemeneti lábát digitális bemenetként használom. Erre egy feszültségosztón keresztül van egy infra vevő rákötve. Ahogy tapasztaltam 2.5v alatt 0 jel, e felett 1-es szintű jelként érzékeli a PIC a bemeneti jelet.
A kimenetére egy motor van kötve amit az infra jel hatására PWM jellel gyorsít vagy lassít. Szoftveresen állítom elő a PWM jelet, mert kicsi PIC-et használok és nincs hardveres PWM-je.
(Nem az infra erősségének megfelelően gyorsul vagy lassul a motor, csak ha van infra jel, akkor lassítva megállítja, ha nincs jel akkor felgyorsítja.)
Nagyobb PIC-et nem tudok használni, mert hely hiány miatt nem fér el!

A probléma az, hogy az infra adó és vevő egymáshoz képest mozog. (a mozgás kis mértékű)
Amikor jelet fog az infra akkor (a mozgás következtében amíg meg nem áll a motor) rövid időközönként van amikor nem kap jelet és mivel a PIC azonnal reagál addig nem lassítja tovább a motort, hanem gyorsítja.
Ezt akarom kiküszöbölni.
Ha jelet kap az infra és utánna pl. 10ms-ig nem kap jelet, akkor is abban a 10ms-ban lassuljon a motor.
Tehát egy időzítő kellene, ami pl. csak azután gyorsítaná a motort miután 3s-ig nem érkezik jel az infrára.
(#) Hp41C válasza zilahi hozzászólására (») Jún 17, 2015 /
 
Minden PIC rendelkezik a Timer0 időzítővel.
Idézet:
„Nagyobb PIC-et nem tudok használni, mert hely hiány miatt nem fér el!”

Egy 10F32x -ben van TIMER2 és PWM - SOT23-6 tokban. Ennél kisebb PIC nem kapható...
Következő: »»   1192 / 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