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   576 / 1210
(#) Hp41C válasza don_peter hozzászólására (») Okt 6, 2014 / 1
 
Ha egy másik shift regisztert (74HC166) a 74HC595 -tel párhuzamosan léptetsz, akár 8 gombot is tudsz kezelni 1 lábon. A léptetéshez szükséges vezérlő jelek közösek lehetnek.
(#) Pali79 hozzászólása Okt 6, 2014 /
 
Sziasztok! MPlab X alatt szeretnék szimulációt használni. két dolog lenne:
1. A program egy sebességmérőt valósítana meg CCP segítségével. A program várja a CCP felől a jeleket, amíg ezt nem kapja meg addig gyakorlatilag nem csinál semmit. Tehát a kérdés az, hogy miként lehet a valóságban egy lábra folyamatosan beérkező jelet szimulálni? Itt nem feltétlenül csak a CCP-re gondolok, hanem pl. az AD-ra is.
2. A szimuláció sebességét lehet választani valahol? Ha elindítom a szimulációt nem látok semmit, mert olyan gyors. Ha meg lépésenként hajtom végre akkor egy-egy késleltető rutin több száz kattintást is jelenthet, ilyenkor meg sose akar véget érni.
(#) don_peter válasza Hp41C hozzászólására (») Okt 6, 2014 /
 
Ohh ez nagyszerű ötlet, ha több gomb kell...

(közben elbizonytalanodtam, hogy biztosan jól értettem e meg amit írtál)
Arra gondolsz, hogy amíg az LCD-t vezérlem az egyik SR-el addig ugyan azon a vonalon párhuzamosan egy másik SR-el a gombok meghajtását tudnám megoldani?

Ehhez azért kellene egy + engedélyező láb, hogy a folyamatos LCD frissítés és a párhuzamosan kötött SR-t külön tudjam léptetni, vagy nem?

A gombokat meg úgy gondoltad ellenőrizni, hogy 1 lábat inputra állítanék és figyelném mikor változik a szint és a léptetés aktuális száma adná meg melyik gomb volt lenyomva.
Jól értettem amit mondani akartál?

Ez nagyon jó ötlet egyébként... Az LCD lesz a nehezebb.
Egyébként 2 azonos típusú SR nem lenne jó erre a feladatra?

nagym6: igen ezt tudom és amúgy sincs értelme, mert a 74HC595 csak out szóval...
A hozzászólás módosítva: Okt 6, 2014
(#) Hp41C válasza don_peter hozzászólására (») Okt 6, 2014 / 1
 
Nem egészen erre gondoltam.
74HC595: Si, SCLK, RCLK három PIC lábra kötve.
74HC166: PE -- RCLK, CP -- SCLK közös a 74HC595 -tel, Q7 egy külön PIC láb.
Kezelés:
- PE = 0, egy órajel az SCLK -ra: a 74HC595 lép egyet, de nem érdekes, a 74HC166 betülti a párhuzamos bemenetet.
- 74HC166 soros kimeneti bit eltárolása, 74HC595 soros bemenet előkészítése
- egy órajel az SCLK -ra,
- goto -2 ameddig a kívánt számú bitet ki nem küldtük,
- RE = 1: a 74HC595 a kimeneti regiszterébe tárolja a beléptetett biteket.
Olyan hosszú láncot csinálhatsz, amekkora kell. Egy 16F876 -tal 128 be- és kimenetet kezelek.
(#) tomi52 válasza Pali79 hozzászólására (») Okt 6, 2014 /
 
Idézet:
„Ha meg lépésenként hajtom végre akkor egy-egy késleltető rutin több száz kattintást is jelenthet”
"step over"
(#) trickentrack hozzászólása Okt 6, 2014 /
 
Üdv!

Elkezdtem érdeklődni a mikrovezérlők után és a PIC-ek tetszettek meg.
Szeretnék venni valamilyen programozót.
Ebben kérném a segítségeteket.
Lehetőleg olcsó legyen 2-3000Ft és egyszerűen lehessen vele programozni viszonylag sokféle picet.
Gondolkozom egy PICkit2 ben de most az anyagiak nem engedik meg.

Előre is köszönöm!
(#) Pali79 válasza trickentrack hozzászólására (») Okt 6, 2014 /
 
Pedig venni ennyiért max használt PICKIT2-őt tudsz. Az a helyzet, hogy mással nem is nagyon érdemes foglalkozni.
(#) nagym6 válasza trickentrack hozzászólására (») Okt 6, 2014 /
 
Bővebben: Link
Itt 6500Ft. a Pickit2. Dobozolva: 7500Ft.
(#) vilmosd válasza trickentrack hozzászólására (») Okt 7, 2014 /
 
Aliexpress 13-14 $
(#) don_peter hozzászólása Okt 7, 2014 /
 
No csak megírtam.
Át kellett tanulmányoznom a HD44780 LCD leírását és a lépéseket mikor milyen parancsot és mekkora időzítést kell adjak.
Meg persze jól jött a PICCOLO projekt LCD driver-e is. ( sokat segített, főként a parancsok megértésében )
Írtam egy saját drivert ami szépen teszi a dolgát.
Majdnem 2 napom ráment, de most nagy az öröm

16F690 és 74HC595-el hajtom most már a kijelzőt.
Egyelőre még szimulátorban, de nem soká élesben is.
(#) Birs Alma válasza don_peter hozzászólására (») Okt 7, 2014 / 1
 
Ennél sokkal egyszerűbb, ha a gombok különböző ellenállásokat kapcsolnak ugyan arra a PIC analóg pin-re, így egy analóg bemeneten akár 10-20 gombot is figyelhetsz. Csak arra kell figyelned, hogy minden lehetséges gomb kombinációhoz különböző ellenállás érték (illetve feszültség) tartozzon. Pl. 10,20,40,80,160 stb.
(#) don_peter válasza Birs Alma hozzászólására (») Okt 7, 2014 /
 
Köszi, ez is jó ötlet.
Ennyi gomb most nem kell, de raktározom ezt a megoldást is.
A kijelző meghajtásából felszabadult lábak már elegek lesznek és a Shift regiszteren belül is maradt két láb szóval azt is ki tudom még használni ha nagyon kell a LED.
Ezt az analóg dolgot még nem próbáltam, de lassan el kell kezdeni.
Majd biztosan kérdezek, ha itt tartok..
A hozzászólás módosítva: Okt 7, 2014
(#) Hp41C válasza Birs Alma hozzászólására (») Okt 7, 2014 / 1
 
Egy MCP23017 -tel két láb (I2C busz SCK és SDA) felhasználásával menne az LCD vezérlése és még 15 gomb állapotának beolvasása is. Mivel az LCD az adat és a C/D lábain levő szintet csak a E jel magas szintje alatt (egy kis idővel az E felfutó éle előttől egy kis idővel a lefutó éle utánig) köveleti meg, ezeken a vezetékeken is be lehet olvasni nyomógombok állapotát. Az LCD vezetékeit ellenállásokkal felhúzzuk a tápra és soros ellenállással kötjül rá a gombokat. Ha a bővítő lába kimenet, a nyomógomb nem tudja a szintet megváltoztatni a lábakon, az adat beírható az LCD -be. Ha a bővítő lába bemenet, a gombok állapota beolvasható a bővítőn keresztül. Így maximum 128 bit kimenet és 128 bit bemenet kezelhető két lábon.
A hozzászólás módosítva: Okt 7, 2014
(#) don_peter hozzászólása Okt 7, 2014 /
 
Uraim,

MPLAB, Hi-Tech C 10-12-16-os fordítónál azt a beállítást, hogy a felhasználói függvény legyen az alap kimenet, vagy rögtön a kijelzőre írjon az, hogy lehetne beállítani?
C18-nál a PICCOLO-ban így van megadva:
  1. stdout = _H_USER;

16F690-es PIC-el vacakolok most..
Köszi.
(#) Birs Alma hozzászólása Okt 7, 2014 /
 
Sziasztok!

Valaki meg tudná mondani, hogy MPLABX XC8 PIC16F877A esetén lehet-e, s ha igen hogyan lehet beállítani, hogy szoftveres stack-et használjon.

Az "XC8 Gloabal option"--> "Stack option"-nál minden szürke.

Kösz a segítséget.
(#) Birs Alma válasza don_peter hozzászólására (») Okt 7, 2014 / 1
 
Ha jól értem a kérdésedet, akkor szerintem csak annyi a dolgod, hogy az egy karakter kiíró függvényt meg kell írnod, és el kell nevezned putch()-nak.

Valami ilyesmi:

  1. void putch( unsigned char c )
  2. {
  3.    lcd_putc( c );
  4. }
(#) Pali79 válasza Pali79 hozzászólására (») Okt 7, 2014 /
 
Ha minden igaz a 24 bites idő megvan, tehát a két 24 bites érték különbsége. Viszont megintcsak elakadtam. Számoltam már mindent össze-vissza, de csak nem találom a kiutat.
Szóval az idő megvan, a két jel között megtett út kb 1,2m. De, hogy lesz ebből sebesség? Azt vágom, hogy megtett út/idő az összefüggés, de az idő (ha jól gondolom) us-ben van meg. Nem tudom az utat miben kéne számolni, hogy összejöjjön a két mértékegység vagy mit is kéne tenni pontosan.
(#) don_peter válasza Birs Alma hozzászólására (») Okt 8, 2014 /
 
Természetesen ezt a függvényt megírtam, különben nem is tudnék kiíratni a kijelzőre semmit.
A kérés itt az, hogy a felhasználói függvények kimenete a kijelzőre íródjon.

Tehát mondjuk a printf utasítás alapból a kijelzőre írjon.
  1. printf("Valami szoveg");


Vagy arra gondolsz, hogy a felhasználói függvények kimenete mindig majd a putch() függvényemet fogja meghívni a kiírandó értékkel?
A hozzászólás módosítva: Okt 8, 2014
(#) ktamas66 válasza Pali79 hozzászólására (») Okt 8, 2014 /
 
Mivel a m/s és km/h között 3,6 a váltószám a s és a us között 1 000 000, úgy kell számolni, hogy 1,2x3 600 000/idő (tehát 4 320 000/idő, ami hexában 41 EB 00) . Ez km/h-át ad egész értékben. Keresned kell 24 bites osztórutint (vagy 32 biteset és kiegészíteni a számokat).
Mondjuk nem lenne muszáj us-ban mérni .
(#) don_peter válasza Birs Alma hozzászólására (») Okt 8, 2014 /
 
Mostanra tudtam kipróbálni.
Köszi a segítséget.
Működik.
(#) Pali79 válasza ktamas66 hozzászólására (») Okt 8, 2014 /
 
24 bites osztórutin elméletileg van a piclist oldalon. Azzal menni fog szerintem.

Idézet:
„Mondjuk nem lenne muszáj us-ban mérni.”

Ne zavarj össze! Akkor, hogy kellene? Ott tartok, hogy megvan a 24 bites különbség.
(#) fater0827 hozzászólása Okt 8, 2014 /
 
Üdv mindenki
Találtam egy oldalt sok elektromos rajz PIC programozó , egyéb témák .... !
Üdv
(#) Hp41C válasza fater0827 hozzászólására (») Okt 8, 2014 / 1
 
Jó régi gyűjteményt találtál... A kapcsolások zöme JDM változat, ami a mai PC -kel majdnem biztosan nem fog működni. Ld. Sárga mező a topik tetején. Ha valamelyik működne, csak arra lehet jó, hogy egy 18F2550 -et frlprogramozza a PICkit2 klónba.
(#) don_peter hozzászólása Okt 8, 2014 /
 
Uraim, segítségeteket kérném a következő AS kód értelmezésében.
  1. BSF STATUS,RP0                          ;Bank 1
  2.         BCF STATUS,RP1                          ;
  3.         LOOP BTFSS SSPSTAT, BF          ;Has data been received(transmit complete)?
  4.         GOTO LOOP                                       ;no
  5.         BCF STATUS,RP0                          ;Bank 0
  6.         MOVF SSPBUF, W                          ;WREG reg = contents of SSPBUF
  7.         MOVWF RXDATA                            ;Save in user RAM, if data is meaningful
  8.         MOVF TXDATA, W                          ;W reg = contents of TXDATA
  9.         MOVWF SSPBUF                            ;New data to xmit

P16F690-en szeretném beizzítani az SPI modult. (16f690 pdf)
Az init-et már elkezdtem megírni, de egyelőre hiányos.
  1. // STATUS regiszter
  2.         /*
  3.         00 = Bank 0 (00h-7Fh)
  4.         01 = Bank 1 (80h-FFh)
  5.         10 = Bank 2 (100h-17Fh)
  6.         11 = Bank 3 (180h-1FFh)
  7.         */
  8.         RP0 = 1;        // Bank 1
  9.         RP1 = 0;
  10.        
  11.         //SSPSTAT regiszter
  12.         BF =    0;
  13.         UA =    0;
  14.         RW =    0;
  15.         START = 0;
  16.         STOP =  0;
  17.         DA =    0;
  18.         CKE =   0;
  19.         SMP =   0;
  20.        
  21.         // STATUS regiszter
  22.         RP0 = 0;        // Bank 0
  23.        
  24.         //SSPCON regiszter
  25.         WCOL =  0;
  26.         SSPOV = 0;
  27.         SSPEN = 1;
  28.         CKP =   0;
  29.         SSPM0 = 0;
  30.         SSPM1 = 1;
  31.         SSPM2 = 0;
  32.         SSPM3 = 0;

Előre is köszi.
MPLAB + Hi-Tech C10-12-16

PICCOLO-ból már ismert SPI függvényeket használom.
  1. void waitFor25LC640(void){
  2.         unsigned int flag;
  3.         do {
  4.                 SPI_CS = 0;                             //kiadjuk a Chip Enable jelet
  5.                 spi_io(CMD_RDSR);               //Státuszregiszter olvasása parancs
  6.                 flag = spi_io(0x00);    //Olvasunk, de valamit akkor is küldeni kell!
  7.                 SPI_CS = 1;                             //megszüntetjük a Chip Enable jelet
  8.         } while (flag & 0x01);
  9. }
  10. unsigned char spi_io(unsigned char adat){
  11.         unsigned char tmp;  
  12.         BF = 0;                         // törli foglaltság jelző állapotát a státusz regiszterben
  13.         WCOL = 0;                       // törli az esetleges írás ütközés hibajelzőt
  14.         tmp = SSPBUF;           // törli a BF jelzőbitet
  15.         SSPBUF = adat;          // kirakja a kimenő adatot az SSPBUF regiszterbe
  16.         while(!BF);                     // megvárjuk a busz ciklus végét
  17.         return (SSPBUF);        // a vett bájttal térünk vissza
  18. }

Egyelőre error van mert nem fogadja az adatokat.
Vagy is valószínűleg a regiszter kódokat nem fogadja és ezért az adatokat sem.
A hozzászólás módosítva: Okt 8, 2014
(#) don_peter válasza don_peter hozzászólására (») Okt 8, 2014 /
 
Utóbbi tárgytalan.
Rossz volt a lábkiosztás.
Köszi..
(#) rockersrac hozzászólása Okt 8, 2014 /
 
Sziasztok! Remélem jó helyre írok. A kérdésem az lenne, hogy a pickit3-as programozó a pic 16f88-at ,,támogatja-e(lehet-e vele programozni ezt az ic-t)
(#) Hp41C válasza rockersrac hozzászólására (») Okt 8, 2014 /
 
Igen. Még a PICkit2 is támogatja.
(#) hormi hozzászólása Okt 9, 2014 /
 
Sziasztok
A segítségetek szeretném kérni.
Pic16c57c-04/p lábkiosztásában.... Pickit2 klónom van.Adapterem nincs hozzá. Kiszeretném olvasni belőle a tartalmat majd egy másik ugyan ilyen pic-be beleírni... Mivel az egyik in-out lába zárlatos lett. A gond az hogy teljesen ellentmondásos doksikat találtam.

Előre is köszönöm.
(#) Hp41C válasza hormi hozzászólására (») Okt 9, 2014 /
 
Sajnos nem fog menni:
- A PICkit2 nem képes biztosítani a Vpp áramigényét, nem ismeri a típust,
- Kódvédelem be lehet kapcsolva a konfigurációjában.
(#) ktamas66 válasza hormi hozzászólására (») Okt 9, 2014 /
 
A leírásban benne van, hogyan lehet kiolvasni (ha nem védett), már csak az a kérdés melyik láb lett zárlatos (és hogy érdemes-e vele foglalkozni ).
Következő: »»   576 / 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