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   319 / 1209
(#) Hp41C válasza Vanek ur hozzászólására (») Okt 19, 2012 /
 
Olvastad a megjegyzést?
Az első sorban nincs megadva a számrendszer, így a fordító a default számrendszert veszi figyelembe. Ha az nem a 10 -es, akkor hibás lesz az eredmény. Javítsd ki az alábbira (fontos a pont):
  1. divide movlw .32      ; 32-bit divide by 16-bit
(#) nagzso hozzászólása Okt 20, 2012 /
 
Sziasztok!
Egy RB megszakítást használok a programomba, ami egy gomb lenyomáskor hívódik meg. Ezen belül pedig újra felhasználom ugyanazt a gombot. Tehát ha lenyomom megint, akkor pl.: léptet egyet (PORTA = 0x01 ---> PORTA = 0x02). Egy egyszerű kérdésem lenne, hogy minden egyes gomblenyomáskor újra meghívódik-e a megszakítás(annak ellenére természetesen, hogy nem tért vissza a megszakításból)? A kérdésem oka pedig az, hogy van egy számlálóm a megszakításba (itt is deklaráltam, kezdeti értéke 0), és nekem úgy tűnik, mintha minden egyes gombnyomáskor nullázódna, ami persze szerencsére pont tökéletes a számomra, csak érdekelne, hogy jól gondolom-e, vagy pedig valami hiba van benne.
(#) kissi válasza nagzso hozzászólására (») Okt 21, 2012 /
 
Szia!

Egy-egy megszakításforrás a hozzátartozó megszakítás bekövetkeztekor egy flag-et ( jelzőbitet) állít be. A programozó az enable bitekkel tudja engedélyezni, hogy a proc látja.e ezeket. A bitek törlését jellemzően a programozó oldja meg a megszakítás végén. Ez azt jelenti, hogy egy megszakítás elfogadásakor belépve a megszakításba még aktív a jelzőbit, amíg le nem törlöd, illetve törlés után újbóli megnyomáskor megint jelez és ha nem törlöd, akkor a megszakításból kilépve megint "meglátja" a jelzést és ezért újra belép a megszakításba !!
A megszakításon belül nem tud újra meghívódni a megszakítás egyszintű megszakítás esetén ( nem írtad, de ha 16-os vagy kisebb sorozatról van szó, akkor az egyszintű, de magasabb sorozatoknál is át kellene a megszakítás közben a prioritást állítani, hogy ilyen bekövetkezhessen!), amíg le nem fut a megszakítás, addig a GIE bit törölve van!

Remélem érthető volt, de ha nem világos, kérdezz rá újra az adott részre !

Steve
(#) simi21 hozzászólása Okt 21, 2012 /
 
Üdv mindenkinek.Lenne egy kérdésem.Adott egy PIC16F877-es mikrovezérlő ami le van védve.A kérdésem az lenne hogy van erre valamilyen mód hogy ezt kilehessen iktatni úgy hogy az adatok ne vesszenek el?
(#) icserny válasza simi21 hozzászólására (») Okt 21, 2012 /
 
Milliószor megválaszoltuk már: nincs! A védelem csak a PIC teljes törlésével oldható fel.
(#) simi21 hozzászólása Okt 21, 2012 /
 
Köszi a választ.Már rájöttem,elöbb néztem utána én is.Üdv.
(#) nagzso válasza kissi hozzászólására (») Okt 21, 2012 /
 
Köszi a választ, ezt értem is, ez a több szintű volt új dolog, azaz hogy a 16-os meg kisebb nem tudja. 16F627-et használok. Itt a kód részlet:
  1. /**
  2.  * Teszt üzemmód
  3.  * Egyesével végig lehet próbálni, hogy müködik-e az összes relé
  4.  * A léptetés gombnyomásra müködik
  5.  * 5 perc tétlenség után visszakapcsol normál üzemmódba, és folytatja ott,
  6.  * ahol abbahagyta
  7.  * RB megszakítás, B7-en történik
  8.  */
  9. void interrupt rbInterrupt(void) {
  10.     unsigned long cnt_1ms = 0;              //számláló a kilépéshez
  11.  
  12.     if(INTCONbits.RBIF && INTCONbits.RBIE) {
  13.         PORTA = 0x00;                       //Relé elejtetés, oszlop részéröl
  14.         PORTB = 0x00;                       //Relé elejtetés, sor részéröl
  15.         PORTA = pin_RA[m];                  //Relé kapcsolás, oszlop részröl
  16.         PORTB = pin_RB[n];                  //Relé kapcsolás, sor részröl
  17.        
  18.         /**
  19.          * RB7-en bekövetkez? értékváltozás figyelés
  20.          * 0 = lenyomva a nyomógomb
  21.          * 1 = felengedve a nyomógomb
  22.          * Ha lenyomás történt növeli a sort, amennyiben az utolsó sorhoz ért,
  23.          * az els? sorra ugrik, és egy oszlopot lép
  24.          * Ha eléri az utolsó oszlopot, akkor az elsö oszlopra ugrik
  25.          */
  26.         if(!PORTBbits.RB7) {
  27.             ++n;                            //sor növelése
  28.             if(n > 4) {
  29.                 n = 0;                      //sor nullázás
  30.                 ++m;                        //oszlop növelés
  31.                 if(m > 3) m = 0;            //oszlop nullázás
  32.             }
  33.             __delay_ms(500);                 //prellmentesítés
  34.         }
  35.  
  36.         /**
  37.          * Számláltatás, a cnt_1ms növelése 1-gyel, amíg az RB7-es lábon nem
  38.          * történik változás (1 az értéke, azaz nem következik be lenyomás)
  39.          * Ha gomb lenyomás következett be, cnt_1ms nullázódik, kezdi elöröl ???? ez érdekelne, hogy miért kezdi újra?? Legalábbis, ha nem nyomom meg újra a gombot, akkor is 5 sec, ha megnyomom, akkor is 5sec elmúltával lép csak ki
  40.          */
  41.         while(PORTBbits.RB7 && cnt_1ms <= 5000) {
  42.             __delay_ms(1);
  43.             cnt_1ms++;                  //cnt_1ms növelése 1-gyel
  44.         }
  45.     }
  46.  
  47.     /**
  48.      * Ha cnt_1ms eléri az 5000-et (~5sec), akkor visszatér a megszakításból
  49.      */
  50.     if(cnt_1ms >= 5000) {
  51.         INTCONbits.RBIF = 0;            //RB flag törlése
  52.         __delay_ms(100);                //Debounce / Nem tudom ,ilyen módon kell-e
  53.     }
  54. }

Elképzelhető, hogy sok hiba van benne, vagy komment elírás, vagy egyszerűbben is meglehetett volna csinálni. Ez az első programom PIC-re, leszámítva a LED villogtatást. Tanácsokat, kritikákat örömmel fogadom. Még ami fontos, ugyanazt a gombot használom a megszakításhoz, majd a léptetéshez. A programot ma teszteltem áramkörben, tökéletesen működött/ik. Ja, amit elfelejtettem, multiplexelést valósít meg a program
A hozzászólás módosítva: Okt 21, 2012
(#) mekkmesterke hozzászólása Okt 21, 2012 /
 
Sziasztok. Tervezgetek magamnak egy pic kísérleti panelt és próbálom úgy elkészíteni hogy sokáig tudjam használni. Emiatt elég sok mindent szeretnék elhelyezni a panelon és ezzel nincs is gondom, legalábbis nem volt eddig. Szeretnék rá 1 sd kártyát elhelyezni, de sehol sem találok hozzá információt hogy hogyan is kell bekötni. Előre is köszönöm a segítségeteket!
(#) zolek hozzászólása Okt 22, 2012 /
 
Üdv mindenkinek.

Kellene egy kis segítség egy villogóban ez a PIC(16F824)-van ezt helyettesíteném 16F636-tal.
Én az adatlapjuk szerint hasonlónak találtam, de egy hozzáértőbb ha megnézné jó lenne vagy tudna ajánlani amivel lehet helyettesíteni. http://ww1.microchip.com/downloads/en/DeviceDoc/41419D.pdf [url=hqelektronik.hu/info/hu/pic16f636-i_p.html
(#) efiscp válasza mekkmesterke hozzászólására (») Okt 22, 2012 /
 
Szia!

Az SD kártya SPI-n vagy egy saját párhuzamos buszon tud kapcsolódni. Fenn van minden infó a https://www.sdcard.org/ lapon.

Szerk: Most nézem, hogy ebben nincs benne a csatlakozó kiosztása, azt pl. itt találod: Bővebben: Link.
A hozzászólás módosítva: Okt 22, 2012
(#) efiscp válasza simi21 hozzászólására (») Okt 22, 2012 /
 
Elvileg fel lehet törni egy PIC-et, kérdés, hogy megéri-e. Bővebben: Link
(#) PIC hozzászólása Okt 22, 2012 /
 
Sziasztok!

Egy kis segítséget szeretnék kérni PIC 12F629 programozásához.
Ha jól tudom, nem szabad letörölni a Program Memory részben lévő utolsó HEX értéket, mert az egy "lezáró valami ami kell". Na én ezt megtettem... Utánanéztem kismillió helyen, hogy hogyan lehet ezt helyreállítani de egyik módszer sem megy, vagy én csinálok rosszul valamit.
Régebben sikerült ez mert nem először követtem el ezt a hibát de akkor meg tudtam csinálni.
Még régebben eltettem egy leírást(mellékeltem) a gépre, ha később elfelejteném mit csináltam, de még ez alapján sem emlékszem
A Tools>OSCCAL>Auto regenerate -re azt mondja, hogy:
Regenerating OSCCAL Failed! Unable to program part.

Előre is köszönöm, István
(#) Hp41C válasza zolek hozzászólására (») Okt 22, 2012 /
 
Szia!
A 16F1824 felépítése már, mint a 16F636 -e, a programot mindenképen módosítani kell. Le tudod tölteni a forrását?
(#) zolek hozzászólása Okt 22, 2012 /
 
SZia . HEX- re gondolsz?
(#) zolek válasza PIC hozzászólására (») Okt 22, 2012 /
 
Ugyan ebbe a hibába estem minap 12F675- el .
elindítottam az égetést és a program fel ajánlotta ,hogy lecserélje -e jóvá hagytam és kijavította (3F8 3400). Próbáld meg. WinPic is ugyan ezt hajtotta végre nekem . Lehet fura de műkdött.
A hozzászólás módosítva: Okt 22, 2012
(#) zolek válasza Hp41C hozzászólására (») Okt 22, 2012 /
 
Itt van
(#) PIC válasza zolek hozzászólására (») Okt 22, 2012 /
 
Kipróbáltam a 03F8-at és a 3400-át is de semmi... ezeket manuálisan állítottam be. Megnéztem úgy is, hogy a "Use VPP First Program Entry" be is és ki is volt pipálva de nem vált be ez se. Még azt is kipróbáltam, hogy töltök be egy programot vagy üresen van minden, de semmi...
(#) zolek válasza PIC hozzászólására (») Okt 22, 2012 /
 
ÉN nem manuálisan állítottam , maga a program javította. indítsd el az égetést figyeld mit ajánl fel a program.
A hozzászólás módosítva: Okt 22, 2012
(#) Hp41C válasza zolek hozzászólására (») Okt 22, 2012 /
 
Szia!
Sajnos ez nem a forrás, ha csak a hex van meg, akkor vegyél 16F1824 -et.
(#) zenetom hozzászólása Okt 22, 2012 /
 
Hali!
Mivel ritkán programozok 18F széria alatt, ahol váltogatni kell a BANK-okat, ezért lenne egy kérdésem. 16F628A-t programozom, és bankváltásnál elég ennyit írni hogy:
  1. BANKSEL CMCON

és ekkor az a bank lesz kiválasztva, amelyikben van a CMCON regiszter (bank0) ? Tehát mint ha ezt csináltam volna:
  1. BCF STATUS,RP0
  2. BCF STATUS,RP1

?
A hozzászólás módosítva: Okt 22, 2012
(#) PIC válasza zolek hozzászólására (») Okt 22, 2012 /
 
Amit felajánl az az, hogy megszakítsa -e...
Invalid OSCCAL Value detected:

To abort, click 'Cancel'
To continue, click 'OK'
(#) brato válasza zenetom hozzászólására (») Okt 22, 2012 /
 
Igen, elég így csinálni.
(#) zenetom válasza brato hozzászólására (») Okt 22, 2012 /
 
Köszi!
(#) mekkmesterke válasza efiscp hozzászólására (») Okt 22, 2012 /
 
Köszi. Nem igazán találtam benne amire épp kellett, de találtam benne sok más infót amire tudtomon kívül szükségem volt és így további kiinduló pontjaim is lettek a kereséshez Köszi még egyszer
(#) tom75 hozzászólása Okt 22, 2012 /
 
Sziasztok!

Kezdő vagyok a PIC témában.

Segítséget szeretnék kérni az alábbiakban. Van egy labortápom ennek a kimeneti feszültségét és áramát szeretném pic-cel mérni.
Feszültség 0-30v között
Áram 0,002-3A között szabályozható.
pic16f873-al szeretném megoldani.

Ebben az esetben a mérő áramkört miként lehet a legegyszerűbben megoldani?
Külön program kell mind a két egység mérésére?

Segítségeteket köszönve Tamás
(#) foxi63 válasza tom75 hozzászólására (») Okt 22, 2012 /
 
Szia!
Nem kell külön program, csak 2db AD bemenetet kell felhasználnod. Az egyik értelemszerűen egy ellenállásosztó(pontosabb méréshez műveleti erősítő) A feszültség mérésére, a másik kicsit "bonyolultabb"
kell egy sönt ellenállás, mondjuk 0.05R és egy műveleti erősítő.A müveleti erősítése 20x-os ,akkor 3A-nál 3V kimenő feszültsége lesz. Biztosítani kell a bemenetek védelmét(max. pic tápfesz+0.3V illetve -0.3V) és mehet a beolvasás és értékelés. Nagyobb felbontáshoz jutsz. ha a VREF lábra egy stabil 3V feszt. kötsz, és azt használod az AD modul referencia feszültségének. Gondolom LCD kijelző lesz a kimenet.
üdv.:Foxi
A hozzászólás módosítva: Okt 22, 2012
(#) tom75 válasza foxi63 hozzászólására (») Okt 22, 2012 /
 
Szia!

Köszi a segítséget. Igen LCD-n fogom megjeleníteni a mért adatokat.
Ha lesz még kérdésem jelentkezek.

Üdv Tamás
(#) foxi63 válasza tom75 hozzászólására (») Okt 23, 2012 /
 
Szia!
Ha programozásban bármilyen problémád van, keress meg priviben. üdv..
(#) vicsys válasza foxi63 hozzászólására (») Okt 23, 2012 /
 
Miért is priviben?? Senki ne tanuljon ezen a fórumon? Ejnye...
(#) bkati hozzászólása Okt 23, 2012 /
 
18F2550-en lehet egyszerre használni az USB-t és a soros portot? Olyasmit akarok, hogy jön soros porton az adat 250 kbit/s-mal (egy autó CAN-buszáról egy ELM ic-n keresztül), és azt egy laptopra átvinni USB-n.
Következő: »»   319 / 1209
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