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   984 / 1207
(#) kissi válasza kriszrap hozzászólására (») Okt 9, 2017 /
 
Szia!
Idézet:
„Ha jól számolom a lefutási idöm 100ms és erősen vibrál a kép miért lehet??”

Ez másodpercenként 10 képet jelent, ami elég erős vibrálást jelent, azaz nem meglepő, amit tapasztalsz !
A jó "moziélményhez" durván 50 kép/s kell !
(#) kriszrap válasza kissi hozzászólására (») Okt 9, 2017 /
 
vagy is 1db 0 kevesébb akkor 20ms idöbe bent kell maradnom vagy is 20000 us összsen jól gondolom???
20000 us / 40 = 500 us/db led
(#) nagym6 válasza kriszrap hozzászólására (») Okt 9, 2017 /
 
Itt valami karakter kép van, vagy egyszerre csak egy led világít? Melyik pillanatban vibrál, a negyvenedik után szünet van, és akkor?
(#) pajti2 válasza kriszrap hozzászólására (») Okt 9, 2017 /
 
Ha 100 ms alatt fut le a teljes ciklusod, akkor a frekvenciád 10 Hz, talán azért villog. 150 Hz kellene ahhoz, hogy még pihent szem se lásson villogást. Túl hosszú az a sor. Valahogy párhuzamosítani kellene csoportokat.
(#) kriszrap hozzászólása Okt 9, 2017 /
 
Elnézést 1db nullával többet írtam sorry.
Ugy oldottam meg hogy Led ON 250us várás (10ms esetén) Led off shiftregiszter lacht láb értéke 0 ezt 40x megcsinálom
(#) pajti2 válasza Attilawap hozzászólására (») Okt 9, 2017 /
 
Hogy konkretizáljunk, erről az adatlapról van szó: Bővebben: Link. 170 oldalnyi anyag. Amikor előkapunk egy pic-et, és azt a pic családot még nem ismerjük, talán nyögvenyelősen halálunalmas az egész adatlapot végigolvasni, de csak úgy tudsz benne biztos lenni, hogy utána nem közlekedik majd veled szemben kivilágítatlan meglepetés. Az errata persze még tud vicceket mesélni, azt itt találod: Bővebben: Link. Nyúlfaroknyi rövid valami. Elolvasod azt is, és tokkal vonóval együtt tisztán látsz a lehetőségekben, és problémákban.

Az első kérdés a tápfesz. Stabil tápot kellene adni a cuccosnak, és ahhoz választani órajelet. Ha különösebben precíz valami nem kell, a belső 8 MHz is megfelel. A "DS41211D-page 116"-on találni fogsz egy grafikont, hogy milyen órajelhez milyen minimum tápfesz kell. 8MHz esetén jó vagy 2V-on is.

Az a pic 8 lábú, ki kell osztanod a feladatokat a lábakra. A lábkiosztást "DS41211D-page 2"-n találod.

Az oszcillátor config a 3. fejezet. Ha oszcillátort belsőt használsz, külső kvarc nem kell, a 2-3 lábak felszabadulnak.

A PWM-ről a 11. fejezet szól, ott majd megtalálod a kimeneti lábat is: CCP1, 5-ös láb. A pwm fogja neked a sziréna hangot generálni mókás tónusban. Majd eljátszadozol vele a programozása során (mint ahogy a freki sweep-el is). Ha akarod, a pwm-et szoftveresen is programozhatod, és akkor a fejezetet skipelheted, persze az 5-ös láb attól még maradhat kimenetnek, csak éppen digit i/o módban fogod majd használni. Célszerűen valami külső 1 tranzisztoros erősítőt érdemes rárakni, szirénához egy sima négyszögjel is elég, nem kell oda A-osztályban erősíteni.

Első körben a reset lábat talán tarts meg reset-nek, a 4-es láb arra megy.

A 6-7 a programozó lábak - ha először ismerkedsz egy pic-el, első körben jobb azokat is fenntartani arra a funkcióra, és nem használni másra.

Az ADC-t a 9-es fejezetben találod, a szabadon maradt lábak közül a 3-as tűnik célszerű választásnak pótmétert kötni rá, ha akarsz olyat. Ha nem, a teljes ADC kimaradhat.

A 2-es lábra még rárakhatsz mondjuk egy nyomógombot, ha sziréna tónus választásokhoz akarsz olyat magadnak, később a programozás során az egy lehetséges erőforrás lesz.

Mire azon a 170 oldalon átrágtad magad, világos lesz a modulok működése, amiket itt hirtelen ledaráltam, a pic hw configja, és a runtime alapinit is. Le van írva minden olyan szájbarágósan, hogy egy kétéves kisgyerek sem tudná eltéveszteni még akkor sem, ha életében először csinálja, és akár teljesen segítség nélkül. Ha végig olvastad az egészet, meg is értetted az ott leírtakat, és mégis nyitott kérdések maradnának, azokat írd fel, megválaszoljuk.

És hidd el, hogy nem jó ötlet megspórolni az egész adatlap elolvasását Más akkor, ha ez már legalább a 10. pic az életedben, és konkrétan a pic12-esek közül is használtál már valamit, mert akkor már zsigerből érzed, mit kell akkor is elolvasni, és mit skipelhetsz, de az elején az még nem jó ötlet. Rá kell szánni az időt.
A hozzászólás módosítva: Okt 9, 2017
(#) kriszrap hozzászólása Okt 9, 2017 /
 
A kódóom hátha többet segít.
  1. void kirajzol1(int mill)
  2. {
  3.     int i;
  4.     char k,x,y,z;
  5.     for(i=0;i<mill;i++)
  6.     {
  7.       for(k=1;k<6;k++)//szinteken megy végig
  8.       {
  9.         for ( x = 8; x > 0; x--)//8db led
  10.         {
  11.           shiftnullaz();//minden lább 0 és lacht=0;
  12.           for(y=1;y<4;y++)/aztán a többi 2 ö shiften
  13.           {
  14.            for ( z = 8; z > 0; z--)Végig megyek a 8bites shiften
  15.            {
  16.                 if ((t[k][x] == 7
  17.                 || (t[k][x] == 1 && y==3/*piros*/)
  18.                 || (t[k][x] == 3 && y==2 /*kék*/)
  19.                 || (t[k][x] == 2 && y==1/*zöld*/)
  20.                 || (t[k][x] == 4 && (y==1 || y==3)/*sárga(zöld,piros)*/)
  21.                 || (t[k][x] == 5 && (y==1 || y==2)/*cyan(zöld,kék)*/)
  22.                 || (t[k][x] == 6 && (y==3 || y==2)/*lila(piros, kék)*/)) && z==x)
  23.                 {
  24.                   LATD.RD2=1;//adat
  25.                   LATC.RC4=1; //clock
  26.  
  27.                   LATD.RD2=0;//data
  28.                   LATC.RC4=0;//clock
  29.  
  30.                 }else{
  31.  
  32.                   LATD.RD2=0;//data
  33.                   LATC.RC4=1;//clock
  34.  
  35.                   LATD.RD2=0;//data
  36.                   LATC.RC4=0;//clock
  37.                 }
  38.               }
  39.             }// ha egy led shiftelés kész akkor--->
  40.            if(k==5)LATA.RA6=1;else LATA.RA6=0;//ezek a szintek!!!!
  41.            if(k==4)LATC.RC0=1;else LATC.RC0=0;
  42.            if(k==3)LATC.RC1=1;else LATC.RC1=0;
  43.            if(k==2)LATC.RC2=1;else LATC.RC2=0;
  44.            if(k==1)LATC.RC3=1;else LATC.RC3=0;
  45.            LATD.RD3=1;//lacth
  46.            Delay_us(250);
  47.            LATD.RD3=0;
  48.           }
  49.        }
  50.     }
  51.   //tömb ürités
  52.  for(k=0;k<6;k++)
  53.   for(i=0;i<9;i++)
  54.     t[k][i]=0;
  55. }
(#) gyoran válasza kriszrap hozzászólására (») Okt 9, 2017 /
 
Én nem vagyok nagy C-s, de szerintem a Delay melletti részek mire lefordulnak, 100-200 utasítás lesz belőle (annyi usec), de kétdimenziós tömböknél talán több is. Aztán ezt megcsinálod egy nyolcas ciklusban, majd ezt egy hármasban, majd ezt egy nyolcasban, de lehet, hogy most kicsivel éjfél előtt rosszul látom. Ez magában is 180 ciklus, mire körbejár. 180 x 0,4 msec - rossz esetben - 70-80 msec, ami persze, hogy villog.

Megjegyzem és assembler párti vagyok, ott az időzítés jobban a kezemben van.

Ha félrevezetlek, előre is elnézésedet kérem.
(#) gyoran válasza gyoran hozzászólására (») Okt 10, 2017 /
 
Azt már látom, hogy rosszul számoltam, de már nem tudtam módosítani. Mindenesetre nekem hosszúnak tűnik a belső -Delay alatti - ciklusmagod. 8 x sok usec plusz a 250. Ha tudsz, mérj rá szkóppal, frekimérővel, vagy szimulátorral.
Vagy csak egyszerűen hagyd ki a delay-t.
A hozzászólás módosítva: Okt 10, 2017
(#) kriszrap hozzászólása Okt 10, 2017 /
 
Hát nem tudom hol rontom el mert kivettem a delay akkor is picit vibrál....
Hát hát nézem újra a kódom hátha.
(#) gyoran válasza kriszrap hozzászólására (») Okt 10, 2017 / 1
 
Szerintem a sok ciklus összességében hosszú.
Na ilyenkor szokott az öreg székely leülni a padra és újra kezdeni mindent. (nem szószerint venni!!!)
És, hogy mást ne mondjak: időzítésre assembler való (Ceterum Censeo)

Mindamellett, ha kivetted a delay-t és most már csak kicsit vibrál a nagyon helyett: jó úton vagy.
A hozzászólás módosítva: Okt 10, 2017
(#) nedudgi válasza kriszrap hozzászólására (») Okt 10, 2017 /
 
A ciklusok legbelső magjában hétszer veszed elő a t[k][x] elemet. A mag elején egyszer vedd elő, akkor sokat fog gyorsulni a ciklusmag.
(#) kriszrap válasza nedudgi hozzászólására (») Okt 10, 2017 /
 
Ohhh majd nem sikerült és igazad volt.
5 szinten az utolso led villog csak .
(#) Hp41C válasza kriszrap hozzászólására (») Okt 11, 2017 /
 
Ha
  1. for(y=1;y<4;y++)

akkor
(y==1 || y==3) átírható (y & 1) -re,
(y==1 || y==2) átírható (!((y-1) & 2)) -re,
(y==3 || y==2) átírható (y & 2) -re,
(#) kriszrap válasza Hp41C hozzászólására (») Okt 11, 2017 /
 
Melyik gyorsabb egybe ágyazott for vagy csak 1 db for de az tovább számol???
(#) kriszrap hozzászólása Okt 11, 2017 /
 
Delay után minden "szintet" 0 ra állítottam müködött de a fényerő lecsökkent és nem vibrált az utolsó led.
Miért csökenhetett le ?
Idézet:
„LATA.RA6=0;//ezek a szintek!!!!
LATC.RC0=0;
LATC.RC1=0;
LATC.RC2=0;
LATC.RC3=0;”
(#) pajti2 válasza kriszrap hozzászólására (») Okt 11, 2017 /
 
Attól függ, hogy optimalizál a fordító, ami meg attól függ, hogy a for ciklusok ciklus változóit használod-e egyáltalán? Ha nem, még az is lehet, hogy a fordító egybepakolja. De a végeredményt egészen biztosan csak asm-ben fogod látni. Kérj egy lista file-t a linkertől, és abban megnézheted, mit csinál valójában.
(#) Firefighter1 hozzászólása Okt 11, 2017 /
 
Sziasztok!

Egyirányu (tv, dvd) távirányitójeltovabbitót keresek, szeretnék csinálni!
Nem ismerem a kommunikácio tipusát.. soha nem is foglalkoztam vele, De nagyon elrugaszkodott ötlet ha valahogy ugy képzelem el hogy egy IR vevő megy a PIC egyik bemenetére A PIC soros TX lábon kiadja az adatot egy 433-as TX modulnak.... ezt egy RX modul veszi, bemegy egy másik pix rx lábán majd egy kimeneten kiadja a PIC egy IR LED nek....
(#) sonajkniz válasza Firefighter1 hozzászólására (») Okt 11, 2017 /
 
Idézet:
„nagyon elrugaszkodott ötlet”


Eléggé!
Ha például rádiós modulként ezt meg ezt használod, akkor az adó elé elég egy TSOP348-as, a vevő után meg egy 555-el felépített 38KHz-s négyszöggenerátor az adóleddel.
Bár nem teljesen értem, milyen messziről akarsz TV-t nézni, hogy kell még egy rádiós jeltovábbító is.
(#) Firefighter1 válasza sonajkniz hozzászólására (») Okt 12, 2017 /
 
Ahaaa tehat nemnhogy nem lehet megcsinálni... hanem pont hogy ágyuval verébre efektust vázoltam fel??
Van 2 tv a lakásba, kb 8 meterre egymastol, közbe van egy "kanyar" de csak egy beltéri van a 2 tv re, tehát amikor a haloba nézem a tv-t akkor a jel nem kanyarodik be a sarkon, ezért kéne egy jeltovabbitó!
(#) nedudgi válasza Firefighter1 hozzászólására (») Okt 12, 2017 /
 
Első körben beruháznék egy A4 rajzlapba. Ha nem megy, akkor egy tükörrel helyettesítve lehet pontosítani a beállításán.
Végső esetben egy fototranzisztor és egy infra LED kombó megoldhatja a dolgot pár méter vezetékkel.
A hozzászólás módosítva: Okt 12, 2017
(#) Firefighter1 válasza nedudgi hozzászólására (») Okt 12, 2017 /
 
Probáltam..... a tükrökhöz meg a belsőépítészem ( asszonykám) nem járul hozzá.
Ez a fototranzisztor ir kombo viszont lehet hogy jo lenne!
Délutan azt hiszem turom egy kicsit a netet!
(#) kaqkk válasza Firefighter1 hozzászólására (») Okt 13, 2017 /
 
Menj el a szolgáltatódhoz és vegyél egy + boxot , két legyet ütsz egy csapásra . Nem lesz kanyar a távirányító előtt és mindkét tévén más műsor mehet ...
(#) kriszrap hozzászólása Okt 13, 2017 /
 
Sziasztok
Amit kérdeznék picit ide is tartozik picitnem ugy hogy kicsit OFFolok.
8x8x8 led kockát szeretnék készíteni az első kérdés hány cm legyen a ledek közöt oldalt és fentröl??
Ne legyen sűrű a kocka de szellös se.
Hadweres rész maradjak a jól bevált Pic18f46k22-nél vagy inkább ekkora ledkockához nagyobbat ajánlotok??

Shiftregiszterrel szeretném az oszlopokat meghajtani (8x8) de nem tudom melyiket. 8 szint lábat pedig Mosfettel pic lábával meghajtva esse tudom milyen mosfettel.
szintenként kb max 2,5 Amper lenne.(inkább nagyobbra méretezem a mosfetett)
PWM is használnék de azt szoftosan is megtudom oldani .
Nagyon megköszönném ha tudnátok tippeket és tanácsot adni.
(#) Firefighter1 válasza kaqkk hozzászólására (») Okt 13, 2017 /
 
A poen az egészbe hogy törtem a fejem mint egy barom.... ma bementem...
Hát persze lehet még egy box.... mi hogy fizetni??? ja azt nem kell Grátisz!!

Csak fel van vezetve a szerződésemre hogy 2 beltéri van kint nállam!
Egyedül a kábelt kell nekem megoldanom!
(#) kaqkk válasza Firefighter1 hozzászólására (») Okt 14, 2017 /
 
Nem kell mindent túlbonyolítani ...
A hozzászólás módosítva: Okt 14, 2017
(#) nedudgi válasza Firefighter1 hozzászólására (») Okt 14, 2017 /
 
Havidíj sincs?
(#) Firefighter1 válasza nedudgi hozzászólására (») Okt 15, 2017 /
 
De.... de mint kiderült az előfizetésünkel 4 beltérit használhatok! Ugyhogy a Havidij csaknaz előfizetési díjba jelentkezik, ami szerencsére fix marad!
(#) kriszrap hozzászólása Okt 17, 2017 /
 
Sziasztok kis eeprom kérdésem lenne.
Szeretnék vásárolni poton pénzért ezt az eepromot led kocka(8x8x8) animációk tárolására majd kiolvasására.
Link

Mit jelent pl 256*8 bit soronként 8 bites?
Doksijába olvastam egy ilyet:"Chip Enable (E0, E1, E2)" ez mit jelent mire való???
EEpromba hogy érdemes az animációkat tárolni és olvasni??
A hozzászólás módosítva: Okt 17, 2017
(#) Hp41C válasza kriszrap hozzászólására (») Okt 17, 2017 /
 
Biztos elég lesz a 24C04 (4 kbit = 512 byte)???
24C16 - 2kbyte, 24C08 - 1kbyte, 24C04 - 512 byte, 24C02 - 256 byte, 24C01 - 128 byte.

24FC512 - 64kbyte - ez már megfelelő lenne, de nem potom pénzért adják...
E0, E1, E2: A tok címét lehet beállítani ezekkel a lábakkal (ha van egyáltalán hatásuk). Az I2C szabványban egy 7 bites eszközcím van, a felső 4 bit az eszköz típusát (jelen esetben 1010 - memória), a következő 3 bit az egyedii cím. A byte -ból megmaradó 8. bitet az írás vagy olvasás művelet jelzésére használják. Az az eszköz fog válaszolni, amelyre a típus kód és az egyedi cím azonos a parancsban megadott értékkel. Egyes eszközök az egyedi címekből néhányat felhasználnak az eszközön belüli címzésre.
A hozzászólás módosítva: Okt 17, 2017
Következő: »»   984 / 1207
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