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   176 / 1210
(#) Poostmaster válasza svandras0404 hozzászólására (») Nov 15, 2011 /
 
Az elektronikával hogy állsz? Mert ha az is úgy megy mint az angol, akkor bajban vagy. (és mi is)
(#) vilmosd válasza trudnai hozzászólására (») Nov 15, 2011 /
 
Idézet:
„ezen a teruleteken a masodik leggyakrabban hasznalt nyelvet, a Kinait is megtanulhatod”

Esetleg a japant.
De viccet felreteve angol alap tudas nelkul tenyleg csak kinlodas az egesz. Ezt nem Neked mondom, hanem az ujhus kollegaknak. Millioszor feltesznek kerdest, amibol latszik hogy halvany fogalmuk sincs mi leledzik az adatlapban. Marpedig a MCHP jo adatlapokat ad ki. Persze mivel a magyar meg nem vilagnyelv, ezert a fejlesztogarda hanyagolja a magyar nyelvu doksikat. Igaz vannak magyar nyelvu irodalmak, de sajnos lemaradtak egy par evvel. A Konya fele konyvek is regen keszultek, tehat az ujabb fejlesztesu eszkozokrol nincs szo bennuk. (16F84, 16C74 szintu). Persze egyszerubb ha a kezdo itt a forumon veri a virtualis asztalt, hogy marpedig azonnal mondjak meg neki miert nem mukodik a programja, a PIC-je. Pedig csak a doksit kellene nyalazni, vagy a MPLAB helpjet olvasgatni (angolul) . Sajnos az internetes fordito meg egy gyakorlottabb embernek is feladja a lecket, mire megerti a forditast.
(#) doup hozzászólása Nov 15, 2011 /
 
Sziasztok szeretnék egy ledet random időközönként villogtatni de sajna amit írtam a 12f629-re ciklikusan villogtatja a ledet. Valakinek valami ötlet?
  1. //--- Változók deklarációja
  2. int cnt = 0, delay = 0, seed = 0;
  3. //~
  4.  
  5. //--- Megszakítások
  6. void interrupt()
  7. {
  8.      if(TMR0IF_bit)
  9.      {
  10.          cnt++;                 // számláló
  11.          TMR0IF_bit = 0;        // törlés TMR0IF
  12.          TMR0   = 96;
  13.      }
  14. }
  15. //~
  16.  
  17. //--- Alapbeállítások
  18. void InitMain()
  19. {
  20.      OPTION_REG = 0x84;
  21.      CMCON  = 7;              // Comparatorok kikapcsolása
  22.      TRISIO = 0;              // GPIO kimenetre állítom
  23.      TMR0  = 96;              // Timer0 inicializált értéke
  24.      INTCON = 0xA0;           // TMRO megszakítás bekapcsolása
  25. }
  26. //~
  27.  
  28. //--- Main
  29. void main()
  30. {
  31.      InitMain();
  32.      srand(seed);
  33.      do
  34.      {
  35.          delay = (rand() % 100 + 1)*10;
  36.          if (cnt >= delay)
  37.          {
  38.               GP0_bit = ~GP0_bit;
  39.               cnt = 0;
  40.               delay = 0;
  41.          }
  42.      }
  43.      while(1);
  44. }
  45. //~
(#) Poostmaster válasza doup hozzászólására (») Nov 15, 2011 /
 
Ezt úgy tudod megtenni, ha minden villantás után új értéket adsz a timernek, és azzal indítod.
(#) icserny válasza doup hozzászólására (») Nov 15, 2011 /
 
Vegyél elő egy papírt és rajzold fel a program folyamatábráját! Gondold át, hogy mit is kell csinálnod a főprogram végtelen ciklusában!

Szerintem pont a delay = 0; helyett kellene a véletlen számot előállítani.
(#) icserny válasza Poostmaster hozzászólására (») Nov 15, 2011 /
 
Idézet:
„ha minden villantás után új értéket adsz a timernek”

Nem a timerrel akar időzíteni, hanem az időszeletek számlálásával!
(#) Poostmaster válasza icserny hozzászólására (») Nov 15, 2011 /
 
Igazad van. Persze az sem mindegy, hogy a random milyen időintervallumot ölel fel.
(#) doup hozzászólása Nov 15, 2011 /
 
Szerintem amit csinál a random függvényem 1-100 közötti számot generál amit megszorzok 10-el. Ezt belerakom egy változóba pl ha a random 54-es *10 = 540 lesz a delay azaz ha a cnt >= 540 akkor negálja a láb aktuális állásást majd a cnt lenullázom és újra a dely-t feltöltöm egy újabb rand számmal és így tovább szerintem.
(#) doup válasza icserny hozzászólására (») Nov 15, 2011 /
 
Erre módosítottam
  1. if (cnt >= delay)
  2.          {
  3.               GP0_bit = ~GP0_bit;
  4.               cnt = 0;
  5.          }
(#) doup válasza icserny hozzászólására (») Nov 15, 2011 /
 
Fogalmam sincs mi a baja! Te tudod?
(#) Poostmaster válasza doup hozzászólására (») Nov 15, 2011 /
 
Nem vagyok képben C-ben. Mit csinál a random függvényed?
A definicióját betennéd nekem?
(#) icserny válasza doup hozzászólására (») Nov 15, 2011 /
 
Idézet:
„Fogalmam sincs mi a baja! Te tudod?”

Már ebben a hozzászólásban megmondtam. Minek kérdezel, ha nem olvasod el a választ?
(#) doup válasza icserny hozzászólására (») Nov 15, 2011 /
 
Bocsi a szürke részt el sem olvastam mert nem figyeltem.
(#) doup válasza Poostmaster hozzászólására (») Nov 15, 2011 /
 
Megvan a megoldás icserny leírta csak a szürke rész elkerülte a figyelmemet egyébként a rand()%100+1 1-100 között generál véletlen számokat.
(#) svandras0404 válasza Poostmaster hozzászólására (») Nov 15, 2011 /
 
Az elektroval nincs nagy gond 5. féléves (levelezös) Kandós vagyok.
Most vettük a pic-eket és ennek 3 hét mulva már menni kellene.
Rögtön bevágtak minket a mély vízbe és hajrá.
Bocs mindenkitöl, hogy ennyire rátok rontottam, de annyi a tanulni valóm, hogy azt sem tudom mihez kapjak.
Ezért is nincs időm angolozni.
Jelenleg az adatlapot fordítom bízom benne, hogy összejön belöle valami.
A Konya könyvel tényleg az a gondom, hogy régebbi dolgokhoz valo volt benne cd is , de az a 18-as Pic-hez voltak progik.
A biztosíték atttól ment ki nálam, hogy a Debug Expr. csomagban 16f887 van a proba panelen a hozzá adott cd-n pedig lennének progik PWM is , de azokat
16f684-re írták ezért ez sem megy.
Ezen akadtam ki és írtam be a hülyeségeimet hozzátok.
A belinkelt oldalt megnéztem és találtam is sok mindent de nekem ASM kellene ott inkább másra írt dolgok vannak.
(#) szitko válasza svandras0404 hozzászólására (») Nov 15, 2011 /
 
Melyik belinkelt oldalt? A Trudnai úr videóját megnézted? Ha jól emlékszem abban is 887-t van. Szerintem nem biztos, hogy a Pwm-el kellene kezdeni,(még akkor sem ha csak 3 heted van rá) először nézd át a perifériákat, hogy mi mit csinál, hogy legalább el tudd indítani a PIC-et. Egy kis Magyar segítség.
(#) bbalazs_ válasza svandras0404 hozzászólására (») Nov 16, 2011 /
 
A feladat szerintem ahhoz merheto a te esetedben, mintha kozolnek, hogy van 3 heted megtanulni olyan szinten angolul, hogy szinkrontolmacsolj egy gengszterfilmet.

Minden tanulasi folyamat idot igenyel. Valamelyest le lehet roviditeni, de nagysagrendi valtozasra ne szamits. Szerintem 3 het akkor sem lenne elegendo, ha KIZAROLAG ezzel foglalkoznal egesz nap. Ha valaki az oktatasbol valoban ugy gondolja, hogy ez kivitelezheto, az teved. VAGY mar sokkal korabban el kellett volna kezdened, csak a kormodre egett es most kapkodsz.

3 het arra eleg, hogy nagyjabol lasd, hogyan lehet taplalni, mit lehet tole varni elektromos szinten, hogyan kell bele programot tolteni, config biteket hogyan kell beallitani, orajel felfedezese. A ledvillogtatasig el lehet jutni nullarol ennyi ido alatt.
(#) AZA válasza svandras0404 hozzászólására (») Nov 16, 2011 /
 
Üdv!
Exaple 10-PIC16f887 PWM
Bővebben: Link
(#) Poostmaster válasza svandras0404 hozzászólására (») Nov 16, 2011 /
 
Jobban szét kellene nézned azon a lemezen. Természetesen vannak példaprogramok rajta ahhoz a csiphez, ami rajta van. A Debug Express-hez egy "44-pin demo board" tartozik a PicKit 2 mellé. A lemezen az ehhez tartozó pdf-et keresd az "Users Guides" könyvtárban. 12 példán keresztül mutatja be a programozást. Természetesen angolul. Főiskolán nem követelmény az angol? Mivel te abban a szerencsés helyzetben vagy, hogy a Kónya könyved is megvan, nem kell mást tenned, mint összevetni az abban tárgyalt feladatokat az angol dokumentációval. Meg fogsz lepődni: a kettő ugyanazokat a feladatokat tárgyalja, ugyanabban a sorrendben. Az angol doksiban még az aktuális regiszterekhez tartozó adatlap részek is a feladathoz vannak téve.
(#) AZA válasza svandras0404 hozzászólására (») Nov 16, 2011 /
 
Hogy kiméld a billentyűzetet ime a kész program,igaz szerb kommentekkel.
(#) potyo válasza AZA hozzászólására (») Nov 16, 2011 /
 
Kár, ha már ilyen szépen felkommentezte, hogy elcseszi azzal, hogy a megszakítási rutinban állítja a GIE bitet...
(#) Poostmaster válasza potyo hozzászólására (») Nov 16, 2011 /
 
Az miért baj?
(#) potyo válasza Poostmaster hozzászólására (») Nov 16, 2011 /
 
A RETFIE utasítás eleve beállítja a GIE bitet, így egyrészt felesleges. Másrészt, amint beállítottad a GIE bitet, ismét jöhet egy megszakítás, még mielőtt a program visszatért volna az eredeti helyére, így elvileg olyan eset is előállhat, hogy a stack túlcsordul.
(#) Szpidi válasza icserny hozzászólására (») Nov 16, 2011 /
 
Kedves Icserny!

Köszönöm a javasolt cikket. Próbáltam felfogni a kapcsolást, de egy kicsit megzavarodtam. Találtam benne majd 10db 0 Ohm értékű ellenállást, akár sorba kötve is őket. Viccből megnéztem a HEstore-t, és találtam több fajta 0 Ohmos ellenállást. Valaki megmondná, hogy ezek mire valók? Az AGND és DGND között még bele tudok magyarázni értelmet, de a többi helyen mi a szerepe?
(#) potyo válasza Szpidi hozzászólására (») Nov 16, 2011 /
 
Pl. SMD paneleken használják egyik vezeték átvezetésére másik felett.
(#) kissi válasza Szpidi hozzászólására (») Nov 16, 2011 /
 
Bonyolultabb paneleknél átkötésként... Az a jó benne, hogy a beültetőképek is tudják kezelni, automatizálható!

Steve
(#) Szpidi válasza kissi hozzászólására (») Nov 16, 2011 /
 
Köszönöm mindkettőtöknek a gyors választ!
Én órákat ültem a kapcsolási rajz felett és próbáltam kitalálni az értelmét
Persze gondoltam az átkötésre, de mivel van két testpont ami között számomra is van létjogosultsága (zavarjelek szétválasztása miatt) a többinek is értelmet akartam keresni.
(#) AZoli hozzászólása Nov 16, 2011 /
 
Sziasztok!

PIC 30F6012A esetén hogyan tudom megmondani a fordítónak (C30) hogy az EEPROM-ban honnan kezdve pakolja a változókat?

  1. unsigned int _EEDATA(2) Digit_illum_eeprom1 [8] = {0x0C, 0x30, 0x30, 0x0C, 0x0C, 0x0C, 0x8C, 0x16};


És az EEDATA utáni szám a zárójelben mire vonatkozik?
(#) icserny válasza AZoli hozzászólására (») Nov 16, 2011 /
 
Csak a C30 Felhasználói Kézikönyvet kell fellapozni:
_EEDATA(N) egy helyfoglalásra használható (allokációs) makró az EEPROM adatmemóriához
  1. #define _EEDATA(N) __attribute__((space(eedata), aligned(N)))


N értéke kettő hatványai szerinti szám lehet, de legalább 2 legyen. Azt mondja meg, hogy a változó kezdőcíme hogyan legyen igazítva.

A konkrét címet (hogy hová kerüljön) a linker dönti el.
(#) icserny válasza icserny hozzászólására (») Nov 16, 2011 /
 
Kimaradt: ha mindenáron meg akarod mondani a kezdőcímet, akkor - gondolom - az address(cím) attribútumot kell használni. Lásd: Felh. Kézikönyv, __attribute__ lehetőségek.
Következő: »»   176 / 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