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   951 / 1210
(#) Bell válasza Firefighter1 hozzászólására (») Máj 16, 2017 /
 
A PLL lehet erre jó megoldás.
(#) Bell válasza sonajkniz hozzászólására (») Máj 16, 2017 /
 
Az assembly programozás alapja a közvetlen tárgykód, így egy programot akár tárgykódban is meg lehet írni.
Hogy ne kelljen 0/1-ekkel bíbelődni, kitalálták a mnemonikokat.
A tárgykód előállítása, a fordítás, annyiból áll, hogy a mnemonik, vagy adat egy- két, rövidke táblázatból kikeresett számmal lesz helyettesítve.
A fordítón nincs sok fejleszteni való.
(#) sonajkniz válasza Bell hozzászólására (») Máj 16, 2017 /
 
Ez csak fél igazság. Mivel az MPLAB X makro fordító is egyben. Ahhoz pedig, hogy hatékony makrókat
lehessen írni, ne csak egyszerű "delay"-t, a fordítót sem árt fejleszteni. A több byte-os számok beírása, az ugrások néven nevezhetősége, egy valamilyen név alá beírt táblázat helyének kiolvasása és behelyettesítése mind a fordítóra ró munkát.
Ha jó a fordító, jók a makróid, vannak tökélyre fejlesztett saját rutinjaid, amiket a fordító szépen behelyez a program megfelelő pontjára, akkor assemblyben is lehet közel olyan gyorsan programozni, mint C-ben, csak jobb lesz a végeredmény.
(#) Hp41C válasza sonajkniz hozzászólására (») Máj 16, 2017 /
 
Idézet:
„Ha jó a fordító, jók a makróid, vannak tökélyre fejlesztett saját rutinjaid, amiket a fordító szépen behelyez a program megfelelő pontjára, akkor assemblyben is lehet közel olyan gyorsan programozni, mint C-ben, csak jobb lesz a végeredmény.”

Megfordítva sem utolsó a gondolat:
A magas szintű nyelven írt sorok is assembly makró kifejtések egymásutánjára fordulnak.
Kedvencem C -ben 18F -re:
  1. WREG = Valtozo & 0x05;

sor
  1. movf Valtozo,w
  2. andlw 0x05
  3. movwf WREG

sorokra fordul, pedig az eredmény a második sor végrehajtása után is a WREG -ben van.

A makró ugyanis arra van felkészítve, hogy az eredményt valamilyen változóban tárolni kell. Arra már nem készítették fel, hogy a tároló maga a WREG.
Még egy példa:
Ráfutás után a RCREG -et ki kell olvasni, az olvasott értéket el kell dobni.
  1. WREG = RCREG;

lenne a legjobb, de itt is szorgosan tárol a fordító
  1. movf RCREG, w, ACCESS
  2. movwf WREG, ACCESS


Egy jó macro assembly -vel egészen más processzorra is tudsz fordítani.
Pl. egy (rossz kifejezés) virtuális gépet is létrehozhatsz a programodon belül.
Pl. float point aritmetika, stb.
A hozzászólás módosítva: Máj 16, 2017
(#) Bell válasza sonajkniz hozzászólására (») Máj 16, 2017 /
 
A makró csak egy másik táblázat, a tárgykód helyei pedig egy harmadik és így tovább. A makró fordítás egyszerű másolás.
Ezek csak a kényelmet szolgálják és a csilivilit.
Nem ilyesmihez írták az MPLABX-et.
Szerintem.
(#) Hp41C válasza Bell hozzászólására (») Máj 16, 2017 /
 
Idézet:
„A makró fordítás egyszerű másolás.”

Meg formális - aktuális paramétercsere, aritmetika, változó kezelése (set), ismétlés (repeat), feltételes elágazás, feltételes kódgenerálás. Mindez az aktuális paraméterekkel vezérelve.
A hozzászólás módosítva: Máj 16, 2017
(#) Bell válasza Hp41C hozzászólására (») Máj 16, 2017 /
 
Igen, de mindezek csak a kényelmet szolgálják. Nincs semmiféle átalakítás, optimalizálás, a tárgykód egy az egyben a forráskód megfelelője, a fordítás így néhány régóta ismert, bevált módszerrel történik.
Szerintem.
Az eredeti felvetés az volt:
Idézet:
„...Lehet, hogy az MPLAB X-et direkt assemblyhez fejlesztették? Az egyéb programnyelveket pedig csak szőrmentén kezeli?..”
A hozzászólás módosítva: Máj 16, 2017
(#) zenetom válasza Bell hozzászólására (») Máj 16, 2017 /
 
Mire akarsz kilyukadni?
(#) Bell válasza zenetom hozzászólására (») Máj 16, 2017 /
 
Kilyukadni nem szeretnék, csak azt szerettem volna megmutatni, hogy azért működik jól Nálad az assembly, mert azt nehéz elrontani.
És persze azt, hogy az MPLABX megalkotásánál nem az assembly fordító volt az elsődleges szempont, hanem együtt több programnyelv, többféle kontroller, hozzá sokféle hardver, mindezek részletes beállíthatósága, kényelmes használata programozásnál és hibakeresésnél.
(#) zenetom válasza Bell hozzászólására (») Máj 16, 2017 /
 
Értelek, és nyilvánvaló, hogy nem az asm a fő céljuk.
De azért ez:
Idézet:
„részletes beállíthatósága, kényelmes használata programozásnál és hibakeresésnél”

nem nagyon sikerült nekik...
Azért valljuk be, hogy elég sok baj van az MPLABX-szel.
(#) sonajkniz válasza zenetom hozzászólására (») Máj 16, 2017 /
 
Még egy okkal több, hogy maradjak az assemblynél.
Ott semmi bajom nincs az MPLAB X-el.
(#) zenetom válasza sonajkniz hozzászólására (») Máj 16, 2017 /
 
Én is így vagyok vele, amit meg lehet oldani 8 biten, arra szerintem bőven jó a "régi" 18F széria. Ha meg valami nagyon cudar dolog kell, akkor arra már inkább ARM-et kéne használni.
Csak egyelőre a lustaságom keresztbe tesz ennek a tervnek.
(#) nedudgi válasza Bell hozzászólására (») Máj 16, 2017 /
 
Nálam akkor bukott meg az MplabX, amikor próbáltam megérteni egy projekt könyvtárszerkezetét.
(#) Bell válasza zenetom hozzászólására (») Máj 16, 2017 / 1
 
Nem nagyon, hanem nagyon nem
De hátha olvassák ezt a fórumot és egyszer csak ráeszmélnek mi is a fő cél.
Mert összetett, meg bonyolult, meg sok a meló és egyebek, de úgy árulni kontrollert, hogy a meglévő és működő C fordító nincs beszélő viszonyban a felhasználóval, az szomorú.
De miket beszélek itt. A fizetős verziónál ilyen gond biztosan nincs.
3-10 év és a most új eszközök is fognak működni.
Mert az kizárt, hogy egy profi programozónak ez akkora meló, hogy évekkel később kerüljön be egy új eszköz az IDE-be.
(#) Bell válasza nedudgi hozzászólására (») Máj 16, 2017 /
 
Egy jól működő rendszer részletei a felületes szemlélő számára tűnhetnek öntörvényűnek, szokatlannak.
De ezt hajlandóak vagyunk készséggel tolerálni, ha a végeredmény brilliáns, kényelmes, vagy legalább használható.
(#) Tasznka válasza Net_Boy_debr hozzászólására (») Máj 17, 2017 /
 
Szia! Mellékelek 1 nagyon alap progit. Jó régi,de gyorsan átírtam benne ezt-azt.Elméletileg menni fog,ha Explorered van .8MHz-es kavicsra van beállítva.Sajna már nem tudom kipróbálni,mert a GA010-es plug in module-omon már kicseréltem egy másik típusra ,vagyis kikaptam róla,és ráforrasztottam egy jobbat .

ga010.rar
    
(#) Hp41C válasza Bell hozzászólására (») Máj 17, 2017 / 1
 
Nos van némi igazság abban, amit írsz:
Idézet:
„Mert összetett, meg bonyolult, meg sok a meló és egyebek, de úgy árulni kontrollert, hogy a meglévő és működő C fordító nincs beszélő viszonyban a felhasználóval, az szomorú.”

Amikor a C18 fordítót megjelentette a Microchip a 18F252 helyett egy 18F2520 -at is megjelenetetett (nagyobb program memóriával)...
Idézet:
„De miket beszélek itt. A fizetős verziónál ilyen gond biztosan nincs.”

A PRO verzió is tele van ügyetlenségekkel, a STANDARD -ban hemzseg, a FREE egyszerűen kriminális, amit csinál. Egy olyan program, ami assembly -ben röhögve belefért a 16F628 2k-s programtárában XC8 FREE módban nem fért bele 8k -ba sem. (Nincs standard Midrange nagyobb programtárral.)
Idézet:
„3-10 év és a most új eszközök is fognak működni.”

Három év már letelt. (Kb. ennyit vártunk a 32MZ beharangozása és a forgalomba hozatala között). De ne feledjük, egy világhírű cégről van szó... A konkurenciát behozni ezzel a módszerrel ?
Idézet:
„Mert az kizárt, hogy egy profi programozónak ez akkora meló, hogy évekkel később kerüljön be egy új eszköz az IDE-be.”

A MpLab X egy keretrendszer. Alkalmazkodnia kellene a feltelepített fordítókhoz (akkor is, ha ugyan az a gyártó készítette és akkor is ha más). Így pl. nem értem, miért a keretrendszer készíti el a konfigurációs szavak beállításából a forrást, ha minden verzióban változtatjuk egyes kontrollerek include állományát?
Megvizsgáltam és átírtam a PICkit2 és a PICkit Serial Analyzer programját. Időnként a hajam szála is égnek állt volva, ha lenne még. Fizetett, főállású programozói gárda készítette.
A hozzászólás módosítva: Máj 17, 2017
(#) silent15 hozzászólása Máj 17, 2017 /
 
Sziasztok!

Minap unatkozásképp elkezdtem próbálkozni hogy milyen jeleket tudok szépen a PIC-ből kicsikarni. Az alany egy PIC12f752-es, van benne DAC megfelelő memória és PWM kimenet. PWM szépen megy is, timer1 adja ugye az alapot, fűrészjelet is tudok vele generálni, úgy mint háromszögjelet, a probléma a szinusz generálásánál van.
timer0 adná az alapot, 0-tól 180-ig számoltatom emellé társul egy bool ami megmondja hogy melyik félben járunk. A kiemenetet a DAC-al generáltatom, az alábbi formulával:
  1. dac_write(255*sin(get_timer0()*(pi/180))));

Itt jön a probléma; a sin a math.h könyvtárban van, és akkora memóriát foglal hogy az már bőven sok a kis PIC-nek. Van valami egyéb megoldás erre? Ki hogyan generálna szinusz egy ilyen kis jószággal, ha egyáltalán belefér a fejébe.

Köszönöm !
A hozzászólás módosítva: Máj 17, 2017
(#) Hp41C válasza silent15 hozzászólására (») Máj 17, 2017 /
 
PIClist oldalról az Implementing the Sine function on the PIC.
A hozzászólás módosítva: Máj 17, 2017
(#) silent15 válasza Hp41C hozzászólására (») Máj 17, 2017 /
 
Valami hasonló jutott az eszembe, de itt szépen leírja, köszönöm !
Még amit nézegettem, van olyan 16 bites PIC amiben van DAC és támogatja a PICkit2? Már vagy 1 órája kattingatom a filtereket és nézem amit kidob, hasonlítom össze a readmevel de nemigazán találok. Vagy amiben már van az nincs támogatva ?
(#) Norberto válasza Hp41C hozzászólására (») Máj 17, 2017 /
 
Idézet:
„Fizetett, főállású programozói gárda készítette.”


És sajnos azt se merem elképzelni, hogy mindezt éhbérért. Ez a szörnyűbb. Komoly pénzekért teszteletlen, lomha bughalmaz a végeredmény. Hát mindenek lehetnek erre a termékre, de büszkék semmiképp.
(#) Hp41C válasza Norberto hozzászólására (») Máj 17, 2017 /
 
Az a baj, hogy fel sem tűnik már. Most már nincs fenn a honlapukon az a díj, amit nyertek vele.... Milyen lehet a többi pályázó?
(#) Hp41C válasza silent15 hozzászólására (») Máj 17, 2017 /
 
Idézet:
„Még amit nézegettem, van olyan 16 bites PIC amiben van DAC és támogatja a PICkit2?”

Sajnos csak nagyon kevés 16 bitest ismer a PICkit2 2.61. Miért is? Mert a gyártó úgy döntött, hogy a fejlesztését abbahagyja... Egyébként tudhatná az összeset.
(#) Szárnyas válasza Net_Boy_debr hozzászólására (») Máj 17, 2017 /
 
A Kónya László féle PIC mikrovezérlők alkalmazástechnikája c. könyv harmadik, Kopják József által írt fejezetekkel bővített kiadásában pont az Explorer 16 fejlesztőkártyához igazodó mintapéldákon keresztül vezetik be az olvasót a 16bites PIC-ek C nyelvű programozásába.
Itt megtalálod a könyv szkennelt változatát: Bővebben: Link
(#) silent15 válasza Hp41C hozzászólására (») Máj 17, 2017 /
 
Valamikor olvastam egy projektet, volt aki elkészítette(továbbfejlesztette) a pickit2 förmverét úgy hogy majdnem mindent támogatott az összes hibája pár bug volt. Szóval tényleg képes rá csak nem érdekli őket.
(#) kissi válasza silent15 hozzászólására (») Máj 17, 2017 /
 
Lehet, hogy HP41C kolléga volt ?!
(#) silent15 válasza kissi hozzászólására (») Máj 17, 2017 /
 
Beletrafáltam volna ?
És valóban, megtaláltam a fórumtémát
(#) slimcolt válasza don_peter hozzászólására (») Máj 17, 2017 /
 
Na megérkezett a Pickit3, kipróbáltam. Tökéletesen működik a kódom. A proteus meg be....
Akkor mehet tovább a tanulás....
A hozzászólás módosítva: Máj 17, 2017
(#) don_peter válasza slimcolt hozzászólására (») Máj 18, 2017 /
 
Örülök.. Összetettebb feladatnál, főleg ahol még te is végig tudod gondolni a megfelelő működést és úgy érzed, hogy hibázik a Proteus, mindig érdemes élesben is tesztelni.. Szerencsére nem sokszor fordul elő, de számítani azért kell rá.. Ettől független nagyon jó, hogy létezik az a program.. Hajrá..
(#) don_peter hozzászólása Máj 18, 2017 /
 
Uraim, nekem is lenne 2 kérdésem..
Az egyik ide vág a másik nem annyira, de nem akarok két külön kérdést feltenni és talán még bele fér az az egy igen vagy nem.

Első:
Van egy kis rutinom, amely így fest:
  1. for(i=0; i<MySD.FileCount; i++){
  2.         if(OledListSelect == i){
  3.                 for(x=0; x<MySD.LFNCount; x++){
  4.                         if(Files[i].ChackSumCode == LFN[x].CheckSum){
  5.                                 sprintf (buffer, "->%s", LFN[x].FileLFN);
  6.                                 break;
  7.                         }else{
  8.                                 sprintf (buffer, "->%s", Files[i].FileName);
  9.                         }
  10.                 }
  11.         }else{
  12.                 for(x=0; x<MySD.LFNCount; x++){
  13.                         if(Files[i].ChackSumCode == LFN[x].CheckSum){
  14.                                 sprintf (buffer, "  %s", LFN[x].FileLFN);
  15.                                 break;
  16.                         }else{
  17.                                 sprintf (buffer, "  %s", Files[i].FileName);
  18.                         }
  19.                 }
  20.         }
  21.         OLED_print_string(1, 2+i, buffer);
  22. }
Szemfülesek kiszúrhatták (hogy van helyesírási hiba, ettől most tekintsünk el), hogy a hosszfájlnevek kiíratásáról szól ez a kis részlet. A kérdésem viszont sokkal egyszerűbb.
A break; utasítással kapcsolatban kérdezném, hogy jót e tesz illetve biztonsággal lehet e használni?
Most szépen működik, de lehet nem a legjobb megoldás.
A lényege, hogy ha megtalálja a rövid fájlnévhez csatolt hosszú fájlnevet, egyszerűen lépjen ki a for ciklusból és ne keressen tovább.
Ez a break vagy esetleg még a 2. for ciklus x változóját tudnám megváltoztatni, hogy a feltétel beigazolódjon és abba hagyja a futást.
Melyik az értelmesebb PIC felől nézve?

Második:
Ez nem ide tartozik, de hátha nem kapok érte most rovást.
SD kártya esetében, ha használom az engedélyező lábat, akkor minden újra engedélyezésnél le kell futtatnom az inicializálást? A kérdés azért merült fel, mert az OLED kijelző hajtása ugyan azokról az SPI lábakról történik mint amiről az SD kártyát hajtom..

Előre is köszi.
A hozzászólás módosítva: Máj 18, 2017
Következő: »»   951 / 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