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   954 / 1210
(#) Hp41C hozzászólása Máj 27, 2017 /
 
PICkit4 is comming..
(#) lastewer hozzászólása Máj 28, 2017 /
 
Sziasztok!

Tud valaki mikroC kódot pic-hez , ami meghív egy http linket ?
(#) Bakman válasza lastewer hozzászólására (») Máj 28, 2017 /
 
A PIC és a hálózat/internet között milyen eszköz van?
(#) pajti2 válasza Bakman hozzászólására (») Máj 28, 2017 /
 
Például egy ilyen. A libek pic-hez is ugyan úgy megvannak, nem csak arduino-hoz. 2012 körüli mla-k tele vannak enc28j60-as példákkal.
(#) Bakman válasza pajti2 hozzászólására (») Máj 28, 2017 /
 
Ez rendben is van, csak az a kérdés, hogy a kérdező mit használ. Lehet pl. ESP8266 is.
A hozzászólás módosítva: Máj 28, 2017
(#) pajti2 válasza Bakman hozzászólására (») Máj 28, 2017 /
 
Ja bocsesz, elnéztem, és azt hittem, te kérdezted

A http egyébként hardver független. Ha a hardver adva van, és működik fölötte az ip, onnantól kezdve már minden logikai szintű. Kelleni fognak neki bootp, rarp/arp, tcp, dhcp kliens modulok. A dhcp kliensnek tennie kell a dolgát. Utána fog tudni a http ráépülni a tcp-re.

Mla-ban 2012 körül könnyen megtalálhatóan volt mindaz, mikroc alatt gőzöm sincs. Valaki majd árulja el nekem, miért szeretik annyira a népek a mikroc-t, amikor állandóan csak a baj van vele
A hozzászólás módosítva: Máj 28, 2017
(#) usane válasza pajti2 hozzászólására (») Máj 29, 2017 /
 
Szerintem mert komplex. Van benne mindenféle előre megírt függvény.
Cserébe persze fogalma sincs az embernek mi hogyan működik.
Legalábbis 2-3 órányi tapasztalatom ezt sugallja.
(#) nagym6 válasza usane hozzászólására (») Máj 29, 2017 /
 
Idézet:
„Cserébe persze fogalma sincs az embernek mi hogyan működik.”
Ez bizony így van, de működik. Csak időközben kiderül, hogy egyik másik függvény tízszer lassabb mint lehetne, vagy hatalmas memóriát foglal, írok helyettük normálisakat, mire elkészül a program, már egyetlen függvény sem eredeti. A Mikrobasic-ben (szinte ugynaz mint a Mikroc) lcd-re 3 karakter kiírása 6ms idő, miközben ez kevesebb mint tizede időben is megoldható kb. 0.2-0.3ms alatt.
(#) Bakman válasza pajti2 hozzászólására (») Máj 29, 2017 /
 
Elnézve a téma címét és az eredeti kérdést, szerintem felesleges ennyire belemélyedni a dologba. PIC, arra valamilyen csatoló és mehetnek pl. az UART parancsok.
(#) slimcolt hozzászólása Máj 29, 2017 /
 
Sziasztok,

Pic16F1825-öt használok és MPLAB X-et, C nyelven.
A PWM-et gyakorolnám, de egyszerűen nem tudom beállítani az RC1 és RC2-t PWM kimenetnek.
Hiába bújtam az adatlapot, sajna sötét vagyok még hozzá
Tudnátok segíteni?
(#) nagym6 válasza nagym6 hozzászólására (») Máj 29, 2017 /
 
Azt elképzelni sem tudom, miért 10-20-szor lassabb egy lcd-re író utasítás. Én megírom alprogramként az lcd-re megadott szükséges időkkel, és gyors. Nem tudom miért nem gondosabban készítik a tervezők a fordítót.
(#) icserny válasza nagym6 hozzászólására (») Máj 30, 2017 /
 
Bizonyára azért, mert fix késleltetést raknak be minden karakter kiküldése után, s hogy az minden kijelzővel üzembiztosan működjön, biztonságból hosszúra hagyják (1-2 ms).
(#) pajti2 válasza Bakman hozzászólására (») Máj 30, 2017 /
 
Nem a sebességet kifogásoltam, hanem a nagyon könnyű felhasználhatóságot. Elnézve a topic címét, az ember azt hinné, itt olyasmiket talál, amik plug & play cuccok, hogy a teljesen laikusok is használni tudják. Todo list, oktató videó, és készen van, mint az ikea bútor. A mikroc nem olyasmi. Azt a részt nem értem, hogy mi az a tulajdonsága, ami miatt a plussz problémákat is megéri?
(#) Hp41C válasza slimcolt hozzászólására (») Máj 30, 2017 /
 
A 16F1825 -nél az CCP1 alap PWM kimenete az RC5, a CCP2 -é az RC3 vagy a RA5, a CCP3 -é a RA3, a CCP4 -é az RC1. RC2 csak abban az esetben lehet PWM kimenet, ha a CCP1 full bridge módban (P1D), vagy a CCP2 half vagy full bridge üzemel (P2B).
(#) Hp41C válasza pajti2 hozzászólására (») Máj 30, 2017 /
 
Sokat lehet kérdezni, hogy miért így meg úgy működik.
(#) slimcolt válasza Hp41C hozzászólására (») Máj 30, 2017 /
 
Köszönöm!
Egy olyat szeretnék kreálni ami két led-nek a fényerejét pulzus szerűen villogtatja.
Egy nyomógombbal szeretném váltogatni éppen melyik led villogjon, addig a másik kikapcsolt állapotban legyen. Ha hosszan nyomom a gombot, akkor mind kettő villogjon.
Ez elég kihívás még nekem
Legfőképpen a nyomógomb hosszan érzékelését nem tudom hogyan oldjam meg.
Pl: a gomb megnyomása (IOC) elindít egy számlálót aminek a túlcsordulására egy megszakítás megnézi meg van e még nyomva a gomb?
(#) nagym6 válasza slimcolt hozzászólására (») Máj 30, 2017 /
 
Egy ötlet: A számláló addig számlál, amíg gomb nyomva van, tehát folyamatos gombfigyelés pld. minden számlálásnál. Ha egy értéknél több lesz a számláló, akkor volt hosszan gombnyomás. Ha gombelengedésnél kevesebb az érték, akkor led váltás.
(#) Bell válasza slimcolt hozzászólására (») Máj 30, 2017 /
 
A timer és a megszakítás lehet jó elgondolás.
A gomb megnyomása indítana pl. egy 20msec időtartamú számlálót és a megszakításokat addig számlálnám, amíg a gomb nincs elengedve.
1 másodperces gombnyomás így 50, 5 másodperces 250-et eredményezne.
A hozzászólás módosítva: Máj 30, 2017
(#) Net_Boy_debr hozzászólása Máj 30, 2017 /
 
Sziasztok!
Segítségre lenne szükségem.
Szeretnék összekötni 2 db PIC-et (A PIC= PIC16F és B PIC = 12F). Az A PIC Input lábát kellene összekötnöm a B PIC Output lábával. Szerintetek összeköthetem közvetlenül, vagy kellene közé valamilyen csatoló áramkör?
Köszi előre is a válaszokat!
(#) Tasznka válasza Net_Boy_debr hozzászólására (») Máj 30, 2017 /
 
Azonos tápfesz szintről mennek,akkor simán össze lehet kötni,de azért tegyél be 1k-10k környéki ellenállást a biztonság kedvéért,mert így ha valamit elnézel és szembe kapcsolnak,akkor sem lövik ki egymást .
(#) Net_Boy_debr válasza Tasznka hozzászólására (») Máj 30, 2017 /
 
Elfelejtettem, bocsi. Azonos a tápfeszültsége a két PIC-nek, igen. Tehát ha jól értem, akkor sorosan tegyek be egy ellenállást a két PIC közé?
Az egyik PIC-re eddig egy nyomógomb volt téve felhúzó ellenállással. Ezt szeretném kiváltani egy másik PIC-el.
(#) don_peter válasza slimcolt hozzászólására (») Máj 30, 2017 /
 
Feltételezem, hogy alap helyzetben GOMB magas szinten van.
  1. if(!GOMB){ // Ha gomb le van nyomva
  2.     szamlalo = 0;
  3.     while(!GOMB){ // Ameddig gomb le van nyomva addig pörög
  4.         szamlalo++;
  5.         if(szamlalo>=1000){ // Lehet kevesebb és nagyobb érték is mint 1000, ezt a PIC sebességtől függően állítsd be
  6.             // LED kapcsolgatása jöhet innentől, vagy amit akarsz
  7.             while(!GOMB); // Vár ameddig el nem engeded a gombot
  8.             // Vagy ide
  9.         }
  10.     }
  11. }
Én hirtelen, így oldanám meg. Ha pontos időket kell várni, akkor jobb a bonyolultabb megoldás: timer és megszakítás.
Ez egy egyszerű és fapados megoldás, használd kedvedre..
A hozzászólás módosítva: Máj 30, 2017
(#) don_peter válasza Net_Boy_debr hozzászólására (») Máj 30, 2017 /
 
Igen, áramkorlátozást tegyél be azért.
Ahogy Tasznka is említette 1-10K-os értékig jó lehet bármi..
(#) slimcolt válasza don_peter hozzászólására (») Máj 30, 2017 /
 
A gond csak az, hogy a PIC el van foglalva a PWM-el (folyamatosan változtatja a kitöltést), ezért muszáj megszakítás alapúra tervezni.
(#) nagym6 válasza slimcolt hozzászólására (») Máj 30, 2017 /
 
Idézet:
„folyamatosan változtatja a kitöltést”
Közben belefér a gombnyomás idő számlálás. Nem kell abszolút precíz idő ide.
(#) ktamas66 válasza slimcolt hozzászólására (») Máj 31, 2017 /
 
A megszakítástól nem lesz több ideje a PIC-nek (sőt). Azt a feladatot tedd a megszakításba, amelyik kritikusabb, akár a PWM-et.
(#) sonajkniz válasza nagym6 hozzászólására (») Máj 31, 2017 /
 
Bár a leít feladatot nem érzem olyannak, ami nagyon igénybe venne egy PIC-et, de ha ennyire kritikusnak érzed az időket, akkor ne C-ben, hanem assemblyben írd a programot.
Lehet, még megírni is egyszerűbb lenne.

Bocsánat! Nem nagym6-nak hanem slimcolt-nak akartam válaszolni.
A hozzászólás módosítva: Máj 31, 2017
(#) kriszrap hozzászólása Máj 31, 2017 /
 
Sziasztok elkeztem egy fényjátékot írni mikroC-be .
Fényjáték lényege hogy random kigyujta a ledeket és ügyelve arra kéttszer ugyanot ne gyujtsa ki a ledet.
A problémám az szépen elkezdi megcsinálni sé kb 120 db(lesz rá egy váltózóm) nál elsötétül minden és mint ha a while bol nem lépne ki de szerintem ti ugy is megmondjátok. C# ba teljesen müködött.
A kód:
  1. void jatek16()
  2. {
  3.  char i,k,db=0,ujszam=1,check=1;
  4.  char s[6][26];
  5.    for(i=0;i<6;i++)
  6.       for(k=0;k<26;k++)
  7.           s[i][k]=0;
  8.          
  9.       while(db<125)
  10.       {
  11.         while(ujszam==1)//x,y, számot generálok
  12.         {
  13.             char x=myRand(1, 25);
  14.             char y=myRand(1, 5);
  15.             check=1;
  16.             while(check==1)//elleörzöm hogy volt e ilyen szám
  17.             {
  18.               if(s[y][x] == 1)check=0;// ha igen újra generálok
  19.               else{
  20.                 s[y][x]=1;
  21.                 db++;
  22.                 ujszam=0;
  23.                 check=0;
  24.               }
  25.             }
  26.         }
  27.        for(k=1;k<6;k++)sajat_kirajzol(s[k][1],s[k][2],s[k][3],s[k][4],s[k][5],
  28.        s[k][6],s[k][7],s[k][8],s[k][9],s[k][10],
  29.        s[k][11],s[k][12],s[k][13],s[k][14],s[k][15],
  30.        s[k][16],s[k][17],s[k][18],s[k][19],s[k][20],
  31.        s[k][21],s[k][22],s[k][23],s[k][24],s[k][25],k,k);
  32.        tombol_rajz(100);
  33.        ujszam=1;
  34.     }
  35. }

Segítségeteket kérném ez ügyben elöre is köszönöm.
(#) Hp41C válasza kriszrap hozzászólására (») Máj 31, 2017 /
 
A 3. sorban: db = 0, majd törlöd a s tömböt. Aztán 125 darab véletlen számot (nem lehet ismétlés benne). Ha megvan mind a 125, kirajzolod a mintát.
Az 5. sor for -ja miatt kezded elölről, de a db 125 értéke megmarad.

Töréspont az 6. sorra, a Watch ablakban a db változó megtekintése...
A hozzászólás módosítva: Máj 31, 2017
(#) kriszrap válasza Hp41C hozzászólására (») Máj 31, 2017 /
 
A kirajzolást ugy akarom hogy ha kigyujtok egy ledek kirajzolok azt megint mégegyet .
Video 15sec

Idézet:
„Ha megvan mind a 125, kirajzolod a mintát.”
Sajnos nem valósult meg mint ha elsö whileom beragadna...
  1. .........
  2.           while(check==1)//elleörzöm hogy volt e ilyen szám
  3.             {
  4.               if(s[y][x] == 1)check=0;// ha igen újra generálok
  5.               else{
  6.                 s[y][x]=1;
  7.                 db++;
  8.                 ujszam=0;
  9.                 check=0;
  10.               }
  11.             }
  12.         }
  13.        ujszam=1;
  14.     }
  15.       for(k=1;k<6;k++)sajat_kirajzol(s[k][1],s[k][2],s[k][3],s[k][4],s[k][5],
  16.        s[k][6],s[k][7],s[k][8],s[k][9],s[k][10],
  17.        s[k][11],s[k][12],s[k][13],s[k][14],s[k][15],
  18.        s[k][16],s[k][17],s[k][18],s[k][19],s[k][20],
  19.        s[k][21],s[k][22],s[k][23],s[k][24],s[k][25],k,k);
  20.        tombol_rajz(2000);
  21. }

Így teszteltem de semmit nem csinált....
Következő: »»   954 / 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