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   956 / 1210
(#) kriszrap válasza don_peter hozzászólására (») Jún 5, 2017 /
 
Idézet:
„olyan mint ha bemenetek lennének a lábai.”
Ez már sikerült.
Csak Addig legyen felhuzva amig programozom??
(#) don_peter válasza kriszrap hozzászólására (») Jún 5, 2017 /
 
Ameddig nem kell vagy nem használod 74HC595-öt.
(#) usane válasza don_peter hozzászólására (») Jún 7, 2017 /
 
Ez sem biztosíték erre. Programozás közben a PIC lábai lehúzhatják.
(#) don_peter válasza usane hozzászólására (») Jún 7, 2017 /
 
Szerintem ő nem a PIC programozásra gondolt, hanem a program programozására.. Gondolom én. (teszem azt valamilyen periférián át küld adatot)
Ha a PIC fel programozásra gondolt, akkor ott szerintem túl sokat nem tehet max diszkrét alkatrészekkel rögzíthet mindent.
PIC programozása amúgy is csak max 1szer történik nem állandóan, vagy esetleg még újabb program frissítésekkor. Én előbbire értettem a programozást.
(#) kriszrap válasza don_peter hozzászólására (») Jún 7, 2017 /
 
Arra gondoltam amikor PICKIT 3 felprogramozom a ledkockat ezt sűrűn teszem meg.
(#) don_peter válasza kriszrap hozzászólására (») Jún 7, 2017 /
 
Ohh, hát ez akkor már más tészta..
Programozás közben a PIC tud érdekes dolgokat művelni.
A legtöbb amit tehetsz, hogy diszkrét alkatrészekkel mindent fixre felhúzol amit fel kell és le amit le kell.
Bár így is okozhat kellemetlenséget, mert programozás közben a PIC véletlenszerűen képes a lábait állítani..
De azért nem értem, hogy ez miért jelent neked gondot mert a PIC programozását nem igen szoktuk sűrűn csinálni maximum a program finomításáig.
Mert a program működése közben ez a jelenség mér nem fog előfordulni..

Írj egy olyan programot ami a PIC újra programozását kiváltja és nem lesz ilyen gondod többet..
Igazából nem is értem miért így csinálod.. Fura..
(#) kriszrap válasza don_peter hozzászólására (») Jún 7, 2017 /
 
Idézet:
„Írj egy olyan programot ami a PIC újra programozását kiváltja és nem lesz ilyen gondod többet..”
Mire gondolsz hogy lehet ezt megvalósitani??
(#) sonajkniz válasza kriszrap hozzászólására (») Jún 7, 2017 /
 
Monjuk úgy, hogy a fényeffekteket RAM- ból játsszod le. Ha jól emlékszem, azt írtad, hogy PIC18F46K22-vel csináltad. Annak pedig van RAM-ja gazdagon.
A RAM-ba pedig tudsz adatokat írni kívülről is.
De ha te csak mondjuk hetente, vagy havonta akarod cserélni az effekteket, és nem szeretnéd, ha kikapcsoláskor törlődne, megteheted azt is, hogy programtáralónak egy másik PIC-et használsz, (pl. egy 12F1840-et) ezt programozgatod újra. Ezt egy külön áramköri lapra teszed, és akár egy sztereo jackkal is csatlakoztathatod.
Bekapcsoláskor áttölti az adatokat, utánna aludni megy.
(#) kriszrap válasza sonajkniz hozzászólására (») Jún 7, 2017 /
 
Értem)
Akkor eddig hülyén csináltam hogy ha változtattam valamit akkor mindig újra égettem be a hex a fáljt a pickbe???
(#) sonajkniz válasza kriszrap hozzászólására (») Jún 7, 2017 /
 
Az attól függ. Ha a programon módosítottál, akkor nem. Ha csak az effekten, és ezt máskor is meg akarod tenni, akkor igen.
(#) don_peter válasza kriszrap hozzászólására (») Jún 8, 2017 /
 
USART, USB, külső (SPI, I2C) vagy belső memória, amiben eltárolhatod a szükséges adatokat.
Nem tudom mennyire vagy képben, de a PIC-et sem lehet a végtelenségig törölni és újra írni..

Szerintem, ha itt állandóan akarod változtatni a LED-ek kigyújtásához szükséges adatállományt, akkor egy külső csatlakozási módot válassz, I2C vagy SPI vagy USB.
Nem egyszerű, de a legjobb megoldás..
(#) cross51 válasza don_peter hozzászólására (») Jún 8, 2017 /
 
Idézet:
„de a PIC-et sem lehet a végtelenségig törölni és újra írni”

Tegye fel a kezét aki már azért dobot ki PIC-et mert annyiszor programozta (szerintem nem lesz nagy tömeg)
(#) Mircsof hozzászólása Jún 8, 2017 /
 
Sziasztok!
A Pickik2 jól tudom, hogy minden további nélkül tudja kezelni a PIC16F877 és a PIC16F874 típust is?
Főnökömnek kellene egy többek által is alátámasztott információ erről.
A hozzászólás módosítva: Jún 8, 2017
(#) nedudgi válasza Mircsof hozzászólására (») Jún 8, 2017 / 1
 
Amennyiben a Pickit2-re gondolsz, akkor igen.
(#) Mircsof válasza nedudgi hozzászólására (») Jún 8, 2017 /
 
Szia!
Igen arra gondoltam, csak a nagy sietségben lemaradt 1-2 betű.
Köszönöm a segítséget!
(#) pajti2 válasza Mircsof hozzászólására (») Jún 8, 2017 /
 
A főnöködnek attól függetlenül jobb lenne azt mondani, hogy a pickit3 a jelenkori támogatott termék, és ha már úgyis céges számlára lesz, be kellene szerezni egyet.
(#) Mircsof válasza pajti2 hozzászólására (») Jún 8, 2017 /
 
Nem akar venni programozót, csak az általa írt programot akarja valakivel beégettetni. Csak nem voltam biztos magamban, hogy a pickit2 tudja a lent említett kontrollert.
(#) don_peter válasza cross51 hozzászólására (») Jún 8, 2017 /
 
Tegye fel a kezét aki ezt a tényt nem számolja mikor egy PIC-el kezd.... (szerintem nem lesznek sokan)
PIC nem egy memória ami kimondottan erre van.
Ha megdöglik, akkor max pár száz forint, de ha az MCU-t sütöd meg az lehet akár 1000-ek is.

Lényeg az, hogy mindent a rendeltetésének megfelelően használjuk, ha lehet..
(#) pajti2 válasza don_peter hozzászólására (») Jún 8, 2017 /
 
Amúgy miért nem inkább egy soros eeflash-t javaslunk neki, amit hozzáköt a pic-hez, és akár a soros porton számítógéptől leküldött adatokat bepakolhatja oda, és később onnét visszaolvashatja?
(#) don_peter válasza pajti2 hozzászólására (») Jún 8, 2017 /
 
Az a baj, hogy millió fajta megoldás van rá, kérdés mennyire érti a dolgot, illetve akar e még ennél több energiát belefektetni.
Mondjuk tanulásnak nagyon jó, és talán más perifériával is meg ismerkedhet, ez viszi majd előre..

Amúgy ha már itt tartunk.
Van valaki aki írt már SPI kommunikációt 32MX460-ra?
Valamiért nem akar menni az enyém.
Mutatom, hátha valaki felismer valamit amit én nem látok:
  1. unsigned char SPI(unsigned char adat){
  2.         //unsigned char tmp;  
  3.         //tmp = SPI2BUF;    // törli a BF jelzőbitet
  4.         //SPI2STATbits.SPIROV = 0;
  5.         SPI2BUF = adat;    // kirakja a kimenő adatot az SPIxBUF regiszterbe
  6.         #if defined(PIC)// 32MX460 SPITBE
  7.                 while(SPI2STATbits.SPIRBF);    // megvárjuk a busz ciklus végét
  8.         #else// 32MX795
  9.                 while(SPI2STATbits.SPITBF);    // megvárjuk a busz ciklus végét
  10.         #endif
  11.         return (SPI2BUF);    // a vett bájttal térünk vissza
  12. }
  13.  
  14. void SPI_INIT(void) {
  15.     unsigned char tmp;
  16.     // FSCK = FPB/2*(SPIxBRG+1)
  17.     // 80000000 = 80000000/(2*(99+1)) = 400KHz
  18.     SPI2CON = 0;
  19.     SPI2STAT = 0;
  20.     tmp = (unsigned char)SPI2BUF;
  21.     SPI2BRG=99;
  22.  
  23.     SPI2STATbits.SPIROV = 0;
  24.     SPI2CONbits.FRMEN = 0;
  25.     SPI2CONbits.FRMSYNC = 0;
  26.     SPI2CONbits.FRMPOL = 0;
  27.     SPI2CONbits.SPIFE = 0;
  28.     SPI2CONbits.ENHBUF = 1;
  29.     SPI2CONbits.SIDL = 0;
  30.     SPI2CONbits.DISSDO = 0;
  31.     SPI2CONbits.MODE16 = 0;
  32.     SPI2CONbits.MODE32 = 0;
  33.     SPI2CONbits.SMP = 1;
  34.     SPI2CONbits.CKE = 0;
  35.     SPI2CONbits.SSEN = 0;
  36.     SPI2CONbits.CKP = 1;
  37.     SPI2CONbits.MSTEN = 1;
  38.     SPI2CONbits.ON = 1;
  39. }
Előre is köszi..
A hozzászólás módosítva: Jún 8, 2017
(#) Tasznka válasza don_peter hozzászólására (») Jún 8, 2017 /
 
Talán ez segít,pic24-esen használom,de gondolom az alap lekérdezések itt is ugyanazok
  1. unsigned char SPI(unsigned char adat){
  2.        SPIxBUF = adat;
  3. while ((SPIxSTATbits.SPITBF == 1) || (SPIxSTATbits.SPIRBF == 0));//kimenő üres,a bejövőben van adat,akkor tovább.
  4. return (SPIxBUF);
  5. }
(#) sonajkniz válasza pajti2 hozzászólására (») Jún 8, 2017 /
 
SPI, I2C, Uart, külső memória.
Mind remek ötlet. Csak az a bökkenő, hogy egy már megépített áramkörről van szó, amiről nem tudjuk, hogy vajon az ehhez szükséges lábak szabadok-e.
Illetve azt sem tudjuk, miként hozza létre az effekteket. Fel tudná e tölteni közvetlenül memóriába.
Annyit tudunk csak, hogy egyből a PIC-be tölti.
Bővebb információ nélkül pedig szerintem csak az 1-Wire jöhet szóba, egy másik PIC közreműködésével.
(#) don_peter válasza Tasznka hozzászólására (») Jún 8, 2017 /
 
Az a baj, hogy SPITBF nincs 32MX460-ban, SPIRBF-re meg valamiért nem reagál.
A kód amúgy működik szépen 32MX795-ön, de 32MX460-on nem..
Nem értem mi a gondja, ugyan az a sebesség, ugyan úgy kell (elvileg) beállítani még sem működik.. Nem igen értem mi van ilyenkor...
(#) Tasznka válasza don_peter hozzászólására (») Jún 8, 2017 /
 
Igen,ott másképpen megy a lekérdezés.Amúgy az errata 17. oldalán panaszkodik az RBF-re,de sajna az angolom eléggé karcsú,így nem nyilatkozom Ha nem tudod kikerülni,akkor marad a megszakítás.
(#) _BiG_ válasza Tasznka hozzászólására (») Jún 8, 2017 /
 
Idézet:
„57. Module: SPI
Reads of the SPIxBUF register when the SPIRBF
bit is clear will cause erroneous SPIRBF behavior.
Subsequent data in the buffer will not be reflected
by the SPIRBF bit.
Work around
Only read the SPIxBUF register when the SPIRBF
bit is set.

Az SPIxBUF regiszter olvasása, amikor az SPIRBF bit 0, hibás SPIRBF viselkedést okoz.
A buffer további adattartalmát nem tükrözi az SPIRBF bit.
Elkerülése:
Csak akkor olvassa az SPIxBUF regisztert, ha az SPIRBF bit 1.
(#) don_peter válasza _BiG_ hozzászólására (») Jún 9, 2017 /
 
Ennek értelmében a feljebb linkelt kód jónak kell legyen.
  1. unsigned char SPI(unsigned char adat){
  2.         SPI2BUF = adat;    // kirakja a kimenő adatot az SPIxBUF regiszterbe
  3.         #if defined(PIC)// 32MX460
  4.                 while(SPI2STATbits.SPIRBF);    // megvárjuk a busz ciklus végét
  5.         #else// 32MX795
  6.                 while(SPI2STATbits.SPITBF);    // megvárjuk a busz ciklus végét
  7.         #endif
  8.         return (SPI2BUF);    // a vett bájttal térünk vissza
  9. }
A hozzászólás módosítva: Jún 9, 2017
(#) zenetom válasza _BiG_ hozzászólására (») Jún 9, 2017 /
 
Atyaég.
Na ezért sem fogok még egy darabig "feljebb" lépni a 18F-ről. Akkor már inkább ARM.
(#) sonajkniz válasza don_peter hozzászólására (») Jún 9, 2017 /
 
Magyarázza már el nekem valaki, hogy mi értelme van a PIC-ekbe beépített hardveres I2C, SPI, Uart moduloknak, ha egyszer annyi sz**t kell beállogatni hozzá, hogy annyi utasításból csaknem kijön a komplett szoftveres rutin?
Ráadásul hardveres adatküldés - fogadás közben pont úgy nem tud mással foglalkozni a PIC, mint szoftveres esetében.? "while(SPI2STATbits.SPITBF); // megvárjuk a busz ciklus végét"
(#) Tasznka válasza don_peter hozzászólására (») Jún 9, 2017 /
 
_BIG_ köszi a fordítást
  1. while(SPI2STATbits.SPIRBF);    // megvárjuk a busz ciklus végét

Itt benne ragadsz a while-be,ha van adatod,mert az RBF == 1 -nél van adat.
Próbáld így:
  1. while(!SPI2STATbits.SPIRBF);
  2. vagy
  3. while(SPI2STATbits.SPIRBF == 0);  //bár a fordítás szerint ez bizonytalan

Ez alapján működnie kellene. De azért próbáld ki,hogy megszakításból olvasod ki a puffert,egyből kiderülne,hogy jó -e az RBF -es várakozásod
(#) kriszrap hozzászólása Jún 9, 2017 /
 
Az a baj hogy ez a uart us dolog az összes láb foglalt SPI, I2C, Uart foglalt. De inkább küldök egy kapcsolást és hát ha valamit ki lehet okskodni shiftre (
Meg vagyok löve vele hogy tud egy 74hc595 vdd nélkül müködni.... Mert egyszerüen nem tudom melyik láb az stbb és lehet hogy nem ott lesz a kutya elásva.....
Következő: »»   956 / 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