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   720 / 1210
(#) jany1966 válasza Pali79 hozzászólására (») Nov 6, 2015 /
 
Azt hiszem meg van a hiba nem 16F877 van benne mint a rajzon, hanem 16F1937 én ahhoz állítottam be mindent /igaz ezt nem írtam/.
Ennél viszont nem engedi a pickit2-őt használni.
Most hogyan tovább?
(#) Hp41C válasza jany1966 hozzászólására (») Nov 6, 2015 /
 
A 16F1937 -et vlóban nem támodatja az MpLab és a PICkit2 V2.61...
Pk2DeviceFile_1.62.14_mod6 letöltése, kibontása és a telepítési mappába másolása Pk2Devicefile.dat néven.
És a PICkit2 V2.61 máris tudja kezelni.
A hozzászólás módosítva: Nov 6, 2015
(#) sonajkniz válasza diablo hozzászólására (») Nov 6, 2015 1 / 2
 
Idézet:
„Azt a tudást amit az assembly ad, azt kb. 10 perc alatt el lehet magyarázni a hallgatónak.”


Taníts MESTER!
(#) Pali79 válasza diablo hozzászólására (») Nov 6, 2015 /
 
Azt észreveszed, hogy milyen ellentmondásokat írsz???
Idézet:
„a szorzásoknál osztásoknál feladtam”

Tehát nem tudtad leprogramozni.
Idézet:
„a tudást amit az assembly ad, azt kb. 10 perc alatt el lehet magyarázni a hallgatónak.”

Akkor most megy 10 perc alatt vagy sem??? Az ilyen feladatokat már a 90-es években, 16Cxx-en megoldották, persze assemblyben.
(#) Pali79 válasza Hp41C hozzászólására (») Nov 6, 2015 /
 
Így tudja programozni, de hogyan lehet fordítani rá ha az Mplab nem kezeli?
(#) Hp41C válasza Pali79 hozzászólására (») Nov 6, 2015 /
 
Fordítani tud rá már az MpLab 8.90 is, PICkit3 -mal tudja programozni és debuggolni is.
Ha lefordítod, akkor keletkezik egy hex állomány, amit a PICkit2 V2.61 -el be lehet programozni a pic -be.
(#) Hp41C válasza Pali79 hozzászólására (») Nov 6, 2015 / 1
 
Ha valakinek még a C -t (BASIC, Pascal, JAL, stb.) nyelvet is tanulnia kell, a magasabb szintű nyelven az indulás hosszabb lehet. Az XC free módban minősíthetetlen kódot generál, a full verzió 290000 Ft + Áfa.
Ha a feladatban szorozni / osztani kell, az nem tekinthető kezdő feladatnak. Itt nem az egész számmal való szorzással és kettő hatványával való osztásra gondolok. Kezdő feladatokhoz (led villogtatás, dobókocka, stb) egy nagyon rövidke (5-50 sor) assembly programot kell csak összeütni.
Haladóknak többször feltettem már ezt a gyűjteményt (csak egy jól megfogalmazott kereső kulcs kellett hozzá)...
Ezekből a rutinokból csináltam 48 bites egész osztást és szorzást assemblyben. De a 80, 88, 96, stb. bites sem jelentene akadályt... Vajon hogy nézne ki C -ben?
Hány, de hány assembly proigramban olvasható a tízes számrendszerbe váltás 10 hatványaival történő osztással (sorozatos levonásokkal elvégezve), pedig itt egy kis léptetéses megoldás is van...
A hozzászólás módosítva: Nov 6, 2015
(#) Pali79 válasza jany1966 hozzászólására (») Nov 6, 2015 /
 
Hp41C kolléga megadta a megoldást. Viszont, így a forrásba amit adtam, át kell írni az elején a PIC neveit.
(#) Hp41C hozzászólása Nov 6, 2015 /
 
Szeretnék most egy kis ötletet kérni a C (főleg az CX8 és C18) pártiaktól:
Az EEProm egy területén szeretném megoldani a parancskód -> belső funkció kód árkódolást.
Assembly -ben megy, mint a karikacsapás:
  1. org             0xF080                          ; Command table
  2.                 org             0xF080 | TINDEX
  3.                 de              0x01
  4.                 org             0xF080 | ALM_SND
  5.                 de              0x02
  6.                 org             0xF080 | WIDTH_DN
  7.                 de              0x03
  8.                 org             0xF080 | WIDTH_UP
  9.                 de              0x04
  10.                 org             0xF080 | POWDNCOIL
  11.                 de              0x05

A TINDEX,... POWDNCOIL értékek egy .h állományban definiált konstansok.
Hogyan oldható meg az említett két fordítóprogrammal?
(#) Hp41C válasza Pali79 hozzászólására (») Nov 6, 2015 /
 
Idézet:
„...át kell írni az elején a PIC neveit...”

Szinte az egész programot át kell dolgozni a Midrange - Anhanced Midrange közötti különbségek miatt. Banváltás, más bank-ban levő regiszterek, eltérő regiszter és bit nevek miatt.
(#) Pali79 válasza Hp41C hozzászólására (») Nov 6, 2015 /
 
Uff, na ezt nem néztem...
(#) diablo válasza sonajkniz hozzászólására (») Nov 6, 2015 1 / 1
 
Látom kiszűrted a lényeget.
Beszéljétek rá nyugodtan továbbra is a kezdőket az assembly-re, 1-2 hónap múlva úgyis visszatérnek segítséget kérni a C-nyelvhez. LED villogtató szerű programokat gépi nyelven programozni 2015-ben...
És igen, 10-20 perc alatt el lehet magyarázni a mikrovezérlő utasítás készletét, meg azt hogyan épül fel a program. Ennyi bőven elég. De még ezekre sincs szükséged ha úgyis C-ben folytatod tovább. De azt nem mondtam, hogy egy olyan kezdőnek is el lehet aki az MCU felépítését sem tudja. De az sem éppen bonyolult, csak ti akarjátok túlbonyolítani nehogy más is belemerjen kezdeni a programozásba. Egy alap MCU ismeret bőven elég a kezdő lépésekhez. Sokáig én se mertem belekezdeni, mert hogy tudni kell a gépi nyelvet is hozzá meg mindent, aztán a mai napig nem használom az assembly-ben tanultakat. Lásd arduino: általános iskolások jobb programot írnák már mint itt egyesek úgy, hogy fogalmuk sincs az MCU belső felépítéséről, pláne meg az assembly-ről (nem, nem arduino-zok!). Nem azt mondom, hogy követendő példa, de akit komolyabban érdekel a dolog, az önszorgalomból úgyis megtanulja majd a többit is, de legalább sikerélménnyel kezd! De pont az egésztől a kedvet elvevő assembly-vel kezdeni a mai világban, egyszerűen butaság. És ma már azt se lehet mondani, hogy kevés a RAM azért kell az assembly. Én is csak akkor fogok visszatérni rá, ha nagyon gyors folyamathoz kell majd algoritmust írni (még eddig nem volt szükség rá).

Pali79: Szerintem nem írtam semmilyen ellentmondást. Ha nem értetted volna, én csak azt írtam, hogy bőven elég egy elméleti alap is assembly-ből. Ha tudni akarod, a 8 bites szorzás még ment, de mikor már lebegőpontos számokkal kellet volna számolni, akkor inkább hagytam a fenébe és C-ben leprogramoztam egy sorba az egészet. Ráadásul nincs annyi segítség assembly-hez mint C-hez, így kezdők részéről csak mazochistáknak ajánlott. Haladni kell a korral!

Idézet:
„"de hogyan lehet fordítani rá ha az Mplab nem kezeli?"”

Mondjuk MBLAB X?
Az igazamat ez is bizonyítja, hogy jany-nak második napja nem tudtok segítséget nyújtani, mert ragaszkodtok még az MPLAB régi verziójához is ami még az adott PIC-et sem támogatja. MPLAB X-szel és PicKit3-mal kevesebb gondja lenne (az utóbbit is értelmetlenül szidják). Nem hiába fejlesztik ezeket. Előbb utóbb úgyis mindenki váltani fog, addig meg szenvedjetek.

HP41C: Szerintem nem hosszabb, sőt! Mi anno az első pár órán lekavartuk gyakorlaton a C alapokat, a többi óra már mind csak a beépített függvényekről, tömbökről, mutatókról szólt, aminek nagy részét (függvényeket) szintén nem használom PIC programozáshoz, mert magam szeretem megírni azokat. Lásd a sprintf-fel sem voltam tisztában múlt héten, mert eddig saját függvénnyel oldottam meg az ilyeneket.
while, for, if, switch. Ezekből épülnek fel a programjaim ha a változókat, függvényeket, alapműveleteket nem említem. Csak néha van szükségem struktúra és srand-ra. Assembly-ben pl. fogalmam sincs hogy lehetne most tömböt létrehozni, pedig elég gyakori résztvevő egy programban.
Nem vagyok egy pro programozó, de assembly-vel a felénél sem tartanék mint ahol most vagyok.

És most azok értékeljenek negatívan akik C-ből áttértek assembly-re, DOS alatt programoznak és jelenleg is a Windows 10 100MB alatti RAM-ot igénylő verzióján dolgoznak.
Részemről ennyi. Bocs a hossza miatt.
A hozzászólás módosítva: Nov 6, 2015
(#) sonajkniz válasza diablo hozzászólására (») Nov 6, 2015 /
 
Nos "MESTER"!
Akkor informálnálak.
Egy gépgyártó cégnél dolgozom, és többnyire PLC vezérléseket tervezek, szerelek és programozok. Azért kezdtem el a PIC-el foglalkozni, mert:
1. Némely géphez feleslegesen nagy tudással rendelkezik egy PLC.
2. Ahol nem kell ez a tudás, ott egy egyedi gyártású elektronikával gépenként 50-150 ezer forintot lehet megspórolni.
3. Néha nem elég gyors a PLC reagálása.
Ezzel vissza is tértünk, a "miért assembly" témakörhöz. Ugyanis, ha a PLC nem reagál elég gyorsan, akkor egy 8 bites PIC C-ben leprogramozva pláne lassú!
De akár a jelenlegi projektemen is elgondolkozhatsz, C-ben hogy csinálnád!
A vezérlés 5 gombot, 2 végállást, 1 potmétert, egy analóg pedált és egy encodert fogad.
Amit vezérel: 2 db frekvenciaváltó, amiből az egyik analóg jellel vezérelt. Valamint meghajt egy 128x64-es GLCD kijelzőt. A gép feladata: A gombok és a pedál álltal vezérelve egy komplett munkadarabot elkészítenek. Ezt a folyamatot a gép lememorizálja, eltárolja (többet is), majd automatán elvégzi a gyártást.
Részedről most jöhet az, hogy C-ben ezt sokkal hamarabb leprogramozod. Ami igaz, csakogy! A kijelző meghajtása még assemblyben is lassú folyamat, ezért az egész program annyjáig időkritikus.
(#) Hp41C válasza diablo hozzászólására (») Nov 6, 2015 / 2
 
Idézet:
„Mi anno az első pár órán lekavartuk gyakorlaton a C alapokat”

Most magadnak mondasz ellent.
  1. bsf STATUS, RP0
  2. clrf TRISB
  3. bcf STATUS, RP0
  4. clrw
  5. ciklus:
  6. movwf PORTB
  7. addlw 1
  8. goto ciklus

8 sor, soronként 1 perc = 8 perc alatt villog 8 led (1 led / perc )
Idézet:
„általános iskolások jobb programot írnák már mint itt egyesek”

Nézz át a C -s topikba, amikor jönnek a kérdések:
pl. (int) x = x * 5000/4096; és az (int) x= adcresult * (5000/4096); valamint az (int) x= (adcresult * 5000)/4096; problémáiról. Ugye csak sima C?
Idézet:
„MPLAB X-szel és PicKit3-mal kevesebb gondja lenne”

Miért tart abban a rendszerben egy fordítás sok sok percig? Miért olyan lassú a programozás és a nyomkövetés? Ja, lassú a gépem.... De miért megy mégis elfogadható sebességgel az MpLab 8? Honnan lehetne letölteni egy olyan fordítót, ami nem tölti maga alá a java -t. Most kb. 10 .. 12 Java verziónak kellene fent lennie a gépemen. Mire jó ez? Csak nehogy összeakadjanak, ahogy azt megtette az AVR Studió a VS2008 -cal...

Ahogy a matematikában, itt sincs királyi út.
A hozzászólás módosítva: Nov 6, 2015
(#) Hp41C válasza Hp41C hozzászólására (») Nov 6, 2015 /
 
Egy 8 Mbyte -os EEProm tartalmát szerettem volna megjeleníteni a C# -ban készült PICkit2 kezelő programmal (datagrid), de sajnos mind a 2GB memóriámat elhasználta...
(#) Pali79 válasza diablo hozzászólására (») Nov 6, 2015 / 1
 
Idézet:
„Az igazamat ez is bizonyítja, hogy jany-nak második napja nem tudtok segítséget nyújtani, mert ragaszkodtok még az MPLAB régi verziójához is ami még az adott PIC-et sem támogatja.”
Ez baromira nem bizonyít semmit! Ha nem láttad volna, most közölte, hogy nem is a PIC van a panelba, mint a kapcsolási rajzon. Ráadásul, nem az Mplab nem kezeli, hanem a PK2.
A C-nek is azért van sikere, ugyanúgy mint az Arduniónak, mert a programot már valaki megcsinálta, csak össze kell ollózni és örülni, mint majom a farkának, hogy mekkora ász vagyok, pedig fogalmam sincs róla, hogy tulajdonképpen mi is történik. "Értem én, hogy villanymotor, de mihajcsa???"
(#) nedudgi válasza diablo hozzászólására (») Nov 6, 2015 /
 
Amíg a feladat megoldására van elég memória, órajel, addig nincs gond, legfeljebb drágább lesz az a fejlesztés.
Én pár hónapja még elővettem egy régi számítógépemet. MS-DOS, 120MB merevlemez, 8MB RAM, 60MHz alatti processzorral. Pascal nyelven programoztam valamit, amit módosítani kellett. Ezzel szabad negatívan értékelni a hozzászólásodat?
Az a baj, hogy azt sem tudod, mi az amit nem tudsz.
(#) foxi63 válasza sonajkniz hozzászólására (») Nov 6, 2015 /
 
Szia!
Idézet:
„A kijelző meghajtása még assemblyben is lassú folyamat”

Azért ha egy kicsit okosabban programozol akor nem kell kivárni 46us időket, az egész LCD írás karakternként akár 1us lehet.
(#) rolandgw válasza nedudgi hozzászólására (») Nov 6, 2015 /
 
Mitől lenne drágább? Egy Cortex M0 is olcsóbb már mint egy 8 bites.
(#) Buvarruha válasza Pali79 hozzászólására (») Nov 6, 2015 /
 
Idézet:
„A C-nek is azért van sikere, ugyanúgy mint az Arduniónak, mert a programot már valaki megcsinálta, csak össze kell ollózni és örülni, mint majom a farkának, hogy mekkora ász vagyok, pedig fogalmam sincs róla, hogy tulajdonképpen mi is történik.”


Palikám ebben a formában ez így elég nagy ökörség.
A hozzászólás módosítva: Nov 6, 2015
(#) Pali79 válasza Buvarruha hozzászólására (») Nov 6, 2015 /
 
No! Fejtsd ki! Én szívesen tanulok.
(#) Hp41C válasza Buvarruha hozzászólására (») Nov 6, 2015 /
 
Miért??? Kinek van arról fogalma, hogy mi történik mondjuk egy Microelectronika C függvénykönyvtári 1-Wire, UART kezelő függvényben? Mit okoz, ha engedélyezem a megszakítást? Avagy elrontja-e a kritikus időzítésemet, mert letiltja a megszakítást? Okoz-e RMW problámát, ha más kimenettel egy portra használom? Folyhat-e a UART vétel, ha meghívtam az UART adási rutint? Lesz-e rafutás hibám? stb, stb. Ezeregy kérdés.
Sajnos a könyvtári függvények forrása nem nyilvános.
Persze megírhatom a saját C könyvtári függvényimet, de azokhoz annyi információra van szükségem, mint assembly -ben.
A hozzászólás módosítva: Nov 6, 2015
(#) sonajkniz válasza foxi63 hozzászólására (») Nov 6, 2015 /
 
Nem figyeltél!
GLCD kijelző!
  1. A1  MOVF    POSTINC0,W         ;Kiirandó byte
  2.     CALL    LCD_IRAS
  3.     DECFSZ  BKSZ               ;Byte Kiírás Számláló
  4.     GOTO    A1
  5.     MOVFF   KBSZ,BKSZ          ;Kiirandó Bytok Száma - Byte Kiírás Számláló
  6.     RETURN
  7. LCD_IRAS
  8.     MOVWF   KIIRANDO
  9.     BSF     ENABLE
  10.     NOP
  11.     BCF     ENABLE
  12.     NOP
  13.     RETURN

Ez fél képernyőn egy sor kiírása. Azaz 64 byte.
Ebből van 16, plussz a járulékos részek.
Ez több mint 16000 utasítássor 4MHz mellett.
Legjobb esetben is 0,016sec.
Szerintem ez nem túl gyors, magasabb frekin meg már leáll a kijelző.
Mivel ez mellett még encodert kell figyelni, analóg jelet digitalizálni, és linealizációt számolni,
így muszály 16MHz-n pörgetnem a procit, viszont a kijelzőt ugyanezen a sebességen kell tartani. Tehát csak az egyébb feladatok lesznek gyorsabbak. Ezért írtam, hogy csúnyán időkritikus.
(#) usane hozzászólása Nov 6, 2015 /
 
Apám, mint a gyerekek. Eléritek, hogy ezt i letiltják mint a multkor a kapcsitápos topikot. Hogy mindkét oldalnak igaza legyen, C könyebb mint az ASM, nem is azért szoktuk ajánlani az ASM-t hanem mert jobban megérthető belőle a PIC működése. Általában én is C párti vagyok, az időm fontos,de...
Mint János irta időkritikus programot csak ASM-ben lehet irni.
Másik, hogy némely c forditó olyan szemetet forrdit, hogy néha nálam is elgurul a gyogyszer és megirom inkább ASM-ben. Vita lezárva.
(#) nedudgi válasza rolandgw hozzászólására (») Nov 6, 2015 /
 
A kontroller ára egy tényező. Térfogat, energiaigény és még kismillió más tényező jöhet szóba.
(#) Hp41C válasza sonajkniz hozzászólására (») Nov 6, 2015 / 1
 
Eme szerkezet egy 20MHz -es 16F886 -tal az alábbi feladatokat végzi el:
- A rezgő kar kezdő pozíciójának figyelése, az adatok igencsak kötött időzítéssel történő kiírása a LED vezérlő portra,
- Idő számítása. Így önmagában nem egy neház feladat. Azonban a dátumot is számolja, továbbá a ISO hét sorszámot, a hét napját a dátumból (JDN), a Húsvét napját az évszámból. Ezek már igencsak számításigényes feladatok.
- Az idő kijelzése számtalan formában. A kiválasztott kijelzési módnak megfelelő rajzolat számítása. pl. 9 alapú számrendszerre való átszámítás...
- RS232 kapcsolat a PC -vel folyamatos adatforgalommal 19200 Bauddal,
- Infravörös távirányító dekódolása (Philips RC5).
- DCF77 dekódolás.
És még mindig malmozik a kontroller.... Assembly -ben elkövetett csaknem 8 kszó program...
XC8 -cal free módban fordítva 32..64 Kszó is kevés lenne....
A hozzászólás módosítva: Nov 6, 2015
(#) sonajkniz válasza Hp41C hozzászólására (») Nov 6, 2015 /
 
Komoly!
Igencsak tetszett a cikk.
(#) Buvarruha válasza Hp41C hozzászólására (») Nov 6, 2015 /
 
Idézet:
„Persze megírhatom a saját C könyvtári függvényimet, de azokhoz annyi információra van szükségem, mint assembly -ben.”


Pontosan! De nem mindegy, hogy minden aprósággal regényt írsz, vagy az azzal amit muszáj.
(#) jany1966 hozzászólása Nov 6, 2015 /
 
Így talán jobb.

1.jpg
    
(#) Pali79 válasza jany1966 hozzászólására (») Nov 6, 2015 /
 
Mi a jobb?
Következő: »»   720 / 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